如何通过 FSTAB 挂载 CIFS 共享并向 Guest 提供完全 RW

如何通过 FSTAB 挂载 CIFS 共享并向 Guest 提供完全 RW

我想创建一个具有完全 RW 访问权限的公共文件夹。我的配置的问题是 Windows 用户作为访客没有任何问题(他们可以 RW 和删除),但我的 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”组具有读写权限,而其他所有人都为只读。

在此处输入图片描述

我究竟做错了什么?

答案1

事实证明,我需要在 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

答案2

您快完成了。使用以下命令打开 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 设备上的网络共享!

答案3

CIFS 通常没有用户和组的概念,因此挂载 cifs 共享将默认显示用户和组为“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 假装您是所有者并授予您不受限制的访问权限。

答案4

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

相关内容