А зачем такое извращение вообще надо? Наверное спросите вы, а вот например для того, чтобы от имени пользователя работать с виртуальными хостами Nginx и писать и читать от имени пользователя с правами владельца этого виртуального хоста.
Хотя такое извращение можно сделать и при помощи ACL, вот такой метод проще и надежнее.
Итак, как я уже писал в заметке Установка WordPress в Bare Metal Ubuntu 24.04 LTS я настроил локальное окружение идентичное натуральному и теперь мне хотелось бы с ним работать, а точнее добавить его в Visual Studio Code, но как вы понимаете владельцем файлов является пресловутый www-data, а не я и мне туда в лучшем случае дадут посмотреть даже если я себя в эту группу добавлю. Есть такие нюансы в этих ваших Linux-ах и посему мы пойдем другим путем.
Создаем каталог в котором будем вести разработку и у меня он будет вот такой интересный.
$ mkdir -p /home/chernousov/Development/INTERLAN/cv-blog
И вот теперь надо сделать интересный финт ушами чтобы у меня в каталоге для разработки все файлы которые лежат в виртуальном хосте Nginx и принадлежат пользователю www-data отображались и редактировались моим локальным пользователем, а при создании и сохранении становились как созданные и отредактированные от имени www-data. Интересная загогулина вырисовывается, но на самом деле все очень просто.
Нам понадобится утилита bindfs.
# aptitude install bindfs
И добавить в /etc/fstab вот такое хитрое заклинание.
bindfs#/var/www/vhosts/stage-blog.anton-c.ru/ /home/chernousov/Development/INTERLAN/cv-blog/ fuse force-user=chernousov,force-group=chernousov 0 0
Проверяем, что мы теперь как-будто владелец этих файлов.
$ ls -lua /home/chernousov/Development/INTERLAN/cv-blog/
total 252
drwxr-xr-x 5 chernousov chernousov 4096 янв 10 05:53 .
drwxrwxr-x 4 chernousov chernousov 4096 янв 10 11:34 ..
-rw-r--r-- 1 chernousov chernousov 372 янв 7 10:52 .htaccess
-rw-r--r-- 1 chernousov chernousov 405 янв 7 10:52 index.php
-rw-r--r-- 1 chernousov chernousov 19915 янв 7 10:52 license.txt
-rw-r--r-- 1 chernousov chernousov 7409 янв 10 05:53 readme.html
.....
Казалось-бы, что теперь все нормально, но как вы видите есть нюанс и при создании файла в каталоге назначения его владельцем становлюсь я сам, а не www-data.
$ echo > /home/chernousov/Development/INTERLAN/cv-blog/test.txt
$ ls -lua /var/www/vhosts/stage-blog.anton-c.ru/ | grep test.txt
-rw-rw-r-- 1 chernousov chernousov 1 янв 10 12:06 test.txt
Это нас категорически не устраивает и мы усложним заклинание.
bindfs#/var/www/vhosts/stage-blog.anton-c.ru/ /home/chernousov/Development/INTERLAN/cv-blog/ fuse force-user=chernousov,force-group=chernousov,create-for-user=www-data,create-for-group=www-data 0 0
Вот теперь все правильно.
$ ls -lua /var/www/vhosts/stage-blog.anton-c.ru/ | grep test.txt
-rw-rw-r-- 1 www-data www-data 1 янв 10 12:47 test.txt