У меня есть папка: /home/myuser/folderA
Я хочу предоставить пользователю www-data доступ на запись к описанному выше, в то время как «myuser» продолжает иметь обычный доступ (поскольку в любом случае это домашняя папка myuser) .
Какие команды мне нужно использовать?
Примечание. Я не хочу, чтобы www-data
имел доступ к любым другим папкам в /home/myuser/
.
Спасибо заранее.
Во-первых, добавьте себя в группу www-data
usermod -a -G www-data (your username)
Затем:
chgrp www-data /home/myuser/folderA
chmod g+rwxs /home/myuser/folderA
Должен добиться цели если полномочия на Вашем /home/myuser
не разрешайте другой пользовательский доступ.
Первая команда изменяет владение группы папки к тому из веб-сервера. Вторая команда дает членам www-data
чтение группы, запись, права вводить-каталога и группа s
флаг гарантирует, чтобы любые файлы, которые создаются в том каталоге, взяли www-data
как группа - поэтому, если Вы создаете файл как myuser
www-data
у пользователя будет доступ.
Nb. это также зависит от umask
настройки и Вашей учетной записи пользователя и веб-сервера: необходимо удостовериться, что файлы, созданные в folderA, имеют группу rw
доступ (и каталоги создается в группе потребности rwx
)
Если Ваш веб-сервер не имеет, вводят права в Ваш /home/myuser
dir (довольно разумный) затем, это не собирается добираться там, если Вы не делаете что-то еще. Два solns:
sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA
(это - ужасный взлом и должно было бы быть повторено после перезагрузки. Но мощный прием, также может использоваться для создания папок доступными в тюрьмах SSH.)
Просто переместите совместно используемую папку где-то в другом месте, например. /home/shared-stuff/folderA
.
2-я опция является самой хорошей. Скажем, материал в folderA действительно общедоступен, и Вы не заботитесь, кто видит его, можно настроить его как
sudo mkdir -m777 /home/shared-stuff
Затем можно вставить это, скажем, folderA с полномочиями как выше, и folderB, к которому www-данные не должны иметь доступа с различными полномочиями, например.
$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data 4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser 4096 Jan 17 21:46 folderB
Другой способ - изменить имя пользователя непосредственно в конфигурации Apache, если это ваш локальный компьютер, и вы сохраняете изображения откуда-то еще, что нарушает любые разрешения, сделанные для этой папки. Это также нужно сделать, если у вас есть только 1 пользователь и вам нет дела до www-данных!
$ sudo vi /etc/apache2/apache2.conf
Найдите пользователя и группу и укажите свои
User <Your User>
Group <Your Group>
$ sudo service apache2 restart