当前位置:首页 > Linux > 正文

如何更改linux权限设置

使用 chmod 命令,支持数字模式(如 755)或符号模式( u+rwx,g-w),可加 -R 递归修改目录及子文件权限

在Linux系统中,权限管理是保障系统安全与功能正常运作的核心机制,通过合理配置文件/目录的访问权限、修改所有者及所属组,可精确控制不同用户对资源的访问范围,以下从核心概念解析、常用命令详解、典型操作示例、注意事项四个维度展开说明,并附相关问答环节。


Linux权限体系核心概念

Linux采用“三元组”权限模型,每个文件/目录均包含以下三类主体及其对应的三种操作权限:
| 主体类型 | 缩写 | 含义 | 默认权限范围 |
|—————-|——|———————-|—————————|
| 所有者 | u | 创建该文件的用户 | 完全可控(rwx) |
| 所属组 | g | 与文件关联的用户组 | 组内成员共享相同权限 |
| 其他用户 | o | 非所有者且非同组用户 | 最小化权限以降低风险 |

1 权限符号含义

  • r(Read):读取文件内容或列出目录条目;
  • w(Write):修改文件内容或删除/重命名目录内文件;
  • x(Execute):执行文件或进入目录。

2 特殊权限位

除基础权限外,还存在以下扩展属性:
| 特殊权限 | 符号 | 作用场景 | 示例效果 |
|———-|——|——————————|—————————|
| SUID | s | 以文件所有者身份执行程序 | passwd命令需此权限 |
| SGID | s | 以所属组身份执行程序/新建文件| 共享目录中自动继承组属性 |
| Sticky Bit| T | 仅允许所有者/root删除文件 | /tmp目录防止反面清理 |


权限修改核心命令详解

1 chmod:调整权限掩码

语法chmod [选项] <模式> <目标对象>
支持两种模式表达方式:

符号模式(推荐)

通过//运算符动态增减权限,格式为[ugoa][+-=][rwx]
| 符号组合 | 含义 | 示例 | 效果 |
|—————-|————————–|——————————-|———————————-|
| u+x | 给所有者增加执行权 | chmod u+x script.sh | 使脚本可执行 |
| go-w | 移除组和其他用户的写权限 | chmod go-w config.ini | 禁止非所有者修改配置文件 |
| a=rX | 所有用户仅保留读+强制执行 | chmod a=rX project/ | 目录可遍历,文件不可执行 |

如何更改linux权限设置  第1张

数字模式(快速批量设置)

将三类主体的权限转换为二进制数值(r=4, w=2, x=1),按所有者|组|其他顺序排列。
| 权限组合 | 二进制值 | 十进制表示 | 含义 |
|———-|———-|————|————————–|
| rwx | 111 | 7 | 完全控制 |
| r-x | 101 | 5 | 仅读+执行 |
| rw | 110 | 6 | 读写禁止执行 |
| –x | 001 | 1 | 仅执行 |

示例chmod 755 /path/to/file → 所有者rwx(7),组和其他用户r-x(5)

常用选项

  • -R:递归修改目录下所有子项权限;
  • -v:显示详细修改过程;
  • --reference=FILE:基于参考文件的权限进行匹配。

2 chown:变更所有者与所属组

语法chown [新所有者][:新所属组] <目标对象>

  • 仅修改所有者:chown user file
  • 同时修改所有者+组:chown user:group file
  • 递归修改:chown -R user:group dir/

注意:只有root用户或当前所有者可修改所有者信息。

3 ls -l:查看权限详情

输出示例:-rwxr-xr-2 root staff 1234 May 10 14:30 myapp
各字段解析:

  • :普通文件(目录为d,链接为l);
  • rwxr-xr--:权限字符串;
  • 2:硬链接数;
  • root:所有者;
  • staff:所属组;
  • 1234:文件大小(字节);
  • May 10 14:30:最后修改时间;
  • myapp:文件名。

典型操作场景与解决方案

1 场景1:赋予脚本执行权限

# 查看当前权限
ls -l myscript.sh
# 输出示例:-rw-r--r-... myscript.sh(无执行权)
# 添加执行权限
chmod u+x myscript.sh
# 验证结果
ls -l myscript.sh # 应显示 -rwxr--r--

2 场景2:限制敏感配置文件的写入权限

# 当前权限为 rw-r--r-(644)
chmod go-w /etc/mysql/my.cnf
# 新权限变为 rw-r--r-(644 → 644? 实际应为 640)
# 正确做法:明确设置为 640
chmod 640 /etc/mysql/my.cnf

3 场景3:递归修改Web目录权限

# 假设网站根目录为 /var/www/html,需满足以下条件:
# 1. 所有者为 www-data,组为 www-data;
# 2. 所有者可读写执行,组和其他用户只读;
# 3. 所有子目录继承相同权限。
chown -R www-data:www-data /var/www/html
find /var/www/html -type d -exec chmod 755 {} ;
find /var/www/html -type f -exec chmod 644 {} ;

4 场景4:修复误删的执行权限

# 若误执行 chmod a-x  导致所有文件不可执行
# 恢复关键二进制文件权限(以/usr/bin/python为例)
chmod 755 /usr/bin/python

关键注意事项

  1. 权限继承规则:目录的执行权限决定了能否进入该目录,即使子文件有读权限,若无目录执行权也无法访问;
  2. ACL强化控制:对于复杂需求(如单个用户例外),可使用setfacl设置附加权限;
  3. SELinux/AppArmor:部分发行版启用了MAC(强制访问控制),此时传统DAC权限可能被覆盖;
  4. 安全最佳实践:遵循最小特权原则,避免给不需要的用户开放写权限;
  5. 备份重要性:重大权限变更前建议备份原文件或记录当前权限状态。

相关问答FAQs

Q1: 普通用户尝试修改系统文件权限时提示”Operation not permitted”如何解决?

A: 这是由于普通用户缺乏足够的权限,解决方案有两种:

  1. 临时提权:在命令前添加sudo(需知道root密码);
    sudo chmod 644 /etc/hosts
  2. 切换至root用户:通过su -登录后直接执行命令。

Q2: 误将重要文件权限改为000导致无法访问,如何紧急恢复?

A: 立即使用root权限重置权限:

# 查找文件所在路径(假设为/home/user/data.db)
sudo find /home/user -name "data.db" -exec chmod 600 {} ;
# 或直接指定完整路径
sudo chmod 600 /home/user/data.db

若完全丢失路径信息,可通过locatefind命令

0