Я не был уверен, относится ли этот вопрос к этому или к ТАК. При необходимости могу переместить его туда.
В любой достойной конфигурации Apache Apache будет работать под собственным идентификатором; www-data
например. И этот идентификатор будет не иметь права на список и CRUD файлы как другие учетные записи ОС. Это сделано в целях безопасности.
Я хочу каким-то образом иметь возможность иметь список Apache или файлы CRUD в качестве другой учетной записи ОС. Например, перечисление файлов в домашнем каталоге учетной записи или создание нового текстового файла в домашнем каталоге учетной записи.
Я знаю, что одним из решений является использование разрешений для группы файлов / папок, но я не могу этого сделать, потому что я не могу изменить права собственности на файл / папку или разрешения.
Я заглянул в suEXEC, suPHP, и php-fpm но ни один из них не будет работать, потому что они будут запускать сценарии как владелец сценария. В моем случае я запускаю такие команды, как cp
или mv
как произвольное количество учетных записей ОС. Единственный способ использовать эти инструменты - создать сценарий для каждой учетной записи ОС. Или иметь сценарий, принадлежащий root
но это звучит небезопасно.
Итак, я подумал о sudo
. Я мог бы дать www-data
sudo
привилегии в качестве учетных записей ОС.
Пример записи в sudoers
файл:
www-data ALL = (osAccount1) NOPASSWD: /bin/ls, /bin/mv
www-data ALL = (osAccount2) NOPASSWD: /bin/ls, /bin/mv
Но это просто воняет риском. Я не могу точно сказать, как и почему - это просто ужасно.
Есть ли способ делать то, что я хочу?
Я знаю, что одним из решений является использование разрешений для группы файлов / папок, но я не могу этого сделать, потому что я не могу изменить права собственности на файл / папку или разрешения.
Традиционные права доступа к файлам User-Group-Other (chmod
chown
chgrp
) сделать это сложно, но вы можете использовать списки контроля доступа, чтобы установить гораздо более детальные разрешения в дополнение к этим. Метод немного различается в зависимости от файловой системы и версии, но подумайте (пере) смонтируйте файловую систему с поддержкой acl и используйте setfacl
или setrichacl
чтобы установить дополнительные ACL для существующих разрешений UGO, которые предоставят вашему веб-серверу требуемый доступ.