• 技术文章 >运维 >linux运维

    linux用户密码存放在哪个文件

    青灯夜游青灯夜游2023-03-03 10:09:20原创315

    linux用户密码存放在“/etc/shadow”文件中。“/etc/shadow”文件又称为“影子文件”,用于存储Linux系统中用户的密码信息;该文件只有root用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。

    本教程操作环境:linux7.3系统、Dell G3电脑。

    linux用户密码存放在“/etc/shadow”文件中。

    Linux /etc/shadow(影子文件)

    /etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。

    由于/etc/passwd 文件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了此文件中。

    /etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。

    注意,如果这个文件的权限发生了改变,则需要注意是否是恶意攻击。

    执行如下命令,打开/etc/shadow 文件看看:

    vim /etc/shadow
    root: $6$9w5Td6lg
    $bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fl38RH15wzVoom ff9isV1 PzdcXmixzhnMVhMxbvO:15775:0:99999:7:::
    bin:*:15513:0:99999:7:::
    daemon:*:15513:0:99999:7:::
    …省略部分输出…

    同 /etc/passwd 文件一样,文件中每行代表一个用户,同样使用 ":" 作为分隔符,不同之处在于,每行用户信息被划分为 9 个字段。每个字段的含义如下:

    用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

    1.png

    修改密码:passwd

    //m.sbmmt.com/link/08af0398d15fb438a439f024e443b059
    //m.sbmmt.com/link/0f443201cbd1f35c5b374a282180e210

    passwd命令用于更新/etc/shadow文件中用户的身份验证令牌。

    2.png

    # 当前用户修改密码,直接使用passwd
    passwd
    
    # 为其他用户修改密码
    passwd 用户名

    锁定用户的密码

    禁用用户
    passwd命令用于更新/etc/shadow文件中用户的身份验证令牌。

    //m.sbmmt.com/link/42c4d9f00d36696504b5d3f76c5dd154

    # 锁定用户的密码
    passwd -l daygeek
    ## 回显
    Locking password for user daygeek.
    passwd: Success
    
    # 查看用户的密码锁定状态
    passwd -S daygeek
    
    # 解锁用户的密码
    passwd -u daygeek

    查看账号的密码状态

    # 查看账号的密码状态
    passwd -S root

    帐户密码状态的简短信息。

    在这里插入图片描述

    非交互式修改密码

    单引号' ',双引号" "区别:

    # 用echo写入新密码到passwd中
    ## passwd --stdin:从标准输入(比如管道)写入密码
    
    # echo双引号不要使用特殊字符,比如!,会被转义
    ## echo使用单引号,引号内的字符不会被转义
    echo '新密码'|passwd --stdin 用户名
    
    # Ubuntu不支持 --stdin参数,可以使用替代命令
    echo user:pass | chpasswd

    在这里插入图片描述

    删除用户的密码

    ## -d	删除已有密码
    passwd -d 用户名

    修改帐号和密码的有效期限chage

    3.png

    [root@localhost ~]# chage --help
    用法:chage [选项] 登录
    
    选项:
      -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
      -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
      -h, --help                    显示此帮助信息并推出
      -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
      -l, --list                    显示帐户年龄信息
      -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
      -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
      -R, --root CHROOT_DIR         chroot 到的目录
      -W, --warndays 警告天数       将过期警告天数设为“警告天数”

    使用-l参数列出用户密码过期的设置:

    # 查看上次密码的修改时间
    # 查看密码过期配置
    chage -l root

    在这里插入图片描述

    修改密码有效期

    # 修改testt用户密码信息,设置最大有效期为120天,最小有效期为7天
    ## -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
    ## -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
    chage -M 120 -m 7 test

    设置密码有效期到指定日期

    # test这个账号的有效期是2014-09-30
    ## -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
    chage -E '2014-09-30' test

    修改为密码永不过期

    # 修改用户的密码有效期为永久(5个9)
    ## -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
    chage -M 99999 用户名

    使密码立即失效

    # 使密码立即失效
    # 强制要求用户登陆时修改密码
    ## -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
    chage -d 0 用户名
    
    # 查看密码过期时间
    [root@localhost ~]# chage -l use1
    最近一次密码修改时间                             :密码必须修改
    密码过期时间                                    :密码必须修改
    密码失效时间                                    :密码必须修改
    帐户过期时间                                            :从不
    两次改变密码之间相距的最小天数          :0
    两次改变密码之间相距的最大天数          :99999
    在密码过期之前警告的天数        :7

    使用openssl生成密码

    查看支持的加密算法

    [student@workstation data-secret]$ openssl passwd --help
    Usage: passwd [options]
    Valid options are:
     -help               Display this summary
     -in infile          Read passwords from file
     -noverify           Never verify when reading password from terminal
     -quiet              No warnings
     -table              Format output as table
     -reverse            Switch table columns
     -salt val           Use provided salt
     -stdin              Read passwords from stdin
     -6                  SHA512-based password algorithm
     -5                  SHA256-based password algorithm
     -apr1               MD5-based password algorithm, Apache variant
     -1                  MD5-based password algorithm
     -aixmd5             AIX MD5-based password algorithm
     -crypt              Standard Unix password algorithm (default)
     -rand val           Load the file(s) into the random number generator
     -writerand outfile  Write random data to the specified file

    使用sha512算法生成密码

    [student@workstation data-secret]$ openssl passwd -6
    Password:							# 提示输入密码
    Verifying - Password:				# 确认密码
    
    # 生成的加密后的密码
    $6$hkf.tpoz/woyZn1c$ArDSHie9USt44nnqymqL6OZWKsI3e0WWl4NedhfmQOlSEN6er18SYSfyGnvxQmEgC81DLKuERhqDm5Ei3iIDw0

    给密码加盐(-salt)

    使用-salt 字符串 给密码加盐
    不同的盐,密码相同,算法相同,密文不同
    相同的盐,密码相同,算法相同,密文相同

    # 加盐rhel生成密码密文
    [student@workstation data-secret]$ openssl passwd -6 -salt rhel
    Password:				# 输入密码
    ## 生成的密文
    $6$rhel$2JncQy/NAQr4GHoVgz49YGRni8lXx3jakLxYxEBcTYLN8hh7Nu9fJc4zSbRhiJmv0vBlB6W3YyQp.nLZo8MCy0
    
    # 再次实验加盐rhel生成密文
    [student@workstation data-secret]$ openssl passwd -6 -salt rhel
    Password:				# 输入密码
    ## 生成的密文与上次密文完全一致
    $6$rhel$2JncQy/NAQr4GHoVgz49YGRni8lXx3jakLxYxEBcTYLN8hh7Nu9fJc4zSbRhiJmv0vBlB6W3YyQp.nLZo8MCy0

    密文分段详解

    $6$rhel$2JncQy/NAQr4GHoVgz49YGRni8lXx3jakLxYxEBcTYLN8hh7Nu9fJc4zSbRhiJmv0vBlB6W3YyQp.nLZo8MCy0
    ## $6 表示加密算法sha512
    ## $rhel 表示盐时rhel
    ## 第三个$之后才是 算法+盐+原密码 生成的密文

    配置创建新用户的密码策略

    修改密码最大有效期为20天

    vim /etc/login.defs
    
    ## 修改默认密码策略为20天后过期
    PASS_MAX_DAYS 20

    相关推荐:《Linux视频教程

    以上就是linux用户密码存放在哪个文件的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:linux
    上一篇:linux在哪些领域有广泛的应用 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • linux有内核文件操作函数吗• linux进程包括哪三个部分• git有linux版本的吗• linux有剪辑软件吗• linux中网卡是什么东西• linux命令行显示乱码怎么办
    1/1

    PHP中文网