Проблема с разрешениями Samba 4, принудительное использование пользователя/группы

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

Samba настроен на использование пользователя ‘torrent’ и группы ‘users’ для доступа гостей. Я не могу изменить директорию и ее содержимое, если у них нет прав g+w.

Я хотел бы, чтобы эта директория была доступна для записи без прав g+w.

Что я упускаю?

Мой smb.conf:

[global]
security = user

map to guest = bad user
guest account = torrent

[WDC_1T]
        comment = -- WDC 1TB --
        path = /mnt/WDC_1T
        read only = no
        writeable = yes

        guest only = yes
        guest ok = yes
        force user = torrent
        force group = users
        guest account = torrent

        create mask = 0644
        force create mode = 0644
        directory mask = 0755
        force directory mode = 0755

Создал директорию через samba, всё работает как и должно:

ls -ld _TEST_OK_/
drwxrwxr-x 2 torrent users 4096 02-27 15:42 _TEST_OK_/

Создал директорию в Linux, те же права, кроме того, что группа не имеет прав на запись -> нет доступа на запись:

ls -ld _TEST_PERMISSION_ERROR_/
drwxr-xr-x 2 torrent users 4096 02-27 15:40 _TEST_PERMISSION_ERROR_/

ls -lR _TEST_PERMISSION_ERROR_/
-rw-rw-r-- 1 torrent users 0 02-27 15:40 plik1.txt

Я столкнулся с той же проблемой, используя “force user = nobody” и “force group = nobody” на Fedora (UID 65534).

В итоге создал другого пользователя “netshare” (UID 65533) и использовал его в качестве аккаунта гостя Samba, а также “force user = netshare” и “force group = netshare”.

После этого создание файлов в директории работало без установленного бита группы +w. Это очень странно, но это работает! Должно быть, это связано с тем, как Samba обрабатывает определенные аккаунты.

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

Для решения вашей проблемы с правами доступа в Samba 4, вам необходимо учитывать нюансы совместной работы Samba с учетными записями пользователей и групп. Как вы уже заметили, проблему можно решить, используя другую учетную запись, что связано с тем, как Samba обрабатывает учетные записи, которые не имеют достаточных прав.

Пошаговое решение

  1. Создание нового пользователя:
    Создайте нового пользователя для общего доступа, который будет иметь необходимые права. На примере вашего решения, вы можете создать пользователя netshare.

    sudo useradd -s /sbin/nologin netshare
    sudo passwd netshare
  2. Настройка доступа к директории:
    Убедитесь, что созданная директория, в которую вы хотите предоставлять доступ, имеет владельца и группу, соответствующими вашему новому пользователю.

    sudo chown netshare:users /mnt/WDC_1T

    Установите маску прав доступа для директории:

    sudo chmod 0775 /mnt/WDC_1T
  3. Обновление конфигурации Samba:
    Обновите ваш файл smb.conf, чтобы использовать нового пользователя и группу:

    [WDC_1T]
       comment = -- WDC 1TB --
       path = /mnt/WDC_1T
       read only = no
       writeable = yes
       guest only = yes
       guest ok = yes
       force user = netshare
       force group = users
       create mask = 0644
       force create mode = 0644
       directory mask = 0755
       force directory mode = 0755
  4. Перезагрузка Samba:
    После изменения конфигурации убедитесь, что вы перезапустили службу Samba для применения изменений:

    sudo systemctl restart smbd nmbd
  5. Тестирование доступа:
    Создайте директорию и файл в общей папке через Samba. Проверьте права доступа:

    smbclient //localhost/WDC_1T -U torrent
    mkdir _TEST_NEW_DIR_
    touch _TEST_NEW_DIR_/testfile.txt
    ls -ld _TEST_NEW_DIR_/

    Убедитесь, что права доступа к новым файлам и директориям созданы корректно, без необходимости установки группы на запись.

Объяснение

Проблема, с которой вы сталкиваетесь, связана с тем, что Samba обрабатывает определенные встроенные учетные записи (такие как nobody) иначе, чем пользовательские учетные записи, и у них могут отсутствовать необходимые права для управления файлами и директориями. Использование переменной force user позволяет вам избегать необходимости устанавливать биты на запись для группы, так как все файлы и директории будут созданы с правами нового пользователя, который имеет соответствующие разрешения.

Заключение

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

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

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