1

Мне нужно установить списки ACL по умолчанию для новых файлов, созданных httpd через пользователя службы apache, таким образом, чтобы файл создавался с GUID, установленным для учетной записи пользователя dev (которая также называется devs), и с определенными разрешениями.

Похоже, у меня SGID работает нормально, так как любые файлы, созданные на веб-страницах PHP, имеют владельца apache и группу разработчиков . Но вместо того, чтобы иметь ACL от rwxrwx--- них есть rw-rw---- .

[root@webserver ~]# cd /var/www/html
[root@webserver html]# setfacl -Rb .                  
[root@webserver html]# chmod -R g+s .                
[root@webserver html]# setfacl -Rdnm u:apache:rwx,g:devs:rwx .
[root@webserver html]# getfacl .
# file: .
# owner: apache
# group: devs
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:user:apache:rwx
default:group::rwx
default:group:devs:rwx
default:mask::rwx
default:other::---

[root@webserver html]# getfacl data.txt
# file: data.txt
# owner: apache
# group: devs
user::rw-
user:apache:rwx     #effective:rw-
group::rwx      #effective:rw-
group:devs:rwx    #effective:rw-
mask::rw-
other::---

Файл data.txt был создан с помощью сценария PHP, выполняемого httpd/apache. Владение настроено правильно (apache/devs), но оно не было создано с правами на выполнение для пользователя или группы.

На сервере запущена CentOS-версия 6.9 (финальная версия)

Есть идеи?

Спасибо!

1 ответ1

1

Права доступа к файлам Linux не зависят от setgid бита в каталоге. Задание идентификатора группы приводит к созданию файла с идентификатором группы каталога, а не идентификатором группы создателя.

Права доступа к вновь создаваемым файлам определяются создателем файла и зависят от маски создания файла (umask) в open или других системных вызовах. Чтобы повлиять на разрешение файла в PHP, вы должны использовать fopen или chmod и т.д.

Это может быть сделано без использования ACL. Эти команды выполняют одно и то же:

chmod g+s .
chgrp devs .

Кажется необычным и небезопасным для PHP создавать исполняемые файлы из httpd. Я надеюсь, вы знаете, что делаете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .