我终于成功了,如果它可以帮助某人。我不知道它是不是很好,但它适用于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 file
和 veto files
也是另一个盾牌,因为你不希望愚蠢的Windows Mac OS X用户在你的干净服务器上放置blob或二进制文件或可执行的随机软件。
7]用温和的命令测试你的配置文件:
$ testparm
8]一切都好吗?然后。
$ sudo systemctl start smbd.service # or restart
$ sudo systemctl enable smbd.service
现在,您可以使用您选择的方法进行日志记录,并且看到匿名者可以在未经编程的情况下浏览服务器上的文件,而经过身份验证和指定的用户可以读取,写入和执行 - 即从目录导航到目录。
Etvoilà!我希望它能帮助别人。