Установка прав доступа к файлам по умолчанию с помощью setfacl

631
Justin

Мне нужно установить списки 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 / devs ), но оно не было создано с правами на выполнение для пользователя или группы.

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

Есть идеи?

Спасибо!

1

1 ответ на вопрос

1
RobertL

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

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

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

chmod g+s . chgrp devs . 

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

Да, я понимаю, что ты имеешь в виду. В основном это файлы журналов или отладочная информация, которые должны быть созданы apache и доступны для разработчиков. Таким образом, нет никаких причин для исполняемых разрешений. Я полагаю, что я больше пытался выяснить, * почему * execute не было добавлено, когда я смог получить файлы, которые будут созданы нормально, с помощью `rw-rw ----` или `r - r -----` , но никогда `rwxrwx ---`. На самом деле не планировал оставлять его там, особенно на производстве. Спасибо! Justin 6 лет назад 0

Похожие вопросы