插件窝 干货文章 linux怎么锁定用户

linux怎么锁定用户

用户名 锁定 用户 sudo 217    来源:    2025-04-06

在 Linux 系统中锁定用户账户可以通过多种方法实现,以下是常用的几种方式及其详细说明:


1. 使用 passwd 命令锁定密码(推荐)

sudo passwd -l 用户名
  • 作用:禁用用户的密码登录,但账户仍存在(用户可能仍能通过其他方式登录,如 SSH 密钥)。
  • 解锁用户bash sudo passwd -u 用户名

2. 使用 usermod 命令锁定账户

sudo usermod --expiredate 1 用户名
  • 作用:将账户的过期时间设为 1970-01-01,立即失效。
  • 解锁用户bash sudo usermod --expiredate "" 用户名

3. 修改 /etc/shadow 文件(手动)

/etc/shadow 中找到相应用户行,在密码字段前添加 !!!

sudo vipw -s  # 安全编辑 shadow 文件
  • 锁定示例
    原内容:
    username:$6$...:19475:0:99999:7:::
    修改后:
    username:!$6$...:19475:0:99999:7:::
  • 解锁:删除 !!!

4. 使用 chage 命令设置账户过期

sudo chage -E0 用户名
  • 作用:将账户过期时间设为 1970-01-01(等同于锁定)。
  • 解锁bash sudo chage -E -1 用户名 # 清除过期时间

5. 禁用用户的 Shell(阻止登录)

sudo usermod -s /usr/sbin/nologin 用户名
  • 作用:用户尝试登录时会显示 This account is currently not available
  • 恢复bash sudo usermod -s /bin/bash 用户名

6. 结合多种方式(严格锁定)

如果需要彻底禁止用户访问,可以同时: 1. 锁定密码:sudo passwd -l 用户名 2. 禁用 Shell:sudo usermod -s /usr/sbin/nologin 用户名 3. 禁止 SSH 登录(如有需要): bash echo "DenyUsers 用户名" | sudo tee -a /etc/ssh/sshd_config sudo systemctl restart sshd


验证锁定状态

sudo passwd -S 用户名
  • 输出示例:
    username L 2023-01-01 0 99999 7 -1L 表示锁定)

注意事项

  • root 用户:无法直接锁定 root,需通过限制 sudo 或 SSH 配置实现。
  • 进程处理:锁定用户不会终止其已运行的进程,需手动检查: bash ps -u 用户名 killall -u 用户名 # 谨慎操作
  • 备份数据:锁定前建议备份用户的重要文件。

根据需求选择合适的方法,通常 passwd -lusermod -s /usr/sbin/nologin 已能满足多数场景。