无法创建其他用户可读取的符号链接问题求助
问题分析与解决:符号链接跨用户读取权限问题
问题现象
在Docker Ubuntu镜像中,用户alice创建了权限为555的/tmp/README.txt,用户bob创建指向该文件的相对路径符号链接link后,bob自身可正常读取,但alice读取该符号链接时提示Permission denied——尽管alice拥有目标文件的所有权和读取权限,且符号链接本身权限为777。
核心原因
当使用相对路径创建符号链接时,符号链接存储的是相对路径字符串(如README.txt)而非绝对路径。在容器环境的文件系统隔离规则下,跨用户访问此类相对路径符号链接时,内核解析路径的过程会触发异常权限校验,导致无法正常跟随符号链接访问目标文件。
解决方案
方法1:使用绝对路径创建符号链接
创建符号链接时直接使用目标文件的绝对路径,确保任何用户访问时都能精准解析到目标文件:
# 以bob身份执行 bob:/tmp$ ln -s /tmp/README.txt link
此时alice执行cat link即可正常读取目标文件内容。
方法2:固定工作目录(不推荐)
确保所有访问符号链接的用户都处于与符号链接创建时相同的工作目录下,但此方法灵活性极低,仅适用于固定场景。
验证测试
使用提供的测试镜像验证方案有效性:
docker run -it atxr/symlink-test:latest /bin/bash
内容的提问来源于stack exchange,提问作者atxr
相关产品推荐
相关产品推荐

