在linux系统中,文件夹的执行权限决定了用户是否可以进入该文件夹、访问文件夹内的文件列表以及执行文件夹下的可执行程序,当执行权限不足时,会直接阻碍相关操作的执行。

文件夹执行权限的作用
linux的文件权限分为读、写、执行三类,对于文件夹来说,执行权限的意义和普通文件不同:
- 读权限:可以查看文件夹内的文件列表
- 写权限:可以在文件夹内创建、删除、修改文件
- 执行权限:可以进入该文件夹,访问文件夹内文件的元数据
如果没有文件夹的执行权限,即使有读权限,也无法通过cd命令进入文件夹,也无法执行文件夹内的脚本文件。
权限不够的常见提示
当尝试操作没有执行权限的文件夹时,系统会给出对应的错误提示:
- 进入文件夹时提示:bash: cd: 文件夹名: Permission denied
- 执行文件夹内脚本时提示:bash: ./脚本名: Permission denied
- 查看文件夹内容时提示:ls: cannot open directory 文件夹名: Permission denied
解决方法
方法一:使用chmod修改文件夹权限
chmod是最常用的权限修改命令,可以直接调整文件夹的执行权限,常用参数如下:
u:文件所有者g:文件所属组o:其他用户a:所有用户+:添加权限-:移除权限=:设置权限
如果需要给文件夹添加所有用户的执行权限,可以执行以下命令:
# 给test_folder文件夹添加所有用户的执行权限 chmod a+x test_folder # 查看修改后的权限 ls -ld test_folder
如果只需要给所有者添加执行权限,可以使用:
# 给所有者添加test_folder的执行权限 chmod u+x test_folder
方法二:使用chown调整文件夹所有者
如果当前用户不是文件夹的所有者,也可以通过修改文件夹的所有者来获取权限,chown命令可以同时修改所有者和所属组:
# 将test_folder的所有者改为当前用户 chown 当前用户名 test_folder # 将test_folder的所有者和所属组都改为当前用户 chown 当前用户名:当前用户名 test_folder # 递归修改test_folder及其内部所有文件的所有者 chown -R 当前用户名 test_folder
方法三:使用sudo临时获取管理员权限
如果当前用户有sudo权限,可以直接在命令前加上sudo临时使用管理员身份执行操作,适合临时处理权限问题:
# 用管理员权限进入没有执行权限的文件夹 sudo cd test_folder # 用管理员权限修改文件夹权限 sudo chmod a+x test_folder
方法四:通过ACL设置更细粒度的权限
如果需要给特定用户单独设置文件夹的执行权限,而不影响其他用户的权限配置,可以使用ACL(访问控制列表):
# 给指定用户添加test_folder的执行权限 setfacl -m u:指定用户名:x test_folder # 查看ACL权限配置 getfacl test_folder
操作注意事项
- 修改系统目录的权限时需要格外谨慎,避免影响系统正常运行
- 递归修改权限时确认目标文件夹范围,避免误改其他文件
- 如果不确定权限设置是否合理,可以先通过
ls -ld 文件夹名查看当前权限再操作
权限修改操作需要符合系统的安全规范,不要随意给所有用户开放敏感文件夹的执行权限,避免带来安全风险。