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查找文件如何选高效工具?

    find 命令(最强大的递归搜索)适用场景:按名称、类型、时间等条件深度搜索目录,基础语法:find [路径] [选项] [表达式]常用示例:按名称查找(区分大小写): find /home -name "*.conf" # 搜索/home下所有.conf文件忽略大小写: find /var……

    2025年7月16日
    8300
  • linux 编辑如何保存退出命令行

    Linux 中,编辑文件后保存退出的命令行操作通常是:按 Esc

    2025年8月15日
    5200
  • 为什么我的Linux进不了桌面?

    前提条件已安装桌面环境常见桌面环境:GNOME(Ubuntu默认)、KDE Plasma(Kubuntu)、XFCE(Xubuntu)、Cinnamon(Linux Mint)等,验证是否安装:终端执行 ls /usr/share/xsessions/,若返回 .desktop 文件(如 gnome.deskt……

    2025年6月22日
    6600
  • 为什么fstab需要noexec选项?

    为什么需要重新挂载分区?修改挂载参数:例如将只读(ro)改为读写(rw),或禁用可执行权限(noexec),修复文件系统:当分区因异常变为只读时,重新挂载可恢复读写,调整安全设置:临时限制敏感目录的执行权限(如/tmp),避免重启:无需中断服务即可应用新配置,操作步骤查看当前挂载信息 mount | grep……

    2025年7月7日
    8200
  • 如何在Linux操作系统下通过终端编写、编译和运行C语言程序?

    在Linux环境下使用C语言开发程序是许多开发者和学习者的基础技能,其流程涵盖环境搭建、代码编写、编译调试及项目管理等环节,以下从实际操作角度详细展开说明,开发环境准备Linux系统通常自带GCC(GNU Compiler Collection)编译器,但需确认是否安装,打开终端,输入gcc –version……

    2025年9月21日
    4200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信