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安装成主系统?新手详细安装步骤与注意事项有哪些?

    将Linux作为主系统使用,能带来更稳定、安全且高度可定制的操作体验,尤其适合开发者、技术爱好者或追求高效办公的用户,不过从Windows/macOS切换到Linux需要经历安装、配置和适应的过程,以下是详细步骤和注意事项,帮助你顺利完成系统迁移,安装前的准备工作在动手安装前,充分的准备能避免后续操作中的多数问……

    2025年9月16日
    6900
  • 如何查看SELinux状态?

    在Linux系统中,SELinux(Security-Enhanced Linux)是内核级别的强制访问控制安全机制,用于限制进程和用户的权限,防止恶意程序或配置错误导致系统被入侵,正确查看SELinux状态对系统管理和故障排查至关重要,以下是详细的操作方法:使用 sestatus 命令(推荐) sestatu……

    2025年7月7日
    9900
  • Linux启动IBM Db2如何确保安全?

    启动前准备环境要求已安装Db2服务器(版本推荐v11.5+)使用db2inst1实例用户(默认安装创建)确保系统内存≥2GB,磁盘空间充足检查实例状态切换至实例用户后执行:su – db2inst1 # 切换到实例用户db2ilist # 查看当前实例列表db2 get dbm cfg | grep &quot……

    2025年7月20日
    8300
  • Linux多台服务器如何实现Web负载均衡?

    核心负载均衡技术对比方案适用层级优势典型场景LVS (DR模式)网络层 (L4)高性能(百万并发)大型电商/视频平台Nginx应用层 (L7)灵活的HTTP处理中小型网站/API网关HAProxy应用层 (L7)精准的会话保持金融交易系统云服务商LB全托管免运维/自动伸缩云原生架构详细配置实践(以Nginx+H……

    2025年7月24日
    9900
  • 如何避免临时目录名称冲突?

    在Linux系统中,文件类型由系统内核根据文件元数据自动判定,无法直接通过命令将普通文件()修改为目录(d),但可通过创建新目录并迁移数据的方案实现类似效果,具体操作如下:核心原理Linux文件类型由元数据中的mode字段决定(通过ls -l首字符查看)::普通文件(Regular File)d:目录(Dire……

    2025年7月8日
    11100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信