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系统中,合理分配文件权限是系统安全的核心机制之一,为用户分配读权限(Read Permission)允许用户查看文件内容或列出目录内容,同时避免未授权修改,以下是详细操作指南:理解Linux权限基础Linux权限分为三类身份:所有者(Owner):文件创建者/拥有者所属组(Group):文件关联的用……

    2025年8月8日
    3500
  • 如何轻松升级所有软件含GTK?

    在Linux系统中升级GTK(GIMP Toolkit)是开发者和高级用户常见的需求,尤其是为了支持新版应用或修复兼容性问题,以下是安全可靠的升级方法,涵盖不同发行版的最佳实践,操作前请备份重要数据,避免系统不稳定,升级前的关键准备检查当前GTK版本终端执行:gtk-launch –version # 或 p……

    2025年6月25日
    5400
  • 如何从Linux服务器下载文件?常用方法有哪些?

    从Linux服务器下载文件是日常运维和开发中的常见操作,根据服务器环境、文件大小及安全需求,可选择多种命令行工具实现,本文将详细介绍几种主流下载方法,包括原理、语法、参数及实际应用场景,帮助用户高效完成文件传输任务,基于SSH的安全传输:scp与rsyncscp(Secure Copy)scp是利用SSH协议进……

    2025年9月30日
    1700
  • linux命令如何定位日志

    Linux中,可使用find命令结合时间范围等条件定位日志文件,也可通过

    2025年8月10日
    2600
  • 如何在linux分包压缩

    Linux 中,可先创建分包(如用 tar 分割文件),再用 gzip 等工具压缩各分包,

    2025年8月9日
    3500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信