Разрешение пользователю редактировать файл, не владея им в Linux - PullRequest
0 голосов
/ 14 июля 2020

Я понимаю, что на этот вопрос, скорее всего, был дан ответ, но хоть убей, не могу понять.

В чем проблема? Я использую сервер nginx и имею пользователь «www-data» владеет каталогом веб-сервера и всем его содержимым. Я использую wordpress, поэтому важно, чтобы www-data оставался владельцем, как будто это не так, пользовательский интерфейс WordPress не сможет редактировать файлы. Мне также нравится использовать SFTP, но я отключил вход для других пользователей, кроме моего собственного. В настоящее время, когда я хочу использовать FTP для редактирования файлов, я должен временно переключить каталог wp-content для моего личного пользователя, а затем повторно переключить каталог обратно на пользователя www-data по завершении.

Каков ожидаемый результат? В идеале я хотел бы настроить права доступа к файлам, чтобы я мог редактировать файлы в этом каталоге без необходимости каждый раз переключаться между пользователями. Возможно ли это, или мне лучше установить моего личного пользователя как пользователя root?

Что вы пробовали? Я попытался выбрать каталог для группы, которая и www-data, и мой пользователь находятся внутри. Пример:

chown -R :www-data /path/to/dir/wp-content/*

Где «www-data» - это имя веб-пользователя И имя группы, в которую входят оба пользователя: myuser & www-data. Даже после этого myuser не может редактировать файлы в этом каталоге.

Если кто-нибудь будет достаточно любезен, чтобы просветить дурака (меня) или сослаться на себя как на подходящий ресурс, я бы буду очень признателен! Спасибо за уделенное время :)

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Уже есть ответ, но я полагаю, что все равно дам подробный, для всеобщего блага :)

Я запускаю сервер nginx и имею пользователя «www-data "владеет каталогом веб-сервера и всем его содержимым

Вы видите, где он не работает с самого начала, это то, что NGINX может обслуживать любые конфиденциальные файлы, если это не запрещено специально в конфигурации, просто потому, что он им владеет. Это нехорошо, потому что он не будет использовать модель разрешений chmod как способ контролировать, что NGINX может обслуживать, а что нет.

Есть только одна безопасная и правильная настройка , и я подробно описываю его здесь .

В частности, каждый веб-сайт должен иметь собственный пул PHP -FPM, который запускается пользователем c, указанным на веб-сайте.

Пользователь веб-сервера (например, www-data или nginx) является членом всех групп пользователей веб-сайта, например, nginx является членом wordpress группы пользователей.

Это позволяет просто иметь 0750 (dirs) и 0640 (files), и никаких проблем не возникает.

1 голос
/ 14 июля 2020

У вас должен быть пользователь, у которого есть связанная группа, названная в честь этого пользователя. Таким образом, вы можете сделать следующее:

sudo chgrp -R YOUR_USER_NAME YOUR_FOLDER

это должно изменить группу должников для данных в вашей папке, и эта группа владельцев будет вашей группой пользователя

Затем измените привилегия для группы, использующей:

chmod -R g+w YOUR_FOLDER

...