暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux之账号密码

心在远方AND走在路上 2021-09-17
703
了解一个系统,首先了解的是其账号和密码;由于工作中经常遇到Linux系统创建用户修改密码的操作,所以就写写关于Linux系统账号密码常用的笔记总结

1、密码有效期修改为永久

    [root@linuxde ~]# chage -M 9999 root
    # 查看账号密码情况
    [root@linuxde ~]# chage -l root
      chage选项:
      -l:列出用户的详细密码状态;
      -d 日期:修改 etc/shadow 文件中指定用户密码信息的第 3 个字段,也就是最后一次修改密码的日期,格式为 YYYY-MM-DD;
      -m 天数:修改密码最短保留的天数,也就是 etc/shadow 文件中的第 4 个字段;
      -M 天数:修改密码的有效期,也就是 etc/shadow 文件中的第 5 个字段;
      -W 天数:修改密码到期前的警告天数,也就是 etc/shadow 文件中的第 6 个字段;
      -i 天数:修改密码过期后的宽限天数,也就是 etc/shadow 文件中的第 7 个字段;
      -E 日期:修改账号失效日期,格式为 YYYY-MM-DD,也就是 etc/shadow 文件中的第 8 个字段。


      2、创建用户和修改密码


        [root@localhost ~]#useradd yctp
        #设置用户初始密码为 yctp
        [root@localhost ~]#echo "yctp" | passwd --stdin yctp

        3、chage 命令除了修改密码信息的功能外,还可以强制用户在第一次登录后,必须先修改密码,并利用新密码重新登陆系统,此用户才能正常使用。

        示例一:

        例如,我们创建 yctp 用户,并让其首次登陆系统后立即修改密码,执行命令如下:

          #创建新用户 yctp
          [root@localhost ~]#useradd yctp
          #设置用户初始密码为 yctp
          [root@localhost ~]#echo "yctp" | passwd --stdin yctp
          #通过chage命令设置此账号密码创建的日期为 1970 年 1 月 1 日(0 就表示这一天),这样用户登陆后就必须修改密码
          [root@localhost ~]#chage -d 0 yctp



          这样修改完 yctp 用户后,我们尝试用 yctp 用户登陆系统(初始密码也是 yctp):

            local host login:yctp
            Password: <--输入密码登陆
            You are required to change your password immediately (root enforced)
            changing password for yctp. <--有一些提示,就是说明 root 强制你登录后修改密码
            (current)UNIX password:
            #输入旧密码
            New password:
            Retype new password:
            #输入两次新密码
            chage 的这个功能常和 passwd 批量初始化用户密码功能合用,且对项目交付帮助比较大,因为交付不想知道客户账号的密码,他们在初次交接时就使用与相同的账号和密码给客户,让他们登陆时自行设置他们的密码。这样一来,既能避免客户之间随意使用别人的账号,也能保证客户知道如何修改自己的密码。



            4、密码文件解读

             密码文件/etc/shadow

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

            只有 root 用户拥有/etc/shadow的读权限,其他用户没有任何权限。

              # cat /etc/shadow
              root:$6$JIyttpHYJZGypLH/$egLj6byiSujKdWVio9rm7laujXyDpiOxfKZy6YZ0aE1N6pgsMIXxEOF87/.F/OePSnNOJyY5zyLIUuUApINrG/:18632:0:99999:7:::
              daemon:*:18586:0:99999:7:::
              bin:*:18586:0:99999:7:::
              dev1:$6$LsV8HsdTzliloiek$5GG7L4MOez8EnYxblcgvycMsSLhIkvQhH0nRZlrKUqM3RC2LuaWkz.zohTbfKnb.dd380yaBn9W0Q0YoPGr9t.:18632:0:99999:7:::



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

                dev1:$6$LsV8HsdTzliloiek$5GG7L4MOez8EnYxblcgvycMsSLhIkvQhH0nRZlrKUqM3RC2LuaWkz.zohTbfKnb.dd380yaBn9W0Q0YoPGr9t.:18632:0:99999:7:::
                用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:帐号过期时间:保留字段

                5、一个命令修改账号密码,无需交互输入

                  # 强制修改密码命令
                  echo "root:123456789" | chpasswd
                  # yctp添加yctp用户并且修改yctp用户密码
                  useradd yctp;echo 123456789 | passwd --stdin
                  # 通过sleep也可以在输入的时候将密码修改,该方式不推荐
                  (echo "123456789";sleep 1;echo "123456789") | passwd > /dev/null


                  文章转载自心在远方AND走在路上,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论