Я пытаюсь реализовать сервер с Samba 4.5.x на Debian 9. Сервер Samba должен быть доступен из Mac OS X и Windows.

Вот эта вещь.

У меня есть эти группы (может, это моя ошибка?)

  • Администратор (Пользователь 1 + Пользователь 2)
  • Группа1 (Пользователь 3 + Пользователь 4)
  • Группа2 (Пользователь 5 + Пользователь 6)
  • Группа 3 (Пользователь 7 + Пользователь 8)

У меня есть эти каталоги:

  • directory1
  • directory2
  • directory3

    • SubDirectoryOfUser7
    • SubDirectoryOfUser8

Я хотел бы иметь:

  • Пользователь 1 + Пользователь 2 (Администратор) для чтения, записи и навигации по любым папкам во всех каталогах.

  • Мне бы хотелось, чтобы пользователь 3 + пользователь 4 (группа 1) мог читать, писать и перемещаться по чему-либо в гостях Directory1 +, чтобы иметь право читать и перемещаться в этом каталоге.

  • Я хочу, чтобы Пользователь 5 + Пользователь 6 (Группа2) мог читать, писать и перемещаться в Каталоге 2, а Пользователь 3 + Пользователь 4 (Группа1) мог читать и перемещаться по нему.

  • Я пытаюсь, чтобы Пользователь 7 + Пользователь 8 (Группа 3) мог читать и перемещаться в Directory3, но просто мог писать в своих собственных SubDirectoryOfUserN7 и SubDirectoryOfUser8, Пользователь 5 + Пользователь 6 (Группа 2) должен иметь возможность читать, писать и перейдите в Directory3 + SubDirectoryOfUserS.

Я попытался организовать группу, как указано выше, но я также попытался настроить группу в отношении каталогов. Например, Администратор, который является Пользователем 1 и Пользователем 2, также находится в Группе 1, Группе 2 и т.д. Но это все равно не работает так, как мне бы хотелось.

Я также пытался разобраться с ACL. Но я до сих пор не знаю, что я должен поместить в свой smb.conf для списков чтения / записи и создания / каталогов масок. Я не знаю, как я мог бы правильно организовать свои группы, чтобы связать их с каталогами. Я не знаю, как обращаться с вложенными каталогами в Directory3.

Поскольку я пробовал столько идей за 3 дня, я чувствую себя буквально глупо с Samba. Я читаю здесь много веток, Arch Wiki, Debian Wiki, Документацию по Samba и старое руководство, но о Samba 3, и я бы сказал, что я в пустыне, и всех моих знаний и небольших экспериментов дома недостаточно для развертывания. такой сервер в моей НПО.

Пожалуйста, если бы у вас были рекомендации, решения или подходящая ссылка, которая отвечала бы этим случаям, я был бы очень благодарен.

Заранее спасибо !

1 ответ1

0

Я наконец сделал это, если это может помочь кому-то. Я не знаю, хорошо ли это, но хорошо работает с правами POSIX, без уродливого ACL.

1] Создать группы

$ sudo groupadd Group1
$ sudo groupadd ...

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

2] Создание пользователей (без домашней папки и возможности использовать SSH по соображениям безопасности)

$ sudo adduser --no-create-hom --shell /usr/sbin/nologin user1
$ sudo adduser --no-create-hom --shell /usr/sbin/nologin user...

3] Добавить пользователей в базу данных smbpasswd. Пожалуйста, обратите внимание на то, что я должен был добавить их, но также чтобы они могли избежать любых проблем.

$ sudo smbpasswd -a user1
$ sudo smbpasswd -e user1
$ ...

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

Ошибка была:

$ sudo usermod -G user1 Group1
$ sudo usermod -G user1 Group2

Если вы делаете:

$ groups user1

У вас есть что-то вроде:

user1 Group2

Потому что вторичная группа исчезла.

Хорошей практикой является:

$ sudo usermod -G Group1,Group2,Group3 user1

В этом случае:

$ groups user1

Покажет:

$ user1 Admin Group1 Group2 Group3

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

Так что еще одна ошибка будет:

$ sudo usermod -g Group1

Если вы делаете:

$ groups user1

Ты получил:

$ Group1

4] Создайте папки с хорошими разрешениями:

$ sudo mkdir /path/to/Directory1
$ sudo chown root:Group1 /path/to/Directory1
$ sudo chmod 2775 /path/to/Directory1

Пожалуйста, прочитайте это, если вы ничего не знаете о разрешениях файловой системы и setuid, setgid: chmod + setuid и setgid. Разрешения, а также наследования важны для ваших групп.

5] Создайте столько каталогов, сколько вы хотите, с разрешениями, которые вы хотите.

6] Сконфигурируйте свой файл smb.conf в любом редакторе. Я лично использую vim. Сделайте резервную копию, прежде чем потерять все, что работало хорошо.

$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
$ sudo vim /etc/samba/smb.conf

Ваш конфигурационный файл здесь, с глобальным config и config1 config:

[global]

     workgroup = YOUR-LOCAL-WORKGROUP
     server string = %h # hostname
     log file = /var/samba/smb-%h.log
     max log size = 1000
     disable netbios = yes # since this is a standalone server
     server role = standalone server
     veto files = /*.exe/*.com/*.dll/*.bat/*.vbs/*.tmp/ # whatever your want
     delete veto files = yes

[Directory1]

     path = /path/to/Directory1
     browseable = yes
     guest only = no
     guest ok = yes
     read list = nobody guest
     write list = @Group1
     force create mode = 0665 # please see system file permissions ...
     force directory mode = 2775 # ... and setuid, setgid, right above !

Обратите внимание, что выполнение важно для ваших пользователей. Это позволяет им перемещаться по каталогам. Но выполнение также представляет опасность для файлов. Вы не хотите, чтобы пользователи выполняли сценарии или что-то еще, чтение достаточно широко.

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

    force create mode = 0665
    force directory mode = 2775

Обратите внимание, что delete veto file veto files также являются еще одним щитом, поскольку вы не хотите, чтобы ваши глупые пользователи Windows Mac OS X помещали большие двоичные объекты, двоичные файлы или исполняемые произвольные программы на ваш чистый сервер.

7] Протестируйте ваш конфигурационный файл с помощью легкой команды:

$ testparm

8] Все хорошо? Затем.

$ sudo systemctl start smbd.service # or restart
$ sudo systemctl enable smbd.service 

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

И вуаля ! Надеюсь, это кому-нибудь поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .