在 CentOS(及其他 Linux 发行版)中,软连接(符号链接,symbolic link)打不开,通常不是“链接本身”的问题,而是链接指向的目标或权限/路径出了问题。下面按常见原因逐一说明。
ln -s /data/app/config.conf /etc/config.conf
如果 /data/app/config.conf 被删除或路径写错,那么:
cat /etc/config.conf
# 报错:No such file or directory
✅ 检查方式:
ls -l /etc/config.conf
如果看到:
/etc/config.conf -> /data/app/config.conf
但 /data/app/config.conf 不存在,就是这个问题。
例如:
ln -s config.conf /etc/config.conf
这是相对路径,实际指向:
/etc/config.conf -> /etc/config.conf(自己)
✅ 正确做法(推荐绝对路径):
ln -s /data/app/config.conf /etc/config.conf
即使你能 ls -l 看到软连接,也可能:
示例:
ls -l /data/app
# drwx------ root root
普通用户就无法进入该目录。
✅ 检查:
namei -l /etc/config.conf
可清楚看到每一步权限问题。
如果软连接指向:
例如:
ln -s /mnt/nfs/data /data
但 /mnt/nfs 没挂载,就会打不开。
✅ 检查:
mount | grep nfs
df -h
CentOS 默认开启 SELinux,可能导致:
✅ 查看是否 SELinux 问题:
getenforce
临时验证:
setenforce 0
如果此时能打开,说明是 SELinux 上下文问题。
✅ 修复示例(http 目录):
restorecon -Rv /data/app
例如:
ln -s /data/logs /var/log/app
cat /var/log/app
会报错,因为那是目录。
✅ 正确:
ls /var/log/app
有时软连接被误删或写坏。
✅ 删除重建:
rm /etc/config.conf
ln -s /data/app/config.conf /etc/config.conf
ls -l 软连接
namei -l 软连接
readlink 软连接
getenforce
df -h
如果你愿意,可以贴出:
ls -l 软连接我可以帮你精准定位。