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

Оцените статью

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

Related Posts

Шпаргалка по работе с envsubst

envsubst — это утилита в Unix-подобных системах, которая позволяет подставлять значения переменных окружения в строки. Базовый синтаксис: где <шаблон> — это строка с переменными окружения, которые нужно подставить, а < файл…

Немного заметок по Kubernetes

В процессе запуска очередного небольшого проекта на kubernetes у меня накопилось немного небольших заметок которыми я с радостью с вами поделюсь. Возможно они кому-то и пригодятся. Резервное копирование баз данных…

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

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

You Missed

Шпаргалка по работе с envsubst

Шпаргалка по работе с envsubst
Немного заметок по Kubernetes

Шпаргалка по работе с Nmap

Шпаргалка по работе с Nmap

Удаление разделов в Windows консоли (утилита diskpart)

Удаление разделов в Windows консоли (утилита diskpart)

Работа с GPT-разделами в Linux

Работа с GPT-разделами в Linux

Работа с консольной утилитой wsl для управления Windows Subsystem for Linux (Подсистемы Windows для Linux)

Работа с консольной утилитой wsl для управления Windows Subsystem for Linux (Подсистемы Windows для Linux)