当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

我想创建一个具有完全读写访问权限的公用文件夹。我的配置存在的问题是Windows用户作为来宾系统没有问题(他们可以读写和删除),而我的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”组已经读写,而其他所有人均为只读。

我究竟做错了什么?

最佳思路

原来,我需要向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

次佳思路

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

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

由于您不是’nobody’,因此除非您使用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假装您是所有者,并赋予您不受限制的访问权限。

第三种思路

你快到了通过使用以下方式打开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

***(这是一条长线)

CtrlX关闭,Y保存并输入以完成交易。

现在通过以下方式重新启动:

sudo reboot

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8681.html,未经允许,请勿转载。