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。
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”帐户。