Полномочия пользователя и для апачского и для локального пользователя

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

Если Вы делаете, несколько rsync по той же части Вашей файловой системы (скажите, та же папка), они могут вмешаться друг в друга.

2
задан 11 December 2011 в 22:33
5 ответов

Apache не нужно писать везде, для этого вы можете указать tmp, upload и т. Д. папки. Таким образом, вы можете установить разрешения для public_dir, чтобы он был доступен для чтения и выполнения пользователем apache:

sudo chown user1:www-data /home/user1/public_html
sudo chmod 0750 /home/user1/public_html

Все остальные файлы в каталоге public_html dir могут находиться с разрешениями user1 и доступны для чтения только «другим» (здесь apache). Это также лучше с точки зрения безопасности. Как я уже писал, пользователь apache может записывать только необходимые файлы / папки.

4
ответ дан 3 December 2019 в 08:37

Простейшее решение - гарантировать, что www-data может перемещаться по всем каталогам в каталог / home / user1 / public_html и использовать разрешения 755 для каталога от public_html и ниже. Файлы в каталоге public_html должны быть доступны для чтения всем. Эти команды должны разрешить доступ:

sudo chmod o+x /home
sudo chmod 0+x /home/user1
find /home/user1/public_html -type d ! -perm -005 -print0 | xargs -0 sudo chmod o+rx
find /home/user1/public_html -type f ! -perm -004 -print0 | xargs -0 sudo chmod o+r

Первая команда, скорее всего, не требуется. Некоторые системы довольно сильно ограничивают доступ к домашним каталогам, и это исправляется второй командой. Он позволяет открывать файлы в домашнем каталоге, но не дает возможность отображать каталог.

Последние три команды могут запускаться пользователем с удаленным sudo .

0
ответ дан 3 December 2019 в 08:37

Если вы это сделали:

sudo chown -R www-data:user1 /home/user1/public_html/

Вы передали право собственности пользователю www-data и группе user1.

С помощью:

sudo chmod g+s /home/user1/public_html/

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

sudo chmod g-s /home/user1/public_html/

И установите разрешения на чтение / запись как для пользователя user1 (который принадлежит группе user1), так и для www-data.

sudo chmod -R 770 /home/user1/public_html

И теперь все файлы доступны для записи и чтения. by www-data и всех пользователей в группе user1 (я предполагаю, что только user1 является частью, дважды проверьте это).

Это грязно, так как вы можете захотеть, чтобы некоторые файлы были доступны для записи только пользователю. Как разработчик нередко «загружает» файлы на сервер вместо того, чтобы просто редактировать их, это решает проблемы правильного управления, передавая его на аутсорсинг безопасной программе как sftp / scp. Вы даже можете попробовать использовать SCM.

sudo chmod -R 770 /home/user1/public_html

И теперь у вас есть все файлы, доступные для записи и чтения для www-data и всех пользователей в группе user1 (я предполагаю, что только user1 является частью, дважды проверьте это).

Это грязно, так как вы можете захотеть, чтобы некоторые файлы были быть доступным для записи только пользователю. Как разработчик нередко «загружает» файлы на сервер вместо того, чтобы просто редактировать их, это решает проблемы правильного управления, передавая его на аутсорсинг безопасной программе как sftp / scp. Вы даже можете попробовать использовать SCM.

sudo chmod -R 770 /home/user1/public_html

И теперь у вас есть все файлы, доступные для записи и чтения для www-data и всех пользователей в группе user1 (я предполагаю, что только user1 является частью, дважды проверьте это).

Это грязно, так как вы можете захотеть, чтобы некоторые файлы были быть доступным для записи только пользователю. Как разработчик нередко «загружает» файлы на сервер вместо того, чтобы просто редактировать их, это решает проблемы правильного управления, передавая его на аутсорсинг безопасной программе как sftp / scp. Вы даже можете попробовать использовать SCM.

0
ответ дан 3 December 2019 в 08:37

The best way to achieve this is with posix ACLs. Standard unix file permissions dont really cut it. You can do it with some kludging but its not really more than a kludge, basically its not a straight-forward solution.

Using a ACL will resolve this issue succintly. To do this you can use the following commands:

setfacl -R -m www-user:rwx /home/user1/public_html
setfacl -R -d -m www-user:rwx /home/user1/public_html
setfacl -R -m user1:rwx /home/user1/public_html
setfacl -R -d -m user1:rwx /home/user1/public_html

The -d flag causes new files to inherit the ACLs you set in the directory.

There are some caveats to bear in mind.

  1. Your filesystem must support it (most do these days, they can be enabled by remounting the filesystem with ACL support on most filesystems). Stuff like NFS wont work.
  2. The standard Unix group ACL becomes a mask. I.E if a file says g+x the file is executable with the command above. if its g-x the file is not executable, regardless of whether or not permissions set are rwx in the ACL. This ensures you avoid a situation where you would have to mark all directories rwx in the acl and all files rw-.

This fixes a problem sensibly and permits various combinations of scenarios:

  • It enforces least privilege as you are not required to start modifying group memberships of users.
  • user1 can create a file which can be modified later by www1-user (so user1 can SFTP upload content which could be deleted and/or modified by a CMS in apache later) and visa versa.
  • Apache remains in a system account which avoids having to use SetUID workarounds to change the apache subject (user).
  • The modification applies within a specific directory structure only and wont inadvertently permit www-user or user1 access to other portions of the file system tree you would not wish them to access.
  • Altering or revoking permissions is a trivial change.

This is my preferred way to resolve these kind of issues. It is a simple, non-disruptive and trivial change.

8
ответ дан 3 December 2019 в 08:37

Скорее всего, у вас неверно указаны user1 и www-data в командах в вопросе.

Вы не хотите давать разрешения на запись apache с помощью по умолчанию - и сделав пользователя apache владельцем, и будет делать именно это.

Попробуйте следующее:

sudo chown -R user1:www-data /home/user1/public_html/
sudo find /home/user1/public_html/ -type d -exec chmod 0755 {} \; -or -type f -exec chmod 0644 {} \;

Это сделает вас владельцем и будет использовать ту же группу, что и apache, а затем сбросить права доступа на 755 для папок и 644 для файлы. разрешения 7 5 5 и 6 4 4 - это те, которые будут применяться к apache - дать apache права на запись только в папки, в которые он абсолютно необходим для записи.

0
ответ дан 3 December 2019 в 08:37

Теги

Похожие вопросы