Я уверен, что об этом уже неоднократно спрашивали, но я не смог получить достойного руководства по разрешениям файлов / папок для Linux.
Я хочу настроить сервер nginx / apache с PHP и FTP-сервер, например vsftpd. Обычно у меня возникают проблемы: веб-сервер не может прочитать файл, загруженный через учетную запись FTP, или я вообще не могу загружать файлы на сервер. Мой скрипт PHP также должен запускать инструмент командной строки и, следовательно, потребует надлежащих разрешений для запуска через сервер. Я обошел все это, попробовав chmodding или chowning, но я все еще не уверен в безопасной настройке.
Есть ли какие-нибудь учебники / книги, которые могут помочь мне правильно изучить концепции на практике?
Я обнаружил, что лучший способ решить эту проблему - использовать списки управления доступом POSIX. Обычно эти четыре команды дают вам то, что вы хотите.
setfacl -Rdm apache:rwx my/dir
setfacl -Rm apache:rwx my/dir
setfacl -Rdm user:rwx my/dir
setfacl -Rm user:rwx my/dir
Это устанавливает ACL, который разрешает как пользователю «пользователь», так и пользователю «apache» одинаковый уровень доступа, независимо от того, что указано в стандартных разрешениях для файлов. Кроме того, новые файлы и каталоги, созданные в этом каталоге, унаследуют те же права.
В ближайшей поисковой системе доступно огромное количество информации. В Разрешения файловой системы статья неплохая.
Вы также найдете полезную информацию в этом вопросе: Под каким пользователем должны работать NGinx и PHP?.
Две интересные статьи:
http://www.comptechdoc.org/os/linux/usersguide/linux_ugfilesp.html
http://crunchtools.com/unixlinux-filesystem-permissions-101/
Если вас не волнует доступ с одного PHP к файлам PHP другого сайта - вы можете использовать реальных пользователей FTP, которые все сопоставлены с пользователем apache, и все documet_root также принадлежат пользователю apache.