让tct-data组用户可访问符号链接指向内容的配置方案咨询
看起来你已经做了基础的权限调整,但还是碰到了访问问题,咱们一步步拆解排查,应该能解决:
先排查目标路径的所有父目录权限
你只设置了最终目标目录/media/tct/external_drive/somewhere/in/the/drive的组权限,但Linux要访问一个目录,必须对路径上的每一层父目录都有读(r)和执行(x)权限。比如/media、/media/tct、/media/tct/external_drive这些目录,tct-data组的用户得能进去才行。
先执行命令查看这些目录的权限:ls -ld /media /media/tct /media/tct/external_drive /media/tct/external_drive/somewhere /media/tct/external_drive/somewhere/in输出里的组权限列要确保是
r-x,如果不是,用下面的命令给tct-data组加上读和执行权限:sudo chmod g+rx /media/tct/external_drive # 逐层对权限不足的父目录执行同样操作检查外部驱动器的挂载选项
USB外部驱动器挂载时,很多默认配置会限制组用户的访问权限。先看看当前的挂载参数:mount | grep /media/tct/external_drive如果输出里有
uid=xxx,gid=xxx(指定了单独的用户/组)或者umask=0022(默认组权限只有读),那会导致tct-data组用户无法正常操作。咱们可以重新挂载来修正:- 先卸载驱动器:
sudo umount /media/tct/external_drive - 找到你的USB设备路径(比如
/dev/sdb1,可以用lsblk命令查看),然后重新挂载,指定组和权限掩码:# 假设文件系统是ext4,如果是NTFS就把ext4换成ntfs-3g sudo mount /dev/sdb1 /media/tct/external_drive -o gid=tct-data,umask=002,rw - 如果想让这个挂载配置永久生效,编辑
/etc/fstab文件,添加一行类似下面的内容(注意替换设备路径和文件系统类型):/dev/sdb1 /media/tct/external_drive ext4 defaults,gid=tct-data,umask=002 0 0
- 先卸载驱动器:
确认符号链接和/data目录的基础权限
虽然符号链接本身的权限几乎不影响访问,但还是要确认链接指向正确:ls -l /data/work_here另外,
/data目录本身要对tct-data组有r-x权限,这样用户才能进入/data看到这个链接,你可以用ls -ld /data确认,要是权限不够就执行sudo chmod g+rx /data。测试时确认用户身份和错误信息
让其他tct-data组的用户先执行id命令,确认他们确实属于tct-data组。然后尝试cd /data/work_here,如果报错,留意具体的错误提示:- 如果是
No such file or directory:大概率是链接指向的路径有误,或者某一层父目录没有执行权限; - 如果是
Permission denied:重点检查目标目录的组权限,或者驱动器的挂载选项。
- 如果是
备注:内容来源于stack exchange,提问作者user171780

