До сих пор я боролся с разрешениями и опубликовал еще один вопрос, но определил, в чем проблема, но никак не мог ее исправить.
Моя настройка:
- Ubuntu Desktop со стеком LAMP
- 5 «пользователи» Я создал пользователей, которых я создал на сервере ubuntu
sudo useradd -r -s /bin/false USERNAME
и которые используются для доступа к общим папкам локальной сети, т. Е. Для компьютеров в моей сети, чтобы подключиться к папке / var / www, которая используется совместно с помощью Samba. - РЕДАКТИРОВАТЬ: Цель состоит в том, чтобы создать своего рода «главный локальный хост», где все компьютеры в моей локальной сети могут работать на одном и том же веб-сайте локально (у меня нет статического IP-адреса, поэтому к серверу нельзя получить доступ откуда-либо еще) ,
Моя проблема:
В настоящее время, когда я создаю новую папку /var/www/html
(например: Создание папки / var / www / html / testsite1), используя любой компьютер в сети, эта папка автоматически принадлежит boris:www-data
("boris", являющийся основным пользователем-администратором в моей настольной установке Ubuntu , и он показывает действительно boris: www-data при запуске ls -l
во вновь созданной папке), что вызывает проблемы с моей текущей настройкой (с использованием плагина Duplicator для Wordpress в основном LifeInTheGrid). Тем не менее, и мой /var/www
и мой /var/www/html
принадлежатwww-data:www-data
Следовательно, я хотел бы знать, как я могу:
Смените владельца на www-data: www-data всех файлов И каталогов ниже / var / www и / var / www / html
Убедитесь, что любой файл или папка, которую я создам с любым из пользователей моей сети, будет автоматически принадлежать www-data: www-data (Это включает в себя файлы, автоматически создаваемые скриптами php, поскольку это то, что делает плагин Duplicator, если я не неправильно).
Есть способ сделать это?
Примечание: я супер новичок в вещах, связанных с Linux и командными строками, но я быстро догоняю.
Примечание 2: umask уже установлен как 0002
РЕДАКТИРОВАТЬ:
Пробовал это:
sudo chown -R www-data:www-data /var/www/
А затем установите биты setuid и setgid, выполнив это:
sudo chmod u+s /var/www/html
sudo chmod g+s /var/www/html
Затем вышел из системы, перезапустил apache и попытался создать новую папку, используя Mac, подключенный к моему серверу через сетевой IP (локальный IP, а не статический).
Я побежал
ls -l on /var/www/html
Выход по-прежнему:
drwxr-sr-x 2 boris www-data testsite1
Замечания:
Я уже проверил мой конфиг apache и envvars, он уже установлен в:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
РЕДАКТИРОВАТЬ: я попытался сделать это задом наперед, например, настроить все, что будет принадлежать boris: www-data и установить конфигурацию apache envvars на boris: www-data. ЭТО СРАБОТАЛО!
Вот что я сделал:
Изменены envvars на
export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data
Ран
sudo chown -R boris:www-data /var/www/
Перезапустил Apachem, создал новую папку, добавил мои файлы, запустил плагин, теперь говорит, что это хорошо !!!
источник
Ответы:
Ответ на вопрос № 1: рекурсивный
chown
Рекурсив
chown
позволит вам установить владельца и сгруппировать то, что вы хотите/var/www/...
. Это команда, которую вы должны использовать:При этом каждый файл и папка будут установлены как таковые внутри с этими правами доступа.
Полуответ на вопрос № 2:
setgid
битЕсли вы хотите владеть группой по умолчанию для файлов, установите
setgid
бит в/var/www/html
папке. Новые файлы должны быть созданы с этой группой, как указано в папке.Вам нужно будет установить права на запись, однако, если какой-либо пользователь ДРУГОЕ, чем
www-data
пишет в каталогах, и это может открыть вам одну или две дыры в безопасности, если вы не будете осторожны.Вы в конечном итоге с разрешениями быть
$USER:www-data
; чтобы сменить владельца, вы затем используете,chown
как указано в методе № 1 (при этом при правильной настройке для доступа к веб-файлам вы должны полагаться на разрешения группы, а не разрешения владельца пользователя).Проблема с PHP Wordpress Duplicator
Проблема с разрешениями заключается в том, что пользователь / группа PHP запускается по мере необходимости записи и чтения и, скорее всего,
+x
в каталоге для редактирования структуры dir и тому подобного.PHP работает
www-data
по умолчанию в установках Ubuntu, которые используют конфигурации по умолчанию. В идеале, ваши шаги выше позволят решить проблему, поскольку вы застряли с плагином Duplicator, который является плагином PHP.В идеале вы также должны проверить документацию для плагина Duplicator, чтобы проверить, какие разрешения ему нужны для запуска и работы.
источник
Чтобы убедиться, что любой файл или папка, в которой вы создаете,
/var/www/html
автоматически принадлежит www-данным, которые вы можете использоватьinotify
, это как cron, но отслеживает папки / файлы на предмет изменений в атрибутах, создании файлов, модификациях и многом другом.Сначала установите его с помощью:
Разрешите использовать root
incron
, открыв/etc/incron.allow
:и добавьте
root
в файл, затем сохраните и выйдите.Отредактируйте свой incrontab с помощью:
и добавьте к нему следующую строку:
Сохранить и выйти.
Теперь, как только файл будет создан в
/var/www/html
директории, он автоматически установит для него значениеwww-data:www-data
.Объяснение строки в incrontab:
/var/www/html
каталог, который будет отслеживаться.IN_CREATE
будет следить за созданными файлами. Это маска изменения файла ./bin/chown -R www-data:www-data /var/www/html/
команда / действие для выполнения.источник
./html
здесь подразумевается (как часть / var / www /)-R
делает его рекурсивным (поэтому он будет проходить через все каталоги/var/www/
).Установите конфигурацию apache для www-data. Видеть
/etc/apache2/envvars
Вам нужно перезапустить apache после редактирования этого (
sudo service apache restart
).Проблема здесь, вероятно, не в плагине, а в php. Пользователь должен быть тем же процессом, что и PHP. Поэтому вам, вероятно, нужно установить это также на www-data, если это ваш пользователь и группа (
/etc/php5/apache2/php.ini
).источник
www-data
, как, впрочем, и в Debian./var/www/html
также связана с групповым владением и привилегиями чтения / записи. Другая проблема заключается в том, что они хотят, чтобы любой файл, созданный пользователем, имелсяwww-data:www-data
, и я предполагаю, что это пользователи сети , а не пользователи Wordpress, поэтому вам нужно использовать разрешения для файлов Linux.Я решил это! Я все еще думаю, что это была проблема с Apache envvars, но я не уверен, что именно это решило проблему ... В любом случае, вот что я сделал:
Изменены envvars на
Ран
Сейчас это работает. Будем дальше тестировать ...
источник