Linux系统如何锁定用户账户以保障安全?

在Linux系统中,锁定用户是一项常见的安全管理操作,通常用于临时或永久禁止用户访问系统,例如应对安全事件、员工离职、权限调整等场景,Linux提供了多种用户锁定方法,涵盖密码锁定、登录限制、SSH访问控制等多个维度,本文将详细介绍这些方法的具体操作、适用场景及注意事项。

linux如何锁定用户

通过passwd命令锁定用户密码

passwd命令是Linux中最基础的用户密码管理工具,支持直接锁定或解锁用户密码,操作简单且兼容所有主流发行版(如Ubuntu、CentOS、Debian等)。

操作步骤

  1. 锁定用户密码
    以root权限或sudo执行以下命令,将用户username的密码字段锁定:

    passwd -l username

    执行后,系统会修改/etc/shadow文件中该用户密码字段的第一个字符为,
    原始密码字段:$6$abc123$def456...
    锁定后:!$6$abc123$def456...
    此时用户无法通过密码、SSH(密码登录)、su等方式认证登录。

  2. 解锁用户密码
    若需恢复用户密码登录权限,使用-u参数解锁:

    passwd -u username

    解锁后,/etc/shadow中的密码字段恢复原状,用户可使用原密码登录。

适用场景

  • 临时禁止用户登录(如员工休假期间);
  • 需快速锁定密码且无需修改其他登录方式时。

注意事项

  • 仅锁定密码,不影响用户的其他权限(如sudo、cron任务);
  • 若用户通过SSH密钥登录,此方法无效,需额外配置SSH访问控制。

通过usermod命令锁定用户账户

usermod命令是Linux用户账户管理的核心工具,支持通过-L(锁定)和-U(解锁)参数直接操作用户账户状态,本质与passwd -l/-u类似,但可与其他参数组合实现更灵活的控制。

操作步骤

  1. 锁定用户账户

    usermod -L username

    该命令会锁定用户密码(与passwd -l效果一致),并在某些系统中可能修改/etc/shadow/etc/passwd中的相关字段。

  2. 解锁用户账户

    usermod -U username

    解锁用户密码,恢复登录权限。

适用场景

  • 需结合usermod其他参数(如-s修改默认shell、-d修改家目录)进行账户管理时;
  • 与批量用户管理脚本配合使用,实现自动化锁定/解锁。

注意事项

  • 不同发行版中usermod -L的实现可能略有差异,建议结合passwd -l双重确认;
  • 锁定后,用户仍可能通过某些服务(如FTP、Samba)登录,需额外配置服务级访问控制。

通过chage命令设置密码过期锁定

chage命令用于修改用户密码过期策略,通过设置密码强制过期时间,可实现“临时锁定”效果——用户需在下次登录时修改密码,否则无法认证。

操作步骤

  1. 设置密码立即过期

    chage -E 0 username

    -E参数指定密码过期日期,0表示“已过期”,用户下次登录时会被要求修改密码,若不修改则无法登录。

  2. 设置密码过期时间(临时锁定)
    设置用户密码在2024-12-31过期:

    linux如何锁定用户

    chage -E 2024-12-31 username

    过期后用户需管理员手动解锁(chage -E -1 username恢复无限制状态)或修改密码。

  3. 查看密码过期策略

    chage -l username

    输出包括密码过期日期、最小/最大使用天数等信息。

适用场景

  • 临时限制用户登录(如试用期结束);
  • 强制用户定期修改密码,配合密码策略增强安全性。

注意事项

  • 密码过期后,用户仍可通过SSH密钥登录(若未禁用),需结合SSH访问控制;
  • 解锁时需将-E参数设置为-1(表示无过期限制)。

通过nologin文件禁止交互式登录

Linux系统允许通过创建/etc/nologin文件禁止所有非root用户进行交互式登录(包括本地登录和SSH远程登录),适用于系统维护或紧急场景。

操作步骤

  1. 创建nologin文件
    以root权限创建文件并添加提示信息(可选):

    echo "System is under maintenance. Please try again later." > /etc/nologin
    ```  会显示给尝试登录的用户,提升用户体验。
  2. 允许特定用户登录(可选)
    若需允许root或特定用户登录,可在/etc/nologin文件中添加用户名(每行一个),但此方法依赖具体发行版支持,更推荐通过PAM模块实现精细控制。

  3. 删除nologin文件恢复登录

    rm /etc/nologin

    删除后所有用户可恢复正常交互式登录。

适用场景

  • 系统维护期间禁止普通用户登录;
  • 紧急情况下快速限制所有非特权用户访问。

注意事项

  • 仅禁止交互式登录,不影响后台服务(如www-data用户运行的Web服务);
  • root用户始终可绕过/etc/nologin限制。

通过PAM模块实现基于失败次数的自动锁定

Linux可插认证模块(PAM)支持基于登录失败次数的自动锁定,可有效防止暴力破解攻击,需配置pam_tally2pam_faillock模块(不同发行版默认模块不同)。

以CentOS(pam_tally2)为例

  1. 查看当前PAM配置
    编辑/etc/pam.d/login文件(或对应服务的PAM配置文件,如sshd):

    vim /etc/pam.d/login
  2. 添加失败计数与锁定规则
    auth段落中添加以下两行(需放在pam_unix.so之前):

    auth required pam_tally2.so deny=5 unlock_time=1800
    auth required pam_deny.so

    参数说明:

    • deny=5:允许5次失败尝试,第6次触发锁定;
    • unlock_time=1800:锁定30分钟后自动解锁(单位:秒,设置为0则需手动解锁)。
  3. 手动解锁用户(可选)

    pam_tally2 -u username --reset

以Ubuntu(pam_faillock)为例

  1. 编辑PAM配置
    /etc/pam.d/common-auth中添加:

    linux如何锁定用户

    auth    [success=1 default=ignore]      pam_faillock.so authfail deny=5 unlock_time=1800
    auth    sufficient                      pam_unix.so nullok try_first_pass
    auth    [default=die]                   pam_faillock.so authfail deny=5 unlock_time=1800
  2. 查看/解锁失败记录

    pam_faillock --user username --reset

适用场景

  • 防止暴力破解攻击;
  • 对高风险用户账户实施自动安全管控。

注意事项

  • 需确保PAM模块已安装(如libpam_tally2libpam-faillock);
  • 锁定后需检查/var/log/auth.log确认失败记录,避免误锁。

通过SSH配置锁定远程登录

若仅需禁止用户通过SSH远程登录,可通过修改SSH配置或用户SSH密钥实现。

方法1:修改sshd_config配置

编辑/etc/ssh/sshd_config文件,添加以下行:

DenyUsers username

或针对特定用户组:

DenyGroup ssh-disabled

保存后重启SSH服务:

systemctl restart sshd

方法2:移除用户SSH密钥

删除用户家目录下的SSH授权密钥:

rm /home/username/.ssh/authorized_keys

若用户使用密钥认证,此操作可禁止其SSH登录。

适用场景

  • 仅需禁止远程SSH访问,保留本地登录权限;
  • 用户离职后清理远程访问权限。

注意事项

  • DenyUsers需重启SSH服务生效;
  • 移除密钥后,用户需重新上传密钥才能恢复SSH登录(若未禁用)。

用户锁定方法对比总结

方法 适用场景 核心命令 锁定效果 解锁方式
passwd命令 快速锁定/解锁密码 passwd -l/-u username 禁止密码认证 passwd -u username
usermod命令 账户状态管理(结合其他参数) usermod -L/-U username 锁定密码(与passwd一致) usermod -U username
chage命令 密码过期策略控制 chage -E 0 username 密码过期需修改才能登录 chage -E -1 username
nologin文件 系统维护时禁止交互登录 echo "msg" > /etc/nologin 禁止所有非root交互登录 rm /etc/nologin
PAM模块(自动锁定) 防暴力破解,基于失败次数锁定 配置pam_tally2.so/pam_faillock.so 达到阈值自动锁定 pam_tally2 --resetpam_faillock --reset
SSH配置 仅禁止远程SSH登录 DenyUsers username+重启sshd 禁止SSH远程访问 修改sshd_config或恢复密钥

注意事项

  1. 验证锁定状态
    锁定后需通过多种方式验证:尝试本地登录(su username)、SSH远程登录、检查/etc/shadow文件(密码字段是否为)、查看PAM模块日志(/var/log/auth.log)。

  2. 发行版差异
    不同发行版的PAM模块默认配置可能不同(如CentOS用pam_tally2,Ubuntu用pam_faillock),需提前确认。

  3. 权限清理
    锁定用户后,需检查其是否具有sudo权限、cron任务、服务账户权限等,必要时通过visudo修改sudoers文件或清理/etc/cron.d中的任务。

  4. 临时vs永久锁定
    临时锁定(如chage -E 0、PAM自动解锁)适合短期场景,永久锁定(passwd -lusermod -L)适合离职等长期场景,需根据需求选择。

相关问答FAQs

Q1:Linux用户锁定后,如何确认锁定是否成功?
A1:可通过以下方式确认:

  • 检查/etc/shadow文件:锁定后,对应用户的密码字段首字符应为(如!$6$abc123...);
  • 尝试登录:本地使用su username切换用户,或通过SSH远程登录,若提示“Authentication failed”或“Permission denied”则锁定成功;
  • 查看PAM日志:执行grep username /var/log/auth.log,若包含“failed password”或“account locked”等信息,则确认锁定。

Q2:锁定用户后,该用户是否还能通过SSH密钥登录?如何彻底禁止SSH登录?
A2:若仅通过passwd -lusermod -L锁定密码,用户仍可能通过SSH密钥认证登录(若密钥已添加到~/.ssh/authorized_keys),彻底禁止SSH登录需结合以下方法:

  • 方法1:修改SSH配置,在/etc/ssh/sshd_config中添加DenyUsers username,保存后重启sshd服务;
  • 方法2:删除用户家目录下的SSH授权密钥:rm /home/username/.ssh/authorized_keys
  • 方法3:若用户使用密钥认证,可将其密钥从服务器端彻底移除,或通过AuthorizedKeysCommand动态控制密钥列表。

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

(0)
酷番叔酷番叔
上一篇 2025年9月26日 19:31
下一篇 2025年9月26日 19:53

相关推荐

  • linux如何开启dhcp

    Linux中,可以使用命令sudo systemctl start dhcpd或sudo service dhcpd start来开启

    2025年8月16日
    3500
  • Linux top命令如何翻页查看更多进程信息?

    在Linux系统中,top命令是一个动态监控进程的工具,能够实时显示系统中运行的进程信息,包括进程ID(PID)、CPU占用率、内存使用量、命令名称等,当系统中的进程数量较多时,一屏无法完整显示所有进程信息,此时需要掌握top的翻页操作,以便查看完整的进程列表,本文将详细介绍top命令中翻页的具体方法、相关快捷……

    2025年9月13日
    2900
  • Linux里打开文件夹的具体方法是什么?命令行和图形界面如何操作?

    在Linux操作系统中,文件夹(目录)是文件管理的基本单元,掌握打开文件夹的方法是高效使用系统的基础,无论是图形化界面还是命令行环境,Linux都提供了多种灵活的打开方式,满足不同用户的使用习惯和需求,本文将详细介绍这些方法,涵盖图形界面、命令行工具及终端文件管理器等场景,帮助用户根据实际场景选择最合适的操作方……

    2025年9月21日
    2000
  • linux远程如何找到主机名

    Linux远程连接中,可通过hostname命令查看主机名,也可查看

    2025年8月16日
    3500
  • 在Linux操作系统中,如何打开并启动VirtualBox的虚拟机管理程序?

    在Linux系统中使用VirtualBox可以方便地运行虚拟机,无论是进行软件开发、系统测试还是学习其他操作系统,VirtualBox都提供了强大的支持,要在Linux下成功打开并使用VirtualBox,需要经过安装、配置等步骤,本文将详细介绍整个过程,包括安装前的准备、不同Linux发行版的安装方法、启动V……

    2025年8月29日
    2800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信