Здесь я предполагаю, что вы успешно 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//www
Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего sudo fusermount -u ~/www
Чтобы автоматически установить /var/www в ~/www во время запуска системы добавьте следующую строку внизу /etc/fstab:
bindfs#/var/www /home//www fuse force-user=,force-group=,create-for-user=www-data,create-for-group=www-data 0 0
Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего
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
Единственное ограничение этого подхода, которое я нашел, это когда вы меняете право собственности на каталог привязки, это изменит право собственности на исходный каталог. Например, следующая команда не очень хорошая идея:
Итак, нам нужна специальная подготовленная Snap с поддержкой интерфейса removable-media / plugin.
Например, VLC имеет этот плагин в своем YAML-файле.
apps:
vlc:
desktop: usr/share/applications/vlc.desktop
command: desktop-launch $SNAP/bin/vlc-snap-wrapper.sh
plugs:
...
- mount-observe
...
- removable-media
So если приложение не имеет автосоединения removable-media, нам необходимо связать его вручную с помощью:
snap install app:removable-media
Но не все приложения имеют этот plug / interface в манифесте YAML.
Итак, нам нужна специальная подготовленная Snap с поддержкой интерфейса removable-media / плагина.
Ниже приведен список Snap со съемным носителем, описанным в YAML-манифесте:
vlc - VLC firefox - Firefox gimp - GIMP mdl - Инструмент Markdown lint offlineimap - Магия-червоточина OfflineIMAP - Волшебное червячное отверстие - самый большой рабочий стол - Mattermost storjshare-gui - Storj opentoonz - OpenToonz opentoonz-morevna - OpenToonz - Morevna Edition obs-studio - OBS Studio steamforwindows - Steam для Windows под WineМожно найти другие Snaps, выпущенные SnapCrafters со следующей поисковой ссылкой GitHub.
Так что если приложение не есть автосоединение removable-media, нам нужно связать его вручную с помощью:
snap connect some-snap-name:removable-media
Но не все приложения имеют этот plug / interface в манифесте YAML.
Трудно найти пакеты с помощью поддерживаемых пробок - поэтому я создал ссылку поиска GitHub .
Ошибка в команде snap с именем «snap» должна обеспечивать функциональность найти пакет ges с необходимой штепсельной вилкой или разъемом "был отправлен на панель запуска в качестве ошибки 1776938.
Итак, нам нужна специальная подготовленная Snap с поддержкой интерфейса removable-media / плагина.
Ниже приведен список Snap со съемным носителем, описанным в YAML-манифесте:
vlc - VLC firefox - Firefox gimp - GIMP mdl - Инструмент Markdown lint offlineimap - Магия-червоточина OfflineIMAP - Волшебное червячное отверстие - самый большой рабочий стол - Mattermost storjshare-gui - Storj opentoonz - OpenToonz opentoonz-morevna - OpenToonz - Morevna Edition obs-studio - OBS Studio steamforwindows - Steam для Windows под WineМожно найти другие Snaps, выпущенные SnapCrafters со следующей поисковой ссылкой GitHub.
Так что если приложение не есть автосоединение removable-media, нам нужно связать его вручную с помощью:
snap connect some-snap-name:removable-media
Но не все приложения имеют этот plug / interface в манифесте YAML.
Трудно найти пакеты с помощью поддерживаемых пробок - поэтому я создал ссылку поиска GitHub .
Ошибка в команде snap с именем «snap» должна обеспечивать функциональность найти пакет ges с необходимой штепсельной вилкой или разъемом "был отправлен на панель запуска в качестве ошибки 1776938.
Интерфейс, который необходимо подключить, removable-media.
Доступ к файлам со съемных носителей в / media и / run / media.
Интерфейс mount-observe позволяет вам просматривать только что смонтированные, а не монтируемые для доступа:
4] Доступ к файлам со съемных носителей в / media и / run / media. Это можно использовать для доступа к подключенным USB-накопителям и внешним жестким дискам на рабочем столе.Ни один из этих двух интерфейсов не будет автоматически подключаться. Из https://github.com/snapcore/snapd/wiki/Interfaces#removable-media
Интерфейс, который необходимо подключить, removable-media.
Доступ к файлам со съемных носителей в / media и / run / media.
Интерфейс mount-observe позволяет вам просматривать только что смонтированные, а не монтируемые для доступа:
Доступ к файлам со съемных носителей в / media и / run / media. Это можно использовать для доступа к подключенным USB-накопителям и внешним жестким дискам на рабочем столе.
Ни один из этих двух интерфейсов не будет автоматически подключаться. Из https://github.com/snapcore/snapd/wiki/Interfaces#removable-media
Интерфейс, который необходимо подключить, removable-media.
Доступ к файлам со съемных носителей в / media и / run / media.
Интерфейс mount-observe позволяет вам просматривать только что смонтированные, а не монтируемые для доступа:
Доступ к файлам со съемных носителей в / media и / run / media. Это можно использовать для доступа к подключенным USB-накопителям и внешним жестким дискам на рабочем столе.
Ни один из этих двух интерфейсов не будет автоматически подключаться. Из https://github.com/snapcore/snapd/wiki/Interfaces#removable-media