当前位置: 首页 > news >正文

Linux 命令:passwd

Linux passwd 命令详细教程

  • passwd(Password Change)是 Linux 系统中用于管理用户密码的核心命令。它允许用户修改自己的密码,或由系统管理员重置其他用户的密码。本文将详细介绍其用法、选项及安全配置。
  • 资料已经分类整理好:https://pan.quark.cn/s/26d73f7dd8a7
一、基本语法
passwd [选项] [用户名]
  • 核心功能
    • 修改当前用户的密码(无参数时)。
    • 管理员修改其他用户的密码(需指定用户名)。
    • 配置密码过期策略、锁定/解锁账户等。
二、常用选项
选项功能描述
-l锁定用户账户(L ock)
-u解锁用户账户(U nlock)
-d删除用户密码(D elete),使用户可以无密码登录(慎用)
-e强制用户下次登录时修改密码(E xpire)
-n 天数设置密码最短使用天数(N ot before)
-x 天数设置密码最长使用天数(E X pire)
-w 天数设置密码过期前的警告天数(W arning)
-i 天数设置密码过期后的宽限天数(I nactive)
--stdin从标准输入读取密码(用于脚本自动化)
三、实际操作示例
1. 修改当前用户密码
passwd  # 系统会提示输入当前密码(若已设置)和新密码

交互过程示例

Changing password for user testuser.
(current) UNIX password:  # 输入当前密码
Enter new UNIX password:  # 输入新密码
Retype new UNIX password:  # 再次输入确认
passwd: password updated successfully  # 密码更新成功
2. 管理员修改其他用户密码
sudo passwd username  # 管理员无需知道原密码,直接设置新密码
3. 锁定/解锁用户账户
sudo passwd -l username  # 锁定账户,无法登录
sudo passwd -u username  # 解锁账户,恢复正常
  • 锁定后,用户密码会被加密存储为 !*(取决于系统)。
4. 强制用户下次登录时修改密码
sudo passwd -e username  # 下次登录时必须修改密码
5. 从标准输入设置密码(脚本自动化)
echo "newpassword" | sudo passwd --stdin username  # 危险!密码可能泄露在命令历史中
  • 安全替代方案(使用 chpasswd):
    echo "username:newpassword" | sudo chpasswd
    
四、密码策略配置

Linux 通过 /etc/login.defs 和 PAM(Pluggable Authentication Modules)模块管理密码策略。

  1. 设置密码复杂度(通过 PAM 模块)
    编辑 /etc/pam.d/common-password,添加或修改以下行:

    password requisite pam_pwquality.so retry=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
    
    • 参数说明:
      • minlen=8:密码最小长度为 8。
      • ucredit=-1:至少包含 1 个大写字母。
      • lcredit=-1:至少包含 1 个小写字母。
      • dcredit=-1:至少包含 1 个数字。
      • ocredit=-1:至少包含 1 个特殊字符。
  2. 设置密码有效期
    编辑 /etc/login.defs

    PASS_MAX_DAYS   90   # 密码最大有效期(天)
    PASS_MIN_DAYS   7    # 密码最小有效期(天)
    PASS_WARN_AGE   14   # 密码过期前警告天数
    
五、查看密码状态

使用 chage 命令查看或修改用户密码状态:

chage -l username  # 查看用户密码信息

输出示例

Last password change                    : May 01, 2025
Password expires                        : never
Password inactive                       : never
Account expires                         : never
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7
六、注意事项
  1. 密码安全建议

    • 使用长密码(至少 12 字符),包含大小写字母、数字和特殊符号。
    • 避免使用与个人信息相关的密码(如生日、姓名)。
    • 定期更换密码(根据组织安全策略)。
  2. 管理员权限

    • 管理员可绕过密码复杂度检查,直接设置弱密码(需谨慎)。
  3. 密码存储位置

    • 加密后的密码存储在 /etc/shadow(需 root 权限访问)。
  4. 安全风险

    • 使用 --stdin 选项时,密码可能泄露在 shell 历史记录或日志中。
七、总结

passwd 是 Linux 系统中管理用户密码的核心工具,核心用法可总结为:

  • 修改密码passwd(普通用户)或 sudo passwd username(管理员)。
  • 锁定账户sudo passwd -l username
  • 强制密码过期sudo passwd -e username
  • 自动化设置echo "user:pass" | sudo chpasswd

合理配置密码策略和定期审计用户密码是系统安全的重要组成部分。建议结合 PAM 模块和 /etc/login.defs 实现符合组织安全标准的密码管理。

http://www.lryc.cn/news/588899.html

相关文章:

  • WPF中ListView控件详解
  • 牛客:HJ23 删除字符串中出现次数最少的字符[华为机考][字符串]
  • Linux部署Python服务
  • langchain教程10:LCEL
  • 阿里云 Kubernetes 的 kubectl 配置
  • 深入理解设计模式之外观模式:简化复杂系统的艺术
  • 企业培训视频如何做内容加密防下载防盗录(功能点整理)
  • 优雅的Java:01.数据更新如何更优雅
  • 2025开放原子开源生态大会 | openKylin的技术跃迁和全球协作
  • 2025阿里云黑洞恢复全指南:从应急响应到长效防御的实战方案
  • CentOS服务器安装Supervisor使队列可以在后台运行
  • 2.3 数组与字符串
  • QGIS新手教程9:字段计算器进阶用法与批量处理技巧
  • HTTP性能优化实战技术
  • 串口通信性能优化
  • golang语法-----变量、常量
  • Go语言统计字符串中每个字符出现的次数 — 简易频率分析器
  • 解锁Redis:从安装到配置的全攻略
  • DBeaver 传输数据库A数据到数据库B
  • LLM指纹底层技术——特征提取
  • 06-C语言:第06天笔记
  • python的广东省家庭旅游接待信息管理系统
  • 文心一言4.5开源模型测评:ERNIE-4.5-0.3B超轻量模型部署指南
  • NineData 社区版 V4.3.0 正式发布!新增 5 条迁移对比链路,全面支持 MariaDB、GaussDB 等数据库
  • 使用python的pillow模块将图片转化为灰度图,获取值和修改值
  • Redis Desktop Manager(RDM)下载与安装使用教程
  • STM32小实验二--流水灯
  • 【R语言】警告conversion failure on ‘中文字符‘ in ‘mbcsToSbcs‘: for 注 (U+6CE8)
  • 海狸IM - 一个功能完整的开源即时通讯系统
  • DeepSWE:通过强化学习扩展训练开源编码智能体