我在从 Linux 客户端写入 samba 共享时遇到问题(Windows 客户端可以正常读写)。根据从linux客户端运行的ls -la,我应该拥有完全权限:
james@Q35-ICH9:~$ ls -la /mnt/
total 8
drwxr-xr-x 3 root root 4096 Feb 25 09:38 .
drwxr-xr-x 24 root root 4096 Feb 25 04:39 ..
drwxrwxrwx 61 james james 0 Feb 26 05:39 cloudshare
james@Q35-ICH9:~$ getfacl /mnt/cloudshare/
getfacl: Removing leading '/' from absolute path names
# file: mnt/cloudshare/
# owner: james
# group: james
user::rwx
group::rwx
other::rwx
但:
james@Q35-ICH9:~$ touch /mnt/cloudshare/test
touch: cannot touch '/mnt/cloudshare/test': Permission denied
但如果我使用 sudo,我可以触摸:
james@Q35-ICH9:~$ sudo touch /mnt/cloudshare/test
用户还具有对父文件夹的完全访问权限:
james@Q35-ICH9:~$ ls -la /mnt/
total 8
drwxrwxrwx 3 james james 4096 Feb 25 09:38 .
drwxr-xr-x 24 root root 4096 Feb 25 04:39 ..
drwxrwxrwx 61 james james 0 Feb 26 07:42 cloudshare
我很困惑为什么我需要 root 才能写入云共享,即使“james”应该拥有完全权限(据我所知)。
答案1
您的安装选项包括username=neon
,表示已使用该用户名建立了与共享的连接。
您没有理由假设本地用户james
与 Samba 服务器用户有任何关系neon
……或者与服务器用户有james
任何关系。这种关系是否通过其他方式建立起来了?
SMB 协议始终在用户名中携带域信息,如果没有指定其他域,则通常使用本地主机名代替。
因此,您看到的已由“james”拥有的文件实际上可能由“[电子邮件受保护]”,这不一定与“james@Q35-ICH9”有任何关系。
如果“james@Q35-ICH9”当前未映射到 Samba 服务器上的任何有效用户,但“root@Q35-ICH9”映射到,则可能可以解释您遇到的问题。
我还在挂载选项中看到vers=1.0
,表明您仍在使用已弃用且易受 WannaCry 攻击的 SMB/CIFS 1.0 协议。如果您的 Samba 服务器和 Windows 客户端是最新的,它们都应该支持更高的协议版本。此处报告的版本号表明您的 CIFS 挂载模块还支持更高的协议版本,但如果您使用的是旧版 Linux 发行版,则可能无法自动协商它们。
或者,您可能在某个时候故意将协议版本强制为 1.0。请检查这种强制是否仍然有必要,如果可能的话,请转向更新的协议版本,这将表现更好并且更安全。