Вы приближаетесь к достижению ваших целей с заданной иерархией файлов и достаточно надежны.
Если безопасность является вашей основной задачей, вероятно, рекомендуется поддерживать сайты в /home/$USER/public_html. Это хорошо известное соглашение (вспомогательная поддержка), позволяет избежать разбиения пользовательских данных на несколько несвязанных друг с другом иерархии (вспомогательная поддержка и помогает автоматизировать процедуры резервного копирования) и требует меньше ручного вмешательства (т. Е. Меньше ошибок - скажем, вы вводите «o» вместо из 'g' в вашей команде chmod и не замечайте).
Если вы изменили структуру файла как часть перехода от однопользовательских сайтов, вам может понадобиться исследовать vhosts. [ ! d2]
Здесь я предполагаю, что вы успешно ssh / sftp в домашний каталог пользователя и хотите редактировать (со своим пользователем) файлы и папки в разделе /var/www, которые принадлежат user и :group - www-data:www-data (без изменения их прав собственности).
Здесь я также предполагаю тему «Как избежать использования sudo при работе в / var / www? не покрывает ваши потребности. Например, вы не хотите изменять разрешения в /var/www.
Я думаю, что самый простой и понятный способ решить эту задачу - установить /var/www (или определенный каталог внутри) в домашний каталог вашего пользователя и сменить владельца на пользователя и: группу. Это может быть достигнуто с помощью инструмента bindfs:
sudo apt update && sudo apt install bindfs
Здесь мы установим весь каталог /var/www в каталог, также называемый также www/ и расположенный в вашем домашний каталог пользователя.
mkdir $HOME/www
sudo bindfs -u $(id -u) -g $(id -g) --create-for-user=www-data --create-for-group=www-data /var/www /home/<user>/www
Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего <user>. Где <user> является фактическим именем пользователя. Если вы хотите выполнить указанную выше команду для другого пользователя, используйте $(id -u <user>) и $(id -g <user>). Подробнее о аргументах, используемых с bindfs радом на странице руководства - man bindfs. Если вы хотите отключить ~/www ($HOME/www), используйте команду: sudo fusermount -u ~/www
Чтобы автоматически установить /var/www в ~/www во время запуска системы добавьте следующую строку внизу /etc/fstab:
bindfs#/var/www /home/<user>/www fuse force-user=<uid>,force-group=<gid>,create-for-user=www-data,create-for-group=www-data 0 0
Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего <user>. Где <user> является фактическим именем пользователя. Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего <user>. Если <user> является фактическим именем пользователя.
sudo mount -a # maybe you should execute `sudo fusermount -u ~/www` first
Чтобы увидеть результат, перезагрузите систему или выполните:
Вот анимированный demo как это работает:
Как избежать использования sudo при работе в / var / www?
Обновление: 29]
chown -R $(id -u):$(id -g) $HOME/www
Единственное ограничение этого подхода, которое я нашел, это когда вы меняете право собственности на каталог привязки, это изменит право собственности на исходный каталог. Например, следующая команда не очень хорошая идея:
Здесь я предполагаю, что вы успешно ssh / sftp в домашний каталог пользователя и хотите редактировать (со своим пользователем) файлы и папки в разделе /var/www, которые принадлежат user и :group - www-data:www-data (без изменения их прав собственности).
Здесь я также предполагаю тему «Как избежать использования sudo при работе в / var / www? не покрывает ваши потребности. Например, вы не хотите изменять разрешения в /var/www.
Я думаю, что самый простой и понятный способ решить эту задачу - установить /var/www (или определенный каталог внутри) в домашний каталог вашего пользователя и сменить владельца на пользователя и: группу. Это может быть достигнуто с помощью инструмента bindfs:
sudo apt update && sudo apt install bindfs
Здесь мы установим весь каталог /var/www в каталог, также называемый также www/ и расположенный в вашем домашний каталог пользователя.
mkdir $HOME/www
sudo bindfs -u $(id -u) -g $(id -g) --create-for-user=www-data --create-for-group=www-data /var/www /home/<user>/www
Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего <user>. Где <user> является фактическим именем пользователя. Если вы хотите выполнить указанную выше команду для другого пользователя, используйте $(id -u <user>) и $(id -g <user>). Подробнее о аргументах, используемых с bindfs радом на странице руководства - man bindfs. Если вы хотите отключить ~/www ($HOME/www), используйте команду: sudo fusermount -u ~/www
Чтобы автоматически установить /var/www в ~/www во время запуска системы добавьте следующую строку внизу /etc/fstab:
bindfs#/var/www /home/<user>/www fuse force-user=<uid>,force-group=<gid>,create-for-user=www-data,create-for-group=www-data 0 0
Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего <user>. Где <user> является фактическим именем пользователя. Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего <user>. Если <user> является фактическим именем пользователя.
sudo mount -a # maybe you should execute `sudo fusermount -u ~/www` first
Чтобы увидеть результат, перезагрузите систему или выполните:
Вот анимированный demo как это работает:
Как избежать использования sudo при работе в / var / www?
Обновление:
chown -R $(id -u):$(id -g) $HOME/www
Единственное ограничение этого подхода, которое я нашел, это когда вы меняете право собственности на каталог привязки, это изменит право собственности на исходный каталог. Например, следующая команда не очень хорошая идея:
Здесь я предполагаю, что вы успешно ssh / sftp в домашний каталог пользователя и хотите редактировать (со своим пользователем) файлы и папки в разделе /var/www, которые принадлежат user и :group - www-data:www-data (без изменения их прав собственности).
Здесь я также предполагаю тему «Как избежать использования sudo при работе в / var / www? не покрывает ваши потребности. Например, вы не хотите изменять разрешения в /var/www.
Я думаю, что самый простой и понятный способ решить эту задачу - установить /var/www (или определенный каталог внутри) в домашний каталог вашего пользователя и сменить владельца на пользователя и: группу. Это может быть достигнуто с помощью инструмента bindfs:
sudo apt update && sudo apt install bindfs
Здесь мы установим весь каталог /var/www в каталог, также называемый также www/ и расположенный в вашем домашний каталог пользователя.
mkdir $HOME/www
sudo bindfs -u $(id -u) -g $(id -g) --create-for-user=www-data --create-for-group=www-data /var/www /home/<user>/www
Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего <user>. Где <user> является фактическим именем пользователя. Если вы хотите выполнить указанную выше команду для другого пользователя, используйте $(id -u <user>) и $(id -g <user>). Подробнее о аргументах, используемых с bindfs радом на странице руководства - man bindfs. Если вы хотите отключить ~/www ($HOME/www), используйте команду: sudo fusermount -u ~/www
Чтобы автоматически установить /var/www в ~/www во время запуска системы добавьте следующую строку внизу /etc/fstab:
bindfs#/var/www /home/<user>/www fuse force-user=<uid>,force-group=<gid>,create-for-user=www-data,create-for-group=www-data 0 0
Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего <user>. Где <user> является фактическим именем пользователя. Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего <user>. Если <user> является фактическим именем пользователя.
sudo mount -a # maybe you should execute `sudo fusermount -u ~/www` first
Чтобы увидеть результат, перезагрузите систему или выполните:
Вот анимированный demo как это работает:
Как избежать использования sudo при работе в / var / www?
Обновление:
chown -R $(id -u):$(id -g) $HOME/www
Единственное ограничение этого подхода, которое я нашел, это когда вы меняете право собственности на каталог привязки, это изменит право собственности на исходный каталог. Например, следующая команда не очень хорошая идея: