linux错误码13是系统操作中非常常见的错误类型,它的官方定义是EACCES,也就是权限不足导致的操作被拒绝。当进程尝试执行某个没有对应权限的操作时,内核就会返回这个错误码,提示当前操作无法完成。

linux错误码13的常见触发场景
错误码13的触发场景非常广泛,最常见的有以下几种情况:
- 尝试读取、写入或者执行一个没有对应权限的文件,比如普通用户尝试修改<code>/etc/passwd</code>这类系统配置文件
- 访问某个目录时,没有目录的执行权限,导致无法进入目录或者列出目录内容
- 尝试绑定1024以下的知名端口,而当前进程不是root用户运行
- 向没有写权限的目录中创建、删除文件
- 尝试执行一个没有执行权限的脚本或者二进制程序
如何排查错误码13的问题
遇到错误码13的报错时,可以按照以下步骤逐步排查问题根源:
1. 确认报错对应的操作和资源
首先查看完整的报错信息,确定是哪个操作、针对哪个文件或者目录触发了错误。比如报错提示open: test.txt: Permission denied,就说明是打开test.txt文件时出现了权限问题。
2. 查看资源的权限设置
使用ls -l命令查看对应文件或者目录的权限信息,权限字段的格式为rwxrwxrwx,分别对应所有者、所属组、其他用户的读、写、执行权限。示例如下:
# 查看test.txt的权限 ls -l test.txt # 输出示例:-rw-r--r-- 1 root root 0 1月 1 00:00 test.txt # 表示所有者有读写权限,所属组和其他用户只有读权限
3. 确认当前操作的用户身份
使用whoami命令查看当前执行操作的用户,再结合资源的权限和所属用户、所属组信息,判断当前用户是否有对应的操作权限。
# 查看当前用户 whoami # 查看文件的所属用户和所属组 ls -ld test.txt
解决linux错误码13的方法
根据排查到的问题原因,可以选择对应的解决方式:
方法1:修改资源权限
如果当前用户是资源的所有者或者root用户,可以通过chmod命令修改资源的权限,赋予对应用户操作权限。比如给所有用户添加test.txt的写权限:
# 给test.txt添加其他用户的写权限 chmod o+w test.txt # 或者直接设置为所有用户都有读写权限 chmod 666 test.txt
如果是目录权限不足,需要同时修改目录的执行权限,否则即使有读权限也无法进入目录:
# 给test目录添加执行权限,允许进入目录 chmod +x test
方法2:切换用户身份
如果当前用户没有权限修改资源,可以切换到资源的所有者或者root用户执行操作,使用su或者sudo命令即可:
# 切换到root用户 su - # 或者使用sudo执行单条命令 sudo echo "test" > test.txt
方法3:修改资源的所属用户或所属组
如果需要让某个用户长期拥有资源的操作权限,可以将资源的所有者或者所属组修改为该用户:
# 将test.txt的所有者修改为user1 chown user1 test.txt # 将test.txt的所属组修改为group1 chgrp group1 test.txt # 同时修改所有者和所属组 chown user1:group1 test.txt
注意事项
修改系统文件或者目录的权限时,要遵循最小权限原则,不要随意给所有用户赋予过高的权限,避免带来系统安全风险。如果是服务进程触发错误码13,需要确认服务运行的用户身份,针对性调整对应资源的权限,而不是盲目修改权限。另外,有些场景下错误码13可能是由父目录的权限不足导致的,排查时不要只关注操作的目标文件,也要检查上级目录的权限设置。
linux错误码13权限不足EACCES文件权限chmod修改时间:2026-07-18 13:54:21