在 CentOS 上使用 gcc 时提示“权限不足(Permission denied)”,通常不是 gcc 本身没权限,而是它要读/写/执行的某个文件或目录你没有权限。常见原因和对应排查方法如下:
gcc test.c
# bash: gcc: 权限不够(或 Permission denied)
可能原因:
test.c 对你不可读排查:
ls -l test.c
pwd
ls -ld .
解决:
chmod u+r test.c
chmod u+x .
gcc test.c -o /usr/bin/myprog
如果目标路径你没写权限,就会报权限不足。
解决:
gcc test.c -o ./myprog
# 或
sudo gcc test.c -o /usr/bin/myprog
which gcc
ls -l $(which gcc)
若没有 x 权限:
sudo chmod 755 $(which gcc)
如:
ro解决:
cp test.c ~/ && cd ~/ && gcc test.c
即使权限看起来正常,SELinux 也可能阻止 gcc 访问文件。
查看是否相关:
sudo ausearch -m avc -ts recent
临时验证:
sudo setenforce 0
如果关闭后正常,说明是 SELinux 策略问题。
有时:
sudo gcc ...
会找不到头文件或临时目录权限异常。
可尝试:
sudo -i
gcc ...
id
ls -l 源文件
ls -ld 当前目录
df -h .
mount | grep " $(pwd)"
如果你愿意,可以把完整的报错信息和你执行的命令贴出来,我可以更精确地判断是哪一种情况。