Монтирование локального каталога со сменой владельца

А зачем такое извращение вообще надо? Наверное спросите вы, а вот например для того, чтобы от имени пользователя работать с виртуальными хостами 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *