我正在运行一个 Samba 文件服务器,我想知道如何创建具有不同权限的多个用户帐户。例如,目前我有一个用户 smbusr,但当我通过 ssh 连接到共享时,我可以读取、写入、执行,甚至可以离开 samba 目录并在实际计算机上执行操作。这很糟糕,因为我希望能够提供我的 IP,以便朋友/家人可以使用该服务器,但我不希望他们能够做任何事情。
我想将用户锁定在 samba 共享目录(以及所有子目录)中。最终我想要几个配置文件,例如(smbusr_R、smbusr_RW、smbguest_R、smbguest_RW)。
我还有第二个与此相关的问题,SSH 是从其他 unix 机器连接的最佳方法吗?VPN 怎么样?或者简单地像这样安装:
mount -t ext3 -o user=username //ipaddr/share /mnt/mountpoint
上面的挂载命令和 vpn 是一回事吗?这真是让我很困惑。
谢谢你们的帮助,如果你们需要查看任何文件或需要更多信息,请告诉我。
编辑:这是我的 samba 共享定义:
[SAMBA]
path = /samba
browseable = yes
guest ok = no
read list = smbusr_RO
write list = smbusr
EDIT2:这是我的整个 smb.conf 文件:
答案1
是的,Samba 现在可以支持 ACL。它占用全局部分中的几行,以及每个共享的允许和拒绝的 ACL 列表。但是,可能需要对底层文件系统权限进行一些调整以支持它们,因为 ext 文件系统默认不执行 ACL。
这是一个教程:http://aisalen.wordpress.com/2007/08/10/acls-on-samba/
以及 SMB.conf 文件的一般参考:http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html
编辑:尝试像这样更改您的共享配置。请注意,操作系统组前面需要有“@”,并且写入列表并不意味着读取权限,因此请将两个组都放在读取列表中。
将这些添加到全局变量中:
invalid users = root
valid users = @smbusers, @smbusers_RO
create mask = 02775
directory mask = 02770
[SAMBA]
comment = Debian File Server With Read Write
invalid users=nobody,nobody
valid users=@smbusr,@smbusr_RO
path = /samba
browseable = yes
guest ok = no
read list = @smbusr,@smbusr_RO
write list = @smbusr
writeable=yes
还运行“sudo testparm -s”来检查配置文件的完整性。
就文件系统权限而言,您可以使用 chown -R 将您的文件设置为由“root:smbusers”拥有,以便您的组权限控制谁可以写入,而您的其他权限可以控制谁可以读取(smb 将确保仅授予“smbusers_RO”读取权限)。然后我建议使用 SetGID,以便在共享中创建的所有新文件夹都归:smbusers 所有,并且您的所有 smbusers 都可以访问它们。
chown -R root:smbusers /samba
chmod -R 2775 /samba