在Linux系统中,权限管理与密码设置是保障系统安全的核心操作,以下从基础概念到实战操作进行全面解析,涵盖文件/目录权限调整、用户账户管理、密码策略配置及常见问题解决方案。
Linux权限体系详解
核心权限类型
权限类型 | 含义 | 数值 | 符号表示 |
---|---|---|---|
读(r) | 4 | r | |
写(w) | 修改/删除 | 2 | w |
执行(x) | 运行程序/进入目录 | 1 | x |
三元组权限模型
每个文件/目录具有三组独立权限集:
✅ 属主(Owner):创建该文件的用户
✅ 属组(Group):关联的用户组
✅ 其他用户(Others):剩余所有用户
查看当前权限状态
ls -l filename # 显示详细信息 # 输出示例:-rw-r--r-1 user group 1234 Oct 20 10:00 test.txt # 解析:第一列共10字符,前三位为属主权限,中间三位属组,后四位其他用户
修改权限的三种方式
(1) 符号法(推荐)
操作 | 说明 | 示例 |
---|---|---|
u+x |
给属主增加执行权限 | chmod u+x script.sh |
g-w |
移除属组的写权限 | chmod g-w config.conf |
o=rx |
设置其他用户可读+执行 | chmod o=rx public_html/index.html |
a+r |
给所有人添加读权限 | chmod a+r .log |
u=rwx,go=rx |
精确设置属主全权,属组/其他只读+执行 | chmod u=rwx,go=rx new_program |
(2) 数字法(高效批量操作)
将三组权限转换为二进制相加:
| 权限组合 | 计算公式 | 十进制值 | 示例 |
|———-|—————-|———-|—————————|
| rwx | 4+2+1=7 | 7 | chmod 755 important_dir
|
| rw | 4+2+0=6 | 6 | chmod 644 secret.txt
|
| r-x | 4+0+1=5 | 5 | chmod 500 restricted_bin
|
(3) 递归修改(含子目录)
chmod -R 770 project/ # 项目目录及其子目录均设为rwx+rwx find /var/www -type d -exec chmod 755 {} ; # 仅修改目录权限
特殊权限位
特殊权限 | 符号 | 作用场景 | 设置命令 |
---|---|---|---|
SUID | s | 临时获取属主身份执行程序 | chmod u+s /usr/bin/ping |
SGID | s | 新建文件继承属组而非属主 | chmod g+s shared_folder |
Sticky Bit | T | 仅允许属主删除/移动该目录内文件 | chmod +t /tmp |
默认权限掩码(Umask)
通过umask
控制新创建文件的默认权限:
umask 022 # 默认权限:644(文件)/755(目录) umask 077 # 最严格模式:仅属主可读写执行
密码管理全指南
修改用户密码
(1) 普通用户自助修改
passwd # 根据提示输入旧密码→新密码→确认新密码 # 密码强度要求:至少8位,包含大小写字母+数字+特殊符号
(2) root管理员修改他人密码
sudo passwd username # 无需知道原密码即可强制修改 # 输入新密码两次确认即可生效
root密码特殊处理
若需重置遗忘的root密码:
1️⃣ 重启系统 → 启动时按任意键中断GRUB引导
2️⃣ 编辑启动参数:linux single
进入单用户模式
3️⃣ 执行:mount -o remount,rw /
passwd
设置新root密码
4️⃣ 退出并重启:init 6
密码策略强化(/etc/login.defs)
参数 | 默认值 | 作用说明 |
---|---|---|
PASS_MIN_LEN | 8 | 最小密码长度 |
PASS_MAX_DAYS | 99999 | 密码有效期(天) |
PASS_MIN_DAYS | 0 | 两次修改间隔天数 |
PASS_WARN_AGE | 7 | 过期前警告天数 |
UMASK | 022 | 新建文件默认权限掩码 |
PAM认证机制增强
编辑/etc/pam.d/system-auth
添加以下行:
password required pam_pwquality.so retry=3 minlen=12 dcredit=1 ucredit=1 lcredit=1 ocredit=1 enforcing=yes # 强制要求:12位以上,包含大小写字母、数字、特殊符号各至少1个
典型场景操作示例
场景1:部署Web应用
# 1. 创建专用运行账户 sudo useradd -r -m -d /opt/app -s /bin/bash appuser # 2. 设置目录权限 sudo chown -R appuser:appuser /opt/app sudo chmod -R 750 /opt/app # 仅属主可写,同组可读执行 # 3. 限制SSH访问(可选) echo "AllowUsers appuser" | sudo tee -a /etc/ssh/sshd_config sudo systemctl restart sshd
场景2:共享协作目录
# 1. 创建共享目录并设置SGID sudo mkdir /data/teamwork sudo chmod 2770 /data/teamwork # drwxrws--- # 2. 将成员加入同一用户组 sudo usermod -aG developers alice,bob,charlie # 3. 验证效果:成员在此目录创建的文件自动属于developers组
相关问答FAQs
Q1: 为什么修改了文件权限却不生效?
A: 可能原因及解决方法:
1️⃣ ACL覆盖:检查是否有getfacl
显示的额外访问控制列表,用setfacl -b
清除
2️⃣ 挂载选项限制:若是挂载的文件系统(如NFS),需检查客户端挂载时的noexec,ro
等参数
3️⃣ SELinux拦截:执行ls -Z
查看安全上下文,尝试chcon -t httpd_sys_content_t file
调整
4️⃣ 硬链接特性:硬链接的权限修改会影响所有链接副本,可用stat
查看原始文件位置
Q2: 如何限制普通用户的sudo权限?
A: 最佳实践方案:
1️⃣ 创建专属配置文件:sudo visudo -f /etc/sudoers.d/webadmin
2️⃣ 添加精细规则:
webadmin ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx webadmin ALL=(webserv) /usr/local/bin/,!/usr/bin/rm # 解释:允许无密码重启nginx,且仅能以webserv用户执行指定目录命令(排除rm)
3️⃣ 验证配置:sudo -l -U webadmin
查看可用命令列表
4️⃣ 立即生效:sudo visudo --check
校验语法后无需重启服务
通过系统化的权限管理和密码策略,可显著提升Linux系统的安全性,建议定期执行sudo grep -v '^#' /etc/passwd
检查异常账户,并结合审计日志(`/var/log/auth.log
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/95838.html