Я хочу иметь возможность разрешать пользователю только разрешения на чтение / запись для определенной папки, но не для каких-либо родительских папок
, например,
mywebsite
Могу получить доступ только к /var/www/html/mywebsite
И не /var/www/html/otherwebsite
Я пытался:
chown -R www-data /var/www/html
chown -R mywebsite:www-data /var/www/html/mywebsite
chmod -R 770 /var/www/html
Проблема, с которой я сталкиваюсь, заключается в том, что при входе в mywesbite
У меня нет разрешения на запись в папку mywebsite или в любую другую папку по этому вопросу
Что я делаю не так?
Дать пользователю mywebsite
разрешение чтения-записи в /var/www/html/mywebsite
:
chown -R mywebsite /var/www/html/mywebsite
, Который должен быть достаточным. Вам не придется изменить владельца группы или полномочия, потому что пользовательскому владельцу уже нужно дать полномочия чтения-записи.
, Если бы Вы хотели предоставить разрешение чтения-записи группы в той папке, скажем, группа my-group
, Вам было бы нужно:
chgrp -R my-group /var/www/html/mywebsite
chmod -R g+w /var/www/html/mywebsite
Важные примечания
не Делают , устанавливает владение (или пользователь или группа) файлов в /var/www
к www-data
пользователь. Точка выполнения веб-сервера как www-data
пользователь - то, что это непривилегированно учетная запись, не могущая изменить любые файлы. При установке некоторых файлов, которые будут принадлежать этому пользователю, Вы инвертируете те меры безопасности. Если Вы потребность Ваш веб-сервер, чтобы смочь изменить определенные файлы, только установите владение для тех конкретных файлов и бойтесь очень позволять прямое выполнение (например, через PHP) их. В целом никогда не устанавливайте его так, чтобы www-data
мог изменить файлы.
При выполнении рекурсивного chmod
, часто лучше использовать буквы, чем числа, например, chmod -R g+w something
, а не chmod -R 770 something
. Это вызвано тем, что первый может изменить только разрешение, которое Вы хотите и оставляете другие. По умолчанию каталоги и файлы будут иметь отличающимся, "выполняют" полномочия - файлы будут иметь его прочь (например, 644) и каталоги на (например, 755), потому что это полномочия имеет другое значение для каталогов. Если Вы сделаете chmod -R 770 something
затем, то регулярные файлы будут иметь, выполняют включенные полномочия. В целом это - хорошая идея только изменить то, в чем Вы нуждаетесь.
Другая вещь отметить состоит в том, что 770
удалил бы читаемое миром разрешение, которое предотвратит веб-сервер (который работает как непривилегированный пользователь), способность считать его. В этом случае это также предотвращает пользователя mywebsite
способность видеть /var/www/html/mywebsite
каталог вообще, потому что Вы установили родительский каталог /var/www/html
на 770.
Что я сделал на Ubuntu 16.04 (для моей будущей ссылки также):
sudo groupadd web-content # creates a new group 'web-content'
sudo usermod -a -G web-content myuser # adds 'myuser' to the group
sudo usermod -a -G web-content www-data # adds 'www-data' to the group
sudo chown -R myuser:web-content /var/www/html # changes owner to 'myuser' and 'web-content' group
sudo find /var/www/html -type f -exec chmod 640 {} \; # applies rw for myuser and r permissions to all files
sudo find /var/www/html -type d -exec chmod 750 {} \; # applies rwx for myuser and rx permissions to all directories
sudo systemctl restart apache2.service # restarts the apache web service
сообщите мне, не ли это безопасно или разумно.
(Примечание. Я просто хотел добавить это как дополнительный комментарий к моему предыдущему комментарию, но он потерял форматирование строк кода, когда я сделал это)