Пользователи без root-доступа не могут видеть мою samba-долю. (vfs.provider.smbj/доступ запрещен)

Вопрос или проблема

Ubuntu Desktop 24.04LTS. Это мой первый пост на форуме, пожалуйста, сообщите, если я что-то напутал 😀

Я начинаю работать с Linux в целом, и мне удалось настроить общую папку samba в моей локальной сети. Я могу войти в учетную запись root (“root”) с моего телефона, и все работает идеально. Однако, когда я создал другого пользователя с именем gost (guest, id 1001), я смог получить доступ к корневой папке и увидеть все ее подкаталоги, но когда я попытался войти в /home, я получил сообщение об отказе в доступе. Вероятно, проблема с smb.conf

вложения: /etc/samba/smb.conf ; вывод testparm ; статус systemctl для smbd (логи внизу статуса)

[global]
    workgroup = UserProductions
    netbios name = netBiosName
    guest ok = no
    browseable = yes
    read only = no
    writeable = yes
    public = yes
    valid users = root gost
    write list = root
    read list = gost

[root]
    path = /

[HDD]
    path = /home/user/Desktop/HDD       

[SSD]
    path = /home/user/Desktop/SSD
Load smb config files from smb.conf
Loaded services file OK.
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)

Server role: ROLE_STANDALONE
● smbd.service - Samba SMB Daemon
     Loaded: loaded (/usr/lib/systemd/system/smbd.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-01-27 14:00:45 CET; 1min 3s ago
       Docs: man:smbd(8)
             man:samba(7)
             man:smb.conf(5)
    Process: 19351 ExecCondition=/usr/share/samba/is-configured smb (code=exited, status=0/SUCCESS)
   Main PID: 19354 (smbd)
     Status: "smbd: ready to serve connections..."

  *** info cut out for privacy ***

Jan 27 14:01:46 ********** smbd[19410]: [2025/01/27 14:01:46.314913,  0] source3/smbd/smb2_service.c:117(chdir_current_service)
Jan 27 14:01:46 ********** smbd[19410]:   chdir_current_service: vfs_ChDir(/home/user/Desktop/HDD) failed: Permission denied. Current token: uid=1001, gid=1001, 2 groups: 1001 100

РЕШЕНИЕ: это проблема с разрешениями на файлы в общем, а не с samba. вот краткое руководство по chmod, которое поможет открыть папки для других пользователей.

https://help.ubuntu.com/community/FilePermissions для получения дополнительной информации.

сначала выполните namei -mo /full/path/to/shared/files (замените /full/path/… на, например, изображение в папке, к которой вы пытаетесь получить доступ)

вы должны получить вывод, который выглядит следующим образом: (взято с howtoforge .com)

f: /home/himanshu/Downloads/HTF-review/Nodejs-Docker/1.png
drwxr-xr-x root     root     /
drwxr-xr-x root     root     home
drwxr-xr-x himanshu himanshu himanshu
drwxr-xr-x himanshu himanshu Downloads
drwxr-xr-x himanshu himanshu HTF-review
drwxr-xr-x himanshu himanshu Nodejs-Docker
-rw-rw-r-- himanshu himanshu 1.png

посмотрите на буквы слева и игнорируйте каждую “d”. Если у всех был полный доступ к папке, вывод будет “rwxrwxrwx”. Первые три буквы обозначают разрешения для владельца файла, следующие 3 — для группы, и последние 3 — для остальных.

rwx|rwx|rwx

буквы r — это чтение, w — запись, x — разрешения на выполнение. (ПРИМЕЧАНИЕ: для того, чтобы дать папке разрешения на чтение, мы фактически должны дать ей разрешения на выполнение, чтобы открыть ее. Только чтение не будет работать).

если последние 3 буквы для папки не имеют r и x, другие не могут войти в папку, поэтому они не могут получить к ней доступ из общего ресурса samba.

ПРИМЕЧАНИЕ: Пишу это. Я узнал, что этот метод предоставления доступа примитивный. Это будет работать, но это даст ВСЕМ, кто может подключиться к вашему samba/ у кого есть пользователь на вашем компьютере, доступ для чтения этой папки. Это может раскрыть личную информацию. Все до этого момента действительно.

ИСПОЛЬЗУЙТЕ ACL ВМЕСТО ЭТОГО!!! они предоставят разрешения только указанному пользователю.

пример acl: setfacl -m u:guestuser:rx /home/

чтобы добавить эти разрешения, мы будем использовать chmod {options} filename. параметры имеют 3 части: пользователь(ли), действие и разрешение(я)

пользователь(ли) могут быть “u” для владельца, “g” для группы, “o” для остальных и “a” для всех. Действия: “+” для добавления, “-” для удаления и “=” для установки. Разрешения остаются r,w,x.

если вы хотите открыть все /home и его подпапки, используйте

chmod o+rx -R /home/ не рекомендуется, вместо этого настройте разрешения для каждой папки вручную, как:

chmod o+rx /home/user
chmod o+rx /home/user/Desktop
chmod o+rx /home/user/Desktop/HDD

если это помогло вам, поставьте лайк и хорошего дня!

Ответ или решение

Уважаемый пользователь,

Вы столкнулись с проблемой настройки Samba-сервера, в связи с которой пользователи, не обладающие правами root, не могут получить доступ к вашим общим папкам. Ошибка vfs.provider.smbj/access-denied свидетельствует о проблемах с доступом, что указывает на возможные ошибки в конфигурации Samba или несоответствие файловых разрешений на уровне операционной системы. Давайте разберем эту ситуацию и найдем решение.

Теория

Samba позволяет обмениваться файлами между различными операционными системами в локальной сети, обычно между Linux и Windows. Когда вы настраиваете Samba, конфигурационный файл smb.conf управляет правами доступа, включая пользователей, группы, разрешения на чтение и запись, а также доступ на выполнение для папок и файлов.

Ваша конфигурация содержит секцию [global], определяющую общие параметры, и секции для выступлений определённых ресурсов, например [root], [HDD], и [SSD]. Ваша проблема заключается в том, что пользователь gost не может получить доступ к определённым каталогам.

Пример

Рассмотрим конкретный случай. Вы, скорее всего, ошиблись в том, что учли только конфигурацию Samba при определении прав доступа, тогда как Linux требует правильно настроенных файловых разрешений для каждого пользователя.

Вот пример ваших текущих настроек /etc/samba/smb.conf:

[global]
    workgroup = UserProductions
    netbios name = netBiosName
    guest ok = no
    browseable = yes
    read only = no
    writeable = yes
    public = yes
    valid users = root gost
    write list = root
    read list = gost

[root]
    path = /

[HDD]
    path = /home/user/Desktop/HDD       

[SSD]
    path = /home/user/Desktop/SSD

Применение

  1. Перепроверьте права доступа файловой системы: Убедитесь, что каталог /home и все подкаталоги, к которым вы хотите предоставить доступ, имеют корректные разрешения. Это можно сделать с помощью команды namei -mo /путь/к/файлам.

  2. Настройте права доступа с использованием команд chmod и ACL: Для открытия доступа к папкам для конкретных пользователей или групп лучше всего использовать ACL (Access Control Lists), так как они позволяют более гибко управлять правами доступа.

    Пример использования ACL:

    setfacl -m u:gost:rx /home/user
    setfacl -m u:gost:rx /home/user/Desktop
    setfacl -m u:gost:rx /home/user/Desktop/HDD

    Эта команда предоставляет пользователю gost права на чтение и выполнение (а значит и доступ к листингу) для перечисленных каталогов.

  3. Перепроверьте конфигурацию Samba: В разделах ресурсов в файле smb.conf проверьте, правильно ли указаны valid users, и соответствует ли список пользователей ожидаемому. Обратите внимание, что пользователь гост должен быть в состоянии читать и выполнять все уровни каталогов, ведущих к ресурсам Samba.

  4. Перезагрузите службу Samba: После всех изменений необходимо перезагрузить службы Samba, чтобы они вступили в силу. Это можно сделать с помощью команды:

    sudo systemctl restart smbd

Если вы следовали этим шагам и проблема сохраняется, проверьте журналы ошибок Samba, чтобы зафиксировать возможные сопутствующие ошибки. Журнал можно найти с помощью команды journalctl -xe | grep smbd.

Успешное решение этой проблемы подразумевает не только изменение настроек Samba, но и тщательную проверкуовых прав доступа на уровне ОС. Если у вас есть дальнейшие вопросы или нужна дополнительная помощь, не стесняйтесь обратиться за поддержкой. Желаю вам удачи в освоении Linux и успешной настройке Samba-сервера!

С уважением,
Ваш IT-эксперт

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

Капча загружается...