Linux操作系统里设置用户口令的正确方法是什么?详细操作步骤有哪些?

Linux系统下,用户口令是保障系统安全的核心屏障,合理设置和管理用户口令能有效防止未授权访问,本文将详细介绍Linux系统中设置用户口令的多种方法、密码策略配置及常见场景处理,帮助用户全面掌握口令管理技能。

linux如何设置用户口令

基础口令设置命令

使用passwd命令修改/设置口令

passwd是Linux中最常用的口令管理工具,普通用户可用于修改自身口令,root用户可修改任意用户口令。

  • 普通用户修改自身口令
    执行passwd命令后,系统会提示输入当前口令(验证身份),然后要求输入新口令两次(确认输入),新口令需满足系统默认的复杂度要求(如长度、字符类型),若不符合会提示重新输入。

    $ passwd
    Changing password for user username.
    Current password: 
    New password: 
    Retype new password: 
    passwd: password updated successfully
  • root用户修改其他用户口令
    root用户可直接为指定用户设置口令,无需输入该用户当前口令,且可绕过复杂度检查(不推荐,存在安全风险)。

    # sudo passwd username(普通用户通过sudo执行)
    # passwd username(root用户直接执行)
    New password: 
    Retype new password: 
    passwd: password updated successfully
  • passwd命令常用选项
    | 选项 | 作用 |
    |——|——|
    | -l | 锁定用户口令,禁止用户登录(如passwd -l username) |
    | -u | 解锁用户口令(如passwd -u username) |
    | -d | 删除用户口令,用户无需口令即可登录(仅限临时场景,不推荐) |
    | -e | 强制用户下次登录时修改口令(如passwd -e username) |
    | -S | 显示用户口令状态(如是否锁定、过期时间等,passwd -S username) |

使用useradd/usermod命令创建用户时设置口令

  • 创建用户并直接设置口令
    useradd命令的-p选项可在创建用户时直接指定口令,但需注意:-p后接的是加密后的口令(明文口令会被直接作为字符串存储,存在安全风险),推荐通过opensslmkpasswd工具生成加密口令:

    # 使用openssl生成SHA-512加密口令(默认加密方式)
    useradd -p "$(openssl passwd -6 明文密码)" username
    # 使用mkpasswd生成加密口令(需安装whois包:apt install whois/yum install whois)
    useradd -p "$(mkpasswd 明文密码)" username
  • 为已存在用户设置口令
    使用usermod命令的-p选项可为现有用户修改口令,同样需传入加密口令:

    usermod -p "$(openssl passwd -6 新密码)" username

高级密码策略配置

默认情况下,Linux系统对口令复杂度和有效期要求较宽松,生产环境中需通过系统级配置强化安全性。

通过/etc/login.defs配置全局策略

该文件定义了用户创建时的默认口令策略,参数对后续创建的用户生效(已存在用户需单独修改),常用参数:
| 参数 | 作用 | 默认值 |
|——|——|——–|
| PASS_MAX_DAYS | 口令有效期(天) | 99999(永不过期) |
| PASS_MIN_DAYS | 修改口令最小间隔天数(防止频繁修改) | 0 |
| PASS_MIN_LEN | 口令最小长度(若为0,则由pam_cracklib模块控制) | 8(部分系统为0) |
| PASS_WARN_AGE | 口令过期前警告天数(提前提醒用户修改) | 7 |

linux如何设置用户口令

示例:修改/etc/login.defs,设置口令每90天过期,最少间隔7天可修改,提前14天警告:

PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14

通过/etc/pam.d/passwd强化复杂度

pam_cracklib模块可强制口令包含复杂字符(大小写字母、数字、特殊符号),配置文件为/etc/pam.d/passwd(不同发行版可能为/etc/pam.d/common-password),示例配置:

password requisite pam_cracklib.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 retry=3

