/mnt/nas
我已经使用 fstab 条目安装了 samba 共享。我可以读取所有内容,但sudo
需要写入(权限被拒绝,touch test.txt
但不是sudo touch.txt
)。我试过:
chown -R user:user /mnt/nas
和chown -R user /mnt/nas
当然是作为 root 并使用我的用户名。当我不指定组时,我会收到有关无法读取的错误lost+found
,我认为我不应该关心这一点。ls -l
无论哪种方式都不显示我的用户的写入权限。
问题 Samba非root用户无法写入共享接受的答案只是告诉我更改权限,这是没有帮助的。
这:非 root 用户下的 Samba 挂载问题只是告诉我阅读我已经尝试过的手册页。我一直找不到答案。
我认为我的 SMB 共享没有什么神奇之处,我只是在命令方面做得不好chown
。我应该采取什么不同的做法?
答案1
我在上找到了以下内容安装手册页:
smbfs 的挂载选项 就像 nfs 一样,smbfs 实现需要一个二进制参数(struct smb_mount_data)来挂载系统调用。该参数由 smbmount(8) 构造,当前版本的 mount (2.12) 不了解 smbfs 的任何信息。
这引导我到smbmount 手册页:
警告:smbmount 已弃用并且不再维护。应使用 mount.cifs (mount -t cifs) 而不是 smbmount。
这引导我到mount.cifs 手册页:
mount.cifs 挂载 Linux CIFS 文件系统。当使用“-t cifs”选项时,它通常由 mount(8) 命令间接调用。
文件和目录所有权和权限 核心 CIFS 协议不提供文件和目录的 UNIX 所有权信息或模式。因此,文件和目录通常看起来由 uid= 或 gid= 选项设置的任何值拥有,并且将具有设置为安装的默认 file_mode 和 dir_mode 的权限。尝试通过 chmod/chown 更改这些值将返回成功,但没有任何效果。
当客户端和服务器协商unix扩展时,文件和目录将被分配服务器提供的uid、gid和模式。由于 CIFS 挂载通常是单用户的,并且无论哪个用户访问挂载都使用相同的凭据,因此新创建的文件和目录通常会被授予与用于挂载共享的任何凭据相对应的所有权。
如果客户端和服务器上使用的 uid 和 gid 不匹配,forceuid 和forcegid 选项可能会有所帮助。但请注意,没有相应的选项来覆盖该模式。当forceuid或forcegid生效时分配给文件的权限可能不会反映真实的权限。
当未协商 unix 扩展时,还可以使用“dynperm”安装选项在服务器上本地模拟它们。当此安装选项生效时,新创建的文件和目录将获得看似适当的权限。然而,这些权限不会存储在服务器上,并且可能在将来随时消失(受内核刷新 inode 缓存的影响)。一般来说,不鼓励使用此安装选项。
还可以通过 noperm 选项完全覆盖客户端上的权限检查。服务器端权限检查不能被覆盖。服务器完成的权限检查将始终与用于安装共享的凭据相对应,而不一定与正在访问共享的用户相对应。
这解释了为什么你的 chown 尝试没有做任何事情。
我从未真正安装或配置过 smb 共享,所以我有点猜测,但看起来 fstab 条目可能应该如下所示:
//SERVER/sharename /mnt/mountpoint cifs _netdev,username=myuser,password=mypass,uid=xxx,gid=xxx 0 0
您可以在其中使用您的用户 ID 填充 uid,并使用您的用户 ID 填充 GID。 (注意,您可能需要forceuid和forcegid)
用户名和密码选项用于对 samba 共享进行身份验证。
另一个(可能是最好的)选择是设置适当的用户共享: