1

У меня есть (я полагаю, основные) проблемы с разрешениями / владением Linux.

У меня есть пользователь FTP "ftp". Тогда у меня есть все файлы на моем сервере под другим пользователем "nginx".

Чтобы веб-сайты работали, мне нужно, чтобы все файлы были настроены на пользователя nginx, в противном случае они возвращают различные ошибки.

Чтобы изменить файлы на сервере по FTP, мне нужно установить права доступа для пользователя "ftp", в противном случае я получаю отказ в разрешении при попытке редактировать файлы.

Как решить это с?

Прямо сейчас я должен всегда делать chown -R ftp:ftp когда я хочу редактировать некоторые файлы через FTP.

1 ответ1

4

Похоже, вам нужна общая группа для ftp и nginx. В вашем случае вы можете использовать группу ftp для этого. Я не знаю, нужен ли вашему веб-серверу доступ на запись к файлам, но если нет, перейдите в каталог содержимого и выполните следующие команды:

chown -Rh ftp:ftp .
find . -type d -exec chmod g+rxs {} \;
find . -type f -exec chmod g+r {} \;

Если вам нужен доступ для записи с веб-сервера, сделайте это:

chown -Rh ftp:ftp .
find . -type d -exec chmod g+rwxs {} \;
find . -type f -exec chmod g+rw {} \;

Эти команды сделают все, что принадлежит ftp:ftp, и сделают эти файлы читаемыми и (во втором случае) доступными для записи любому, кто находится в группе ftp. Он также устанавливает бит setgid для всех каталогов, которые будут создавать все новые файлы, принадлежащие группе ftp. Как только это будет сделано, добавьте пользователя nginx в группу ftp:

usermod -a -G ftp nginx

и перезапустите ваш веб-сервер, чтобы он вступил в силу.

Вам также может потребоваться принудительно сделать все файлы, записанные в эти каталоги, доступными для записи группой. Вы можете сделать это, установив umask для ваших ftp и веб-серверов на 002, или с помощью acl:

setfacl -Rdm g::rwx .

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