如何在各种文件夹中配置samba,添加用户和组,具有不同的权限


0

我正在尝试在Debian 9上使用Samba 4.5.x实现一个服务器。可以从Mac OS X和Windows访问Samba服务器。

这就是事情。

我有这些团体(也许是我的错误?):

  • 管理员(用户1 +用户2)
  • Group1(用户3 +用户4)
  • Group2(用户5 +用户6)
  • Group3(用户7 +用户8)

我有这些目录:

  • directory1中
  • Directory2
  • directory3目录

    • SubDirectoryOfUser7
    • SubDirectoryOfUser8

我想要:

  • 用户1 +用户2(管理员)可以读取,写入和导航所有目录中的任何文件夹。

  • 我希望User 3 + User 4(Group1)能够在Directory1 + guest中的任何内容中进行读取,写入和导航,以便有权在此目录中阅读和导航。

  • 我希望用户5 +用户6(Group2)能够在Directory2和用户3 +用户4(Group1)中读取,写入和导航,并能够在其中进行读取和导航。

  • 我尝试让User 7 + User 8(Group 3)能够在Directory3中读取和导航,但只能在他们自己的SubDirectoryOfUserN7和SubDirectoryOfUser8中写入,User 5 + User 6(Group 2)应该能够读取,写入和在Directory3 + SubDirectoryOfUserS中导航。

我试图组织上面的组,但我也尝试了关于目录的组配置。例如,管理员,用户1和用户2也在Group1,Group2等中。但它仍然无法正常工作。

我也尝试过处理ACL。但我仍然不知道我应该在smb.conf中放入读/写列表和创建/目录掩码。我不知道如何正确组织我的组以将它们链接到目录。我不知道如何处理Directory3中的嵌套目录。

因为我从3天开始尝试了很多想法,所以现在我对Samba感到非常愚蠢。我在这里阅读了许多主题,Arch Wiki,Debian Wiki,Samba文档和一本旧手册,但是关于Samba 3,我会说我在沙漠中,我在家里的所有知识和小实验都不足以部署在我的NGO中这样的服务器。

如果您有解决这些案件的建议,解决方案或适当的链接,我将非常感谢。

先感谢您 !

Answers:


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]将用户添加到他们将要访问的组。请注意我认为samba无法识别次要组,但实际上确实如此。错误是滥用命令行。

错误是:

$ 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

这里的配置文件,全局配置和Directory1配置是:

[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 fileveto files 也是另一个盾牌,因为你不希望愚蠢的Windows Mac OS X用户在你的干净服务器上放置blob或二进制文件或可执行的随机软件。

7]用温和的命令测试你的配置文件:

$ testparm

8]一切都好吗?然后。

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

现在,您可以使用您选择的方法进行日志记录,并且看到匿名者可以在未经编程的情况下浏览服务器上的文件,而经过身份验证和指定的用户可以读取,写入和执行 - 即从目录导航到目录。

Etvoilà!我希望它能帮助别人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.