非root用户通过Samba挂载无法创建/编辑文件问题求助
搭建code-server(浏览器版VSCode)实例时,从挂载的Samba共享目录读写文件遇到权限问题:
- VSCode提示无权限写入,错误信息:
Unable to write file
'vscode-remote://localhost:8080/home/user/repository/test'
(NoPermissions (FileSystemError): Error: EACCES: permission denied,
open '/home/gmetitieri/user/test')
- 使用
sudo touch file.txt可成功创建文件,已用chmod给目录加完全权限但无效 - Windows系统用相同凭证操作该Samba共享无问题
- 已尝试常规VSCode权限方案,但非root用户仍无法写入
挂载命令:
sudo mount -t cifs -o rw,vers=3.0,credentials=/root/.examplecredentials //192.168.18.112/sharedDir /media/share
核心问题是CIFS挂载时默认以root权限持有目录,普通用户无读写权限,且chmod对CIFS挂载目录无效(CIFS权限由远程Samba服务器控制,本地权限修改不生效)。按以下步骤调整:
修改挂载参数,指定普通用户/组权限
先通过id 你的用户名命令获取用户ID(uid)和组ID(gid),比如执行id gmetitieri会输出类似uid=1000(gmetitieri) gid=1000(gmetitieri)的结果。重新挂载时添加
uid和gid参数,将挂载目录的所有者设为你的非root用户:sudo mount -t cifs -o rw,vers=3.0,credentials=/root/.examplecredentials,uid=1000,gid=1000 //192.168.18.112/sharedDir /media/share多用户访问场景补充参数
若需要多个用户读写该共享目录,可额外添加file_mode和dir_mode参数设置权限:sudo mount -t cifs -o rw,vers=3.0,credentials=/root/.examplecredentials,uid=1000,gid=1000,file_mode=0664,dir_mode=0775 //192.168.18.112/sharedDir /media/share此设置下目录权限为775(所有者和组可读写执行,其他用户只读),文件权限为664,适配多人协作场景。
设置开机自动挂载(可选)
编辑/etc/fstab文件,添加以下一行(替换对应的uid、gid和路径)://192.168.18.112/sharedDir /media/share cifs rw,vers=3.0,credentials=/root/.examplecredentials,uid=1000,gid=1000 0 0确保
/media/share目录存在,执行sudo mount -a测试挂载是否生效。确认code-server运行用户
用ps aux | grep code-server查看code-server的运行用户,确保是以你的非root用户启动的。如果是root用户启动,切换到普通用户重新启动code-server即可。
内容的提问来源于stack exchange,提问作者Giancarlo Metitieri

