Курс по работе с Samba в Linux by Perplexity

Решил свой кейс пока таким образом:

Справка:
Описанные действия предполагают:

  1. Доступ к директориям и файлам на samba сервере выполняется их под УЗ root (uid=0, gid=0)
  2. Команды монтирования в fstab к хосту Proxmox содержат uid=100000 и gid=100000 с целью последующего корректного монтирования в непривилегированный LXC в Proxmox (uid_proxmox=uid_lxc+100000, gid_proxmox=gid_lxc+100000)
  3. Непривилегированный LXC обращается к примонтированной директории из под УЗ root (в LXC: uid=0, gid=0)
  4. Таким образом обеспечивается корректное сопоставление uid и gid во всей цепочке:
    4.1 Samba сервер: root (uid=0, gid=0)
    4.2 Монтирование samba сервера к Proxmox серверу: uid=100000 и gid=100000
    4.3 Proxmox сервер: root (uid=0, gid=0)
    4.4 Proxmox LXC unprivileged: root (uid=0, gid=0) (мэпинг uid и gid на уровне Proxmox +100000)
  5. Параметры file_mode и dir_mode в команде монтирования сетевого каталога к хосту Proxmox:
    Когда ты монтируешь сетевую папку (cifs) через /etc/fstab, Linux не может “узнать” реальные права доступа (chmod) на удалённой стороне (т.е. на SAMBA-сервере), потому что протокол SMB не передаёт эту информацию напрямую. Поэтому ты указываешь вручную, какие права доступа отображать локально при монтировании файлов и каталогов.

Команды:

  1. Создать директорию на хосте:
    mkdir /mnt/pve/share

  2. Cоздать скрытый файл с авторизационными данными nano /root/.smbcredentials:
    username=root
    password=password

  3. Выставить строгие права:
    chmod 600 /root/.smbcredentials

  4. Добавить в nano /etc/fstab
    //ip_host/share /mnt/pve/share cifs credentials=/root/.smbcredentials,uid=100000,gid=100000,file_mode=0664,dir_mode=0775,nounix,noserverino 0 0
    где:
    //ip_host/share - адрес сетевой директории расшаренной на samba сервере
    /mnt/pve/share - точка монтирования на хосте Proxmox
    file_mode=0664 - все файлы на хосте Proxmox будут отображаться с правами rw-rw-r–
    dir_mode=0775 - все каталоги на хосте Proxmox будут отображаться с правами rwxrwxr-x

  5. Смонтировать
    mount -a

  6. Перезупустить службу (при необходимости):
    systemctl daemon-reload

Такая конструкция позволит писать и читать в сетевую шару прокинутую в LXC, но конкретно такой конфиг не рекомендую, нужно переделывать на отличного от root юзера и по правильному на samba сервере нужно создавать пользователей и группы, из под которых подключаться с другого сервера и прочих клиентов.

1 лайк