我想创建 Samba 共享,用户可以作为特定 Samba 用户连接到该共享。我创建了用户,比如说 Henry,我想在他家里创建存储空间。
因此我的 /etc/samba/smb.conf 中有:
[myshare]
path = /home/henry
browsable = yes
read only = no
guest ok = no
create mask = 0644
现在,当我通过 smbclient 连接时,一切都正常。但我想将此共享挂载为 CIFS。我可以这样做:
sudo mount -t cifs //myserver/myshare /media/remote-share -o user=henry
但是当我尝试在 /media/remote-share 中创建文件时,权限被拒绝 :(
如果我希望每个人都可以访问,但作为特定用户而不是访客,我应该如何配置它?
服务器和客户端都是ubuntu机器。
答案1
好的,我重新阅读了你的问题并有了另一个答案。
当您在 /etc/fstab 中或使用命令行中的 sudo mount 将其挂载时,您需要设置 uid 和 gid 以及可选的 umask(file_mode 和 dir_mode),以便客户端上的本地用户可以使用该共享。否则,它将默认由 root 拥有,并且只能由 root 拥有 W。并且将其明确挂载为 RW 可能不会有什么坏处。
sudo mount -t cifs //myserver/myshare /media/remote-share \ -o rw,用户=henry,uid=xxx,gid=yyy
其中 xxx 和 yyy 是当地的(即,对于客户端本地)在安装共享时应该“拥有”该共享的用户和组。如果只有一个本地用户需要访问权限,则 gid 可能并不重要。如果多个本地用户需要访问权限,则必须设置 gid,并且每个需要访问权限的本地用户都必须是该 gid 的成员。
根据您的网络设置,可能需要设置其他选项(例如,您可能需要指定域)。有关更多详细信息,请参阅 mount.cifs(8) 的联机帮助页。
顺便说一句,如果您从 /etc/fstab 安装它,请参阅有关凭据文件的注释。fstab 是全世界可读的,所以不是放置密码的好地方。凭据文件可以由 root 拥有,模式 600。
答案2
mount 命令在客户端,并不控制服务器允许的内容。
您需要在服务器上设置共享,以便特定组(“有效用户 = 组名”)中的任何人都可以连接到共享,然后强制以用户 henry 的身份进行连接(“强制用户 = henry”),无论他们实际使用什么用户名/密码登录。
在 ubuntu 上,就像在 debian 上一样,henry 可能已经有了他自己的专用组(debian 上的 adduser 默认为每个用户创建一个组),但不要使用它,除非您希望该组中的每个人都能访问 henry 的所有文件,而不仅仅是共享中的文件。
例如,创建一个名为“henry-share-g”的 unix(或 ldap 或 Active Directory)组,并将需要访问共享的任何人添加到该组。
然后在 samba 中配置共享来设置权限,以便文件由用户和组创建 RW,目录由用户和组以及 setgid 创建 RWX(以便使用组“henry-share-g”创建新文件/目录)。
例如这样的:
[我的份额] 路径 = /home/henry 强制安全模式 = 0664 强制目录安全模式 = 2775 强制创建模式 = 0664 强制目录模式 = 2775 只读 = 否 可浏览 = 是 强制用户 = henry 强制组 = henry-share-g 有效用户 = +henry-share-g
此示例使文件和目录可供所有人读取以及由用户和组读取。如果您不想要这样,则对文件使用 0660,对目录使用 2770。
顺便说一句,每当一位教授想要一个群组共享供他的研究小组中的每个人都能使用时,上述内容大致就是我在工作时在 Samba 服务器上所做的事情。
唯一真正的区别是我不使用现有的用户帐户。我在 AD 中为共享创建了一个专用用户以及一个专用组,因为需要将教授的个人文件与其研究小组的文件分开。我还为该用户和组设置了一个配额,该配额与用户的个人配额分开。即,我将创建并使用类似“henry-share-u”的东西,而不是使用现有的“henry”帐户。
答案3
这取决于您在 smb.conf 中选择的 passdb 后端。
如果您使用tdbsam
后端(samba 推荐)并设置security
为user
:
security = user
passdb backend = tdbsam
您可以使用/usr/bin/smbpasswd
来添加 samba 用户:
- 使用以下方式添加 UNIX 用户
/usr/sbin/useradd
smbpasswd -L -a <user>
使用(-L: 本地模式, -a: 添加用户)添加 samba 用户/etc/samba/smbusers
使用[语法:<unix-user> = <smb-user1> <smb-user2> <smb-userN>
]映射您的用户
您的 GNU/Lunux 发行版中的路径可能会有所延迟。