Linux密码修改权限怎么设置

Linux中root用户可修改任意账户密码,普通用户仅能修改自身密码,管理员可通过passwd命令配置特定用户或组的密码修改权限,如使用passwd -l锁定账户或修改/etc/passwd权限限制普通用户操作。

在Linux系统中,合理设置账户密码修改权限是系统安全的核心环节,不当的权限配置可能导致未授权用户篡改他人密码、提升权限或引发安全漏洞,以下从原理到实践详细解析权限设置方法,遵循最小权限原则(Principle of Least Privilege),确保系统安全可靠。

Linux密码修改权限怎么设置


密码修改的核心机制

Linux密码管理依赖两个关键文件和命令:

  1. /etc/shadow文件
    存储加密后的密码及有效期,权限默认为-rw-r----- root shadow(仅root和shadow组可读)。
    关键权限

    • 用户修改自身密码时,需通过passwd命令间接写入此文件。
    • 直接修改此文件需root权限。
  2. passwd命令
    位于/usr/bin/passwd,默认权限为-rwsr-xr-x root roots表示SetUID权限)。

    • SetUID作用:普通用户执行时临时获得root权限,从而更新/etc/shadow

权限设置场景与操作

场景1:允许普通用户修改自身密码(默认配置)

  • 原理
    passwd命令的SetUID权限(chmod u+s /usr/bin/passwd)让用户临时以root身份写/etc/shadow
  • 验证命令
    ls -l /usr/bin/passwd  # 输出应含"-rwsr-xr-x"

场景2:禁止特定用户修改密码

方法1:撤销passwd命令执行权

Linux密码修改权限怎么设置

chmod u-s /usr/bin/passwd  # 移除SetUID(谨慎操作!将导致所有用户无法改密码)

方法2:限制单个用户
通过PAM(Pluggable Authentication Modules)控制:

  1. 编辑/etc/pam.d/passwd,添加:
    auth required pam_listfile.so item=user sense=deny file=/etc/nopasswdusers onerr=succeed
  2. 创建/etc/nopasswdusers,写入要禁止的用户名(如testuser)。

场景3:允许管理员修改任意用户密码

  • 使用passwd命令
    root用户可直接执行passwd username修改任意密码。
  • 通过sudo授权普通用户
    1. 编辑sudoers文件:visudo
    2. 添加以下配置之一:
      %admin ALL=(ALL) /usr/bin/passwd  # 允许admin组用户修改任意密码
      user1 ALL=(ALL) /usr/bin/passwd   # 允许user1修改任意密码
      user2 ALL=(root) /usr/bin/passwd user3  # 仅允许user2修改user3的密码

场景4:密码策略强化(高级)

  1. 设置密码强度
    编辑/etc/pam.d/common-password

    password requisite pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1
    • minlen=12:最小长度12位
    • ucredit=-1:至少1个大写字母
  2. 密码有效期
    修改/etc/login.defs

    PASS_MAX_DAYS 90   # 密码最长有效期
    PASS_MIN_DAYS 7    # 两次修改间隔
    PASS_WARN_AGE 14   # 过期前提醒天数

安全最佳实践

  1. 最小权限原则
    • 仅必要用户拥有sudo密码修改权。
    • 避免直接编辑/etc/shadow,使用passwdchage命令。
  2. 定期审计权限
    # 检查SetUID程序:
    find / -perm -4000 -type f -exec ls -ld {} ;
    # 检查sudo权限分配:
    sudo -l
  3. 日志监控
    通过auditdsyslog跟踪passwd命令使用情况:

    auditctl -w /usr/bin/passwd -p x -k password_change

常见问题解决

  • 问题1:用户执行passwd提示”Authentication token manipulation error”
    原因/etc/shadow权限错误或磁盘满。
    解决

    Linux密码修改权限怎么设置

    chmod 640 /etc/shadow   # 恢复默认权限
    chown root:shadow /etc/shadow
  • 问题2:移除SetUID后普通用户无法改密码
    恢复命令

    chmod u+s /usr/bin/passwd  # 重新添加SetUID位

权限场景 关键命令/配置 安全等级
用户改自身密码 保持passwd的SetUID位 高(默认)
禁止用户改密码 PAM限制或撤销SetUID 按需配置
管理员改任意密码 sudo授权passwd命令 必要
精细化控制 sudoers指定用户+命令参数 推荐

权限配置需在安全与可用性间平衡,生产环境中,结合sudo授权与PAM策略是最佳方案,既满足操作需求,又避免过度赋权,定期审查权限分配和日志,是防御内部威胁的关键步骤。

引用说明基于Linux手册页(man 5 shadowman 8 passwd)、Linux PAM官方文档及Red Hat企业安全指南,具体实施前请参考发行版文档:Linux man-pages project | Red Hat Security Hardening

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/38319.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月24日 21:10
下一篇 2025年6月24日 21:19

相关推荐

  • Linux端口状态查询教程

    在Linux中,使用ss -tuln或netstat -tuln命令查看端口监听状态,ss -tupn或netstat -tupn查看所有连接状态(含进程),状态LISTEN表示端口正在监听,ESTABLISHED表示活跃连接。

    2025年6月8日
    000
  • Linux如何查看文件字符数?

    使用wc -m命令查看文件字符数,示例:wc -m filename显示单个文件字符数;wc -m file1 file2统计多个文件,也可通过管道符统计文本流字符数,如echo “文本” | wc -m。

    2025年6月3日
    300
  • Ubuntu/CentOS如何快速添加用户到sudo组?

    使用root权限编辑/etc/sudoers文件,在%wheel或%sudo组配置行取消注释(或添加用户),保存退出即可赋予该用户sudo权限。

    2025年6月18日
    100
  • Linux怎样快速升级GCC?

    在Linux中升级GCC,可通过包管理器安装官方仓库新版本(如sudo apt install gcc-X),或添加第三方PPA(如Ubuntu Toolchain)获取最新版,也可下载源码编译安装,但需注意依赖和配置。

    2025年6月13日
    100
  • Linux怎么切换root用户?

    使用su命令输入root密码切换到root用户,或通过sudo su、sudo -i(需当前用户有sudo权限)直接切换,操作完成后务必及时退出,避免安全风险。

    2025年6月20日
    300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN