如何通过FSTAB挂载CIFS共享并为Guest提供完整的RW


33

我想创建一个具有完全读写访问权限的公用文件夹。我的配置问题是Windows用户作为来宾系统没有问题(他们可以读写(RW)和删除(Delete)),而我的Ubuntu客户端不能这样做。我们只能读写,而不能创建或删除。

这是服务器上的我的smb.conf:

[global]
    workgroup = WORKGROUP
    netbios name = FILESERVER
    server string = TurnKey FileServer

    os level = 20
    security = user
    map to guest = Bad Password
    passdb backend = tdbsam
    null passwords = yes

    admin users = root
    encrypt passwords = true
    obey pam restrictions = yes
    pam password change = yes
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

    add user script = /usr/sbin/useradd -m '%u' -g users -G users
    delete user script = /usr/sbin/userdel -r '%u'
    add group script = /usr/sbin/groupadd '%g'
    delete group script = /usr/sbin/groupdel '%g'
    add user to group script = /usr/sbin/usermod -G '%g' '%u'

    guest account = nobody

    syslog = 0
    log file = /var/log/samba/samba.log
    max log size = 1000

    wins support = yes
    dns proxy = no

    socket options = TCP_NODELAY
    panic action = /usr/share/samba/panic-action %d


[homes]
    comment = Home Directory
    browseable = no
    read only = no
    valid users = %S

[storage]
    create mask = 0777
    directory mask = 0777
    browseable = yes
    comment = Public Share
    writeable = yes
    public = yes
    path = /srv/storage

以下FSTAB条目不会产生对共享的完全R / W访问。

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw 0 0

这也不起作用

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw,guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0

使用Nemo / Nautilus中的以下位置而不安装要挂载的共享可以正常工作:

smb://192.168.0.5/storage/

额外信息。我只是注意到,如果在挂载后将文件复制到共享,我的Ubuntu客户端会立即使“ nobody”成为所有者,并且“ no group”组已经读写,其他所有人都为只读。

在此处输入图片说明

我究竟做错了什么?


因此,让我看看:您可以从Ubuntu客户端挂载共享(我假设以fstab条目为根,然后可以读写),但是不能删除或创建?那么为什么可以复制(对于复制,必须创建文件)?
2013

Answers:


56

原来,我需要在FSTAB的安装线中添加本地(客户端)UID,以使其正常工作。我是通过蛮力到达的:

//192.168.0.5/storage /media/myname/TK-Public/ cifs guest,uid=myuser,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0

3
一个常见的问题,根本没有答案...太棒了!
dan3 2013年

哦,正是我所需要的...非常感谢-找了几个小时!
pkdkk

1
另一个陷阱:确保cifs-utils已安装(对我而言,在安装“ main” samba pkg之后未在16.04下安装)。如果没有安装,则会出现“错误的fs /错误的选项”错误。
bshea

之后我安装,我用的烫发在其他的答案,说://10.20.30.40/share/mysharedir /mnt/mymountpoint cifs guest,uid=nobody,iocharset=utf8,noperm 0 0 /etc/fstab,然后sudo mount -a。似乎现在可以挂载/写入。
bshea

对我来说,一个稍微简单一点的版本(没有uid)可以为所有用户从另一台linux机器上正确安装R / W进行公共共享://server_name/share_name /media/local_mountpoint cifs guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
woohoo

6

CIFS通常没有用户和组的任何概念,因此安装CIF共享将默认将用户和组显示为“ nobody”:

drwxdrwxdrwx. 3 nobody nobody 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 nobody nobody 0 Sep 29 09:00 ..

由于您不是“没人”,除非您使用sudo,否则Linux将不允许您写入没有0777权限的任何内容。要解决此问题,请将uid = mylogin,gid = mygroup添加到fstab,它将使共享看起来像是您自己的目录:

drwxdrwxdrwx. 3 mylogin mygroup 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 mylogin mygroup 0 Sep 29 09:00 ..

现在,您完全可以控制,而无需sudo。

这实际上并没有改变服务器上的任何内容,因为服务器没有执行任何操作。它告诉Linux假装您是所有者,并赋予您不受限制的访问权限。


1
是,如果使用guest / nobody / etc。确保父文件夹具有完整的读/写/执行权限。我在一些内部网络共享上使用此烫发-因此这不是安全问题。Upvoted
bshea

但是与您的帖子相反,当有正确的安装选项时,我可以使用userid'nobody'(用于安装)。看到我的其他评论..
bshea

与为每个已安装文件设置广泛的权限相比,这是一个更好的解决方案。而且有效。
j08lue

5

你快到了 通过使用以下方式打开FSTAB:

sudo nano /etc/fstab

在最后一行(或最后一行)中:

//192.168.0.5/storage /media/myname/TK-Public/ cifs username=YOURUSERNAME,password=YOURPASSWORD,iocharset=utf8,file_mode=0777,dir_mode=0777

***(这是一条长线)

Ctrl- X关闭,Y保存并按Enter键完成交易。

现在通过以下方式重启:

sudo reboot

并且您应该完全控制Linux设备上的网络共享!


1
您可能想用示例密码替换该密码。
聚焦

9
不需要重新启动即可装入fstab条目。只是mount <DEVICE>mount <MOUNTPOINT>什至mount -a做得很好。
David Foerster

1

我遇到了这个问题,这是因为共享的用户不拥有它。之后,我用“ sudo chown {username}:{username} / {share} / {path}”修复了该问题,然后可以移动和删除文件了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.