Назад | Перейти на главную страницу

предоставить разрешения apache ID для списков и файлов CRUD в качестве пользователей ОС

Я не был уверен, относится ли этот вопрос к этому или к ТАК. При необходимости могу переместить его туда.

В любой достойной конфигурации 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, которые предоставят вашему веб-серверу требуемый доступ.

https://en.wikipedia.org/wiki/Access_control_list

https://www.systutorials.com/docs/linux/man/7-richacl/