Ubuntu挂载NAS后无写入权限的解决求助
问题描述
我家里有一台NAS存着所有共享文件,已经通过在/etc/fstab里添加以下配置,用mount -a命令成功在Linux终端挂载了:
//192.168.0.145/TARDIS_Share /mnt/nas cifs username=MY_USERNAME,password=MY_PASSWORD,uid=3000,gid=3002,file_mode=0664,dir_mode=0775 0 0
但现在遇到个问题:不管运行什么生成文件的命令,都会报写入权限错误。我用的是Ubuntu 22.04.4 LTS(jammy版本),测试用VIM保存简单文本文件时,必须用sudo vim才能成功,不用sudo就不行。
有没有办法调整权限,让我不用su类命令就能创建文件呀?
解决方案建议
先别着急,咱们一步步排查和解决:
确认当前用户的UID/GID是否匹配挂载参数
先在终端里运行id命令,看看你当前登录用户的UID和GID是不是和fstab里设置的uid=3000,gid=3002一致。如果不一致,挂载后的文件/目录权限会属于UID3000、GID3002的用户/组,你当前用户自然没权限写。- 如果确实不匹配,把
fstab里的uid和gid改成你当前用户的对应值,改完后运行sudo mount -o remount /mnt/nas重新挂载试试。
- 如果确实不匹配,把
检查NAS端的共享权限设置
有时候问题出在NAS那边,登录NAS的管理界面,检查TARDIS_Share这个共享文件夹的权限设置:- 确认你用来挂载的
MY_USERNAME在NAS上拥有写入权限,而不是只读。 - 有些NAS还会有“用户组权限”的设置,也要确认对应的用户/组有写入权限。
- 确认你用来挂载的
调整挂载参数的权限位
你现在设置的file_mode=0664和dir_mode=0775,意味着文件是所有者和组可读写,其他只读;目录是所有者和组可读写执行,其他只读执行。如果你的用户不在GID3002的组里,那你就只有只读权限。- 可以临时把
file_mode改成0666、dir_mode改成0777测试,重新挂载后看看能不能写入。如果可行,再调整回更安全的权限,同时用sudo usermod -aG 3002 你的用户名把自己加入GID3002的组。
- 可以临时把
尝试添加
nounix挂载参数
有时候CIFS挂载和Unix权限的兼容性会出问题,你可以在fstab的参数里加上nounix,让挂载时忽略Unix权限,直接用NAS端的权限设置。修改后的配置大概是://192.168.0.145/TARDIS_Share /mnt/nas cifs username=MY_USERNAME,password=MY_PASSWORD,uid=3000,gid=3002,file_mode=0664,dir_mode=0775,nounix 0 0改完后运行
sudo mount -o remount /mnt/nas重新挂载测试。检查挂载点本身的权限
最后看看/mnt/nas这个挂载点目录本身的权限,运行ls -ld /mnt/nas,如果挂载前这个目录的权限就不对,也可能影响挂载后的权限。可以用sudo chown 你的用户名:你的组名 /mnt/nas调整挂载点权限,再重新挂载试试。
备注:内容来源于stack exchange,提问作者fred4h




