如何设置要挂载为特定用户的 samba 共享?

amo*_*fis 11 ubuntu samba cifs

我想创建 samba 共享,用户可以作为特定的 samba 用户连接到该共享。我创建了用户,比如说 henry,我想在他的家里做存储。

所以我在我的 /etc/samba/smb.conf 中有:

[myshare]
  path = /home/henry
  browsable = yes
  read only = no
  guest ok = no
  create mask = 0644
Run Code Online (Sandbox Code Playgroud)

现在当我通过 smbclient 连接时一切都很好。但我想将此共享挂载为 CIFS。我可以:

sudo mount -t cifs //myserver/myshare /media/remote-share -o user=henry
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在 /media/remote-share 中创建文件时,我的权限被拒绝:(

如果我希望每个人都可以访问那里,但作为特定用户而不是访客,我应该如何配置它?

服务器和客户端都是 ubuntu 机器。

cas*_*cas 16

好的,我已经重新阅读了您的问题并有另一个答案。

当您在 /etc/fstab 或从命令行使用 sudo mount 挂载它时,您需要设置 uid 和 gid 以及可选的 umask(file_mode 和 dir_mode),以便客户端上的本地用户可以使用共享。否则,它将默认为 root 拥有,W 仅由 root 拥有。将它显式安装为 RW 可能不会有什么坏处。

sudo mount -t cifs //myserver/myshare /media/remote-share \
  -o rw,user=henry,uid=xxx,gid=yyy

其中 xxx 和 yyy 是本地(客户端本地的)用户和组,在安装共享时应该“拥有”该共享。如果只有一个本地用户需要访问,则 gid 可能无关紧要。如果多个本地用户需要访问,则必须设置 gid,并且每个需要访问的本地用户都必须是该 gid 的成员。

可能需要设置其他选项,具体取决于您的网络设置(例如,您可能需要指定域)。有关更多详细信息,请参阅 mount.cifs(8) 的联机帮助页。

顺便说一句,如果您从 /etc/fstab 挂载凭据文件,请参阅有关凭据文件的说明。fstab 是世界可读的,所以不是放置密码的好地方。凭证文件可以由 root 拥有,模式为 600。


cas*_*cas 6

mount 命令在客户端,不控制服务器允许的内容。

您需要在服务器上设置共享,以便特定组中的任何人(“valid users = groupname”)都可以连接到共享,然后强制以用户 henry 进行连接(“force user = 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-share-g
    有效用户 = +henry-share-g

此示例使文件和目录世界可读以及用户和组的 RW。如果您不希望那样,则对文件使用 0660,对目录使用 2770。

顺便说一句,当一位教授希望他的研究小组中的每个人都能够使用小组共享时,上述内容大致是我在工作时在我的 samba 服务器上所做的。

唯一真正的区别是我不使用现有的用户帐户。我在 AD 中为共享创建了一个专用用户以及一个专用组,因为教授的个人文件和他/她的研究组的文件之间需要分开。我还为该用户和组设置了一个配额,该配额与用户的个人配额是分开的。即我会创建和使用类似“henry-share-u”的东西,而不是使用现有的“henry”帐户。