参数说明:

  • minlen=8:口令最小长度8位;
  • ucredit=-1:至少包含1个大写字母(-1表示“至少1个”,-2表示至少2个,以此类推);
  • lcredit=-1:至少包含1个小写字母;
  • dcredit=-1:至少包含1个数字;
  • ocredit=-1:至少包含1个特殊字符(如!@#$%^&*);
  • retry=3:允许输错口令的次数。

若需禁止使用常见弱口令(如“123456”“password”),可添加pam_pwquality模块(需安装libpwquality包):

password requisite pam_pwquality.so minlen=8 maxrepeat=3 maxclassrepeat=3 reject_username
  • maxrepeat=3:相同字符连续出现不超过3次;
  • maxclassrepeat=3:同一类字符(如大写字母)连续出现不超过3次;
  • reject_username:禁止口令中包含用户名。

使用chage命令管理口令有效期

chage命令可修改用户口令策略(针对已存在用户),常用选项:
| 选项 | 作用 |
|——|——|
| -m | 修改口令最小间隔天数 |
| -M | 修改口令最大有效期(天) |
| -W | 修改口令过期前警告天数 |
| -I | 修改口令过期后锁定天数(用户未修改口令则锁定) |
| -E | 设置账号过期日期(格式YYYY-MM-DD) |
| -d | 修改上次口令修改时间(用于强制用户下次登录改口令) |

示例:设置用户test的口令每60天过期,最少间隔10天可修改,提前7天警告,过期后5天锁定:

chage -m 10 -M 60 -W 7 -I 5 test

强制用户test下次登录时修改口令:

chage -d 0 test

常见场景处理

忘记root口令如何重置?

  • CentOS/RHEL系统

    linux如何设置用户口令

    1. 重启系统,在GRUB启动界面按e键进入编辑模式;
    2. 找到linux16linuxefi行,在行尾添加rd.break,按Ctrl+X启动;
    3. 系统进入紧急模式,执行mount -o remount,rw /sysroot,切换到chroot环境:chroot /sysroot
    4. 使用passwd修改root口令,执行touch /.autorelabel( SELinux系统需重新标记文件,否则可能无法登录);
    5. 执行exit,输入reboot重启系统。
  • Ubuntu/Debian系统

    1. 重启系统,在GRUB界面长按Shift(若未显示GRUB,可修改/etc/default/grub中的GRUB_HIDDEN_TIMEOUT=0GRUB_HIDDEN_TIMEOUT=5并更新GRUB);
    2. 选择Advanced options,进入Recovery模式,选择“root Drop to root shell prompt”;
    3. 执行mount -o remount,rw /,使用passwd修改root口令,输入reboot

批量设置用户口令

通过chpasswd命令可从文件批量读取用户名和口令(格式:用户名:口令),实现批量设置,示例:

  1. 创建密码文件passwd.txt(确保文件权限为600,避免泄露):
    echo "user1:password1" > passwd.txt
    echo "user2:password2" >> passwd.txt
    chmod 600 passwd.txt
  2. 使用chpasswd批量导入:
    chpasswd < passwd.txt

    若口令为加密格式,需添加-e选项:chpasswd -e < passwd.txt

注意事项

  1. 避免弱口令:口令应包含12位以上字符,组合大小写字母、数字、特殊符号,避免使用生日、姓名等常见信息。
  2. 定期更换口令:生产环境中建议通过PASS_MAX_DAYS设置口令有效期(如90天),结合chage命令定期提醒用户修改。
  3. 加密存储:Linux口令存储在/etc/shadow文件中,采用SHA-512加密(默认),禁止手动修改该文件,需通过passwd/usermod等命令操作。
  4. 权限控制:普通用户仅能修改自身口令,root用户拥有最高权限,建议通过sudo分配管理权限,避免直接使用root账号日常操作。

相关问答FAQs

Q1:Linux系统提示“Authentication token manipulation error”是什么原因?如何解决?
A:该错误通常是由于/etc/shadow文件权限不正确导致的(正常应为000,仅root可读写),解决方法:执行chmod 000 /etc/shadow(错误操作需先恢复权限:chmod 600 /etc/shadow),然后检查文件是否有异常字符或损坏,必要时从备份恢复。

Q2:如何禁止用户通过SSH使用口令登录,改用密钥认证?
A:编辑SSH配置文件/etc/ssh/sshd_config,将PasswordAuthentication yes修改为PasswordAuthentication no,保存后重启SSH服务:systemctl restart sshd,同时确保用户已上传公钥至~/.ssh/authorized_keys文件(权限需为600),这样用户只能通过私钥登录,无法使用口令,提升安全性。

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

(0)
酷番叔酷番叔
上一篇 2025年9月28日 12:40
下一篇 2025年9月28日 12:59

相关推荐

  • 如何找回编译安装的源码目录?

    在Linux系统中,删除通过编译安装(源码安装)的软件需要手动操作,因为这类软件不会在包管理器(如apt、yum)中注册信息,以下是详细步骤和注意事项,确保安全彻底地卸载:理想情况:使用源码目录卸载如果仍保留软件的源代码目录,且支持make uninstall:# 2. 执行卸载命令(需保留原始的Makefil……

    2025年7月24日
    14900
  • 在Linux操作系统中,如何查看当前配置的网关地址信息?

    在Linux系统中,网关(Gateway)是网络通信的关键节点,用于连接不同网络段,当目标地址不在本地网络时,数据包会通过网关转发到其他网络,查看网关信息是网络配置和故障排查的基础操作,本文将详细介绍Linux系统中查看网关的多种方法,涵盖常用命令、配置文件及网络管理工具,帮助用户根据不同场景灵活选择,使用ip……

    2025年9月22日
    11200
  • Linux父进程怎么查?多种方法详解

    使用 pstree 命令(推荐)作用:以树形结构直观展示进程关系,直接显示父进程和子进程的层级,命令示例:pstree -p <进程PID> # 查看指定进程的父子关系pstree -s <进程PID> # 高亮显示指定进程及其父进程输出示例:systemd(1)───sshd(1234……

    2025年8月4日
    10400
  • Linux系统中如何安全删除用户账户及关联数据?

    在Linux系统中,删除账户是一项需要谨慎操作的管理任务,通常用于清理不再使用的用户账号,确保系统安全性和资源合理利用,删除账户不仅涉及用户本身,还可能关联到家目录、邮件文件、配置文件等数据,因此需要遵循正确的步骤和注意事项,避免误操作导致数据丢失或系统异常,删除账户前的准备工作在执行删除操作前,需完成以下准备……

    2025年9月16日
    11400
  • 变量赋值为何对初学者如此重要?

    在Linux系统中,变量赋值是脚本编程和系统管理的核心操作之一,它允许用户存储数据、传递参数、控制程序行为,并为自动化任务提供灵活性,以下是关于Linux变量赋值的详细指南,内容严格遵循Bash语法(最常用的Shell环境),并涵盖实际应用场景,在Linux Shell中(以Bash为例),变量赋值的基本规则如……

    2025年7月19日
    14700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信