zoukankan      html  css  js  c++  java
  • 7.6 passwd:修改用户密码

    7.6 passwd:修改用户密码

        passwd命令可以修改用户密码及密码过期时间等内容,是工作中很常用的命令。普通用户和超级用户都可以运行passwd命令,但普通用户只能更改自身的用户密码,超级用户root则可以设置或修改所有用户的密码。
     
    -k        为密码已经过期的用户更新有效期
    -l        锁定用户,被锁定的用户将不能登录。仅root用户有权使用该选项
    -stdin    从标准输入读取密码字符串深
    -u        解除对用户的锁定。仅root用户有权使用该选项
    -d        删除用户的密码,使密码为空。仅root用户有权使用该选项
    -e        使用户密码立即过期,将在用户下次登录时强制要求用户修改密码。仅root用户有权使用该选项
    -n        设置修改密码的最短天数。仅root用户有权使用该选项
    -x        设置修改密码的最长天数。仅root用户有权使用该选项
    -w        设置用户在密码过期前收到警告信息的天数。仅root用户有权使用该选项
    -i        设置密码过期多少天后禁用账户。仅root用户有权使用该选项
    -S        显示用户密码相关的简单描述。仅root用户有权使用该选项
     
    除了上述说明,还要强调以下两点。
        root用户可以修改任何用户的密码,普通用户只能修改自身的密码。
        root用户修改密码时,如果不符合系统密码规则,则给出警告信息,但密码设置仍然生效。普通用户修改密码时,如果使用弱密码,则给出告警信息,且修改无效。
     
    修改用户密码的例子。
    [root@cs6 ~]# passwd
    Changing password for user root.
    New password:
    BAD PASSWORD: it is too simplistic/systematic
    BAD PASSWORD: is too simple
    Retype new password:
    passwd: all authentication tokens updated successfully.
    [root@cs6 ~]# passwd lewen
    Changing password for user lewen.
    New password:
    BAD PASSWORD: it is too simplistic/systematic
    BAD PASSWORD: is too simple
    Retype new password:
    passwd: all authentication tokens updated successfully.
    [root@cs6 ~]# su lewen
    [lewen@cs6 root]$ passwd
    Changing password for user lewen.
    Changing password for lewen.
    (current) UNIX password:
    New password:
    BAD PASSWORD: it is too simplistic/systematic    #<==如果密码太短则不允许设置(root用户修改密码只是警告)
    New password:
    BAD PASSWORD: it is too simplistic/systematic
    New password:
     
    显示账号密码信息的例子。
    [root@cs6 ~]# passwd -S root
    root PS 2019-05-11 0 99999 7 -1 (Password set, SHA512 crypt.)
     
    一条命令设置密码(生产使用技巧)。
    [root@cs6 ~]# echo '123456'|passwd --stdin lewen
    Changing password for user lewen.
    passwd: all authentication tokens updated successfully.
     
    要求lewen用户7天内不能更改密码,60天以后必须修改密码,过期前10天通知用户,过期后30天后禁止用户登录。
    [root@cs6 ~]# passwd -n 7 -x 60 -w 10 -i 30 lewen
    Adjusting aging data for user lewen.
    passwd: Success
    [root@cs6 ~]# passwd -S lewen
    lewen PS 2019-05-11 7 60 10 30 (Password set, SHA512 crypt.)
    [root@cs6 ~]# chage -l lewen
    Last password change                    : May 11, 2019
    Password expires                    : Jul 10, 2019
    Password inactive                    : Aug 09, 2019
    Account expires                        : never
    Minimum number of days between password change        : 7
    Maximum number of days between password change        : 60
    Number of days of warning before password expires    : 10

    生产案例:批量创建10个用户stu01-stu10,并且设置8位随机密码

        范例7-15:批量创建10个用户stu01-stu10,并且设置8位随机密码,要求不能使用Shell的循环(例如:for、while等),只能用Linux命令及管道来实现。
     
    第一步:生成符合题意的10个用户名。
    [root@cs6 ~]# echo stu{01..10}
    stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
    第二步:使用tr命令将上述10个用户名竖行显示。
    [root@cs6 ~]# echo stu{01..10}|tr " " "
    "            #或者用xargs -n 1
    stu01
    stu02
    stu03
    stu04
    stu05
    stu06
    stu07
    stu08
    stu09
    stu10
    第三步:在每一行的前面加上useradd命令,即可拼出添加用户的所有命令。
    [root@cs6 ~]# echo stu{01..10}|tr " " "
    "|sed -r 's#(.*)#useradd 1#g'
    useradd stu01
    useradd stu02
    useradd stu03
    useradd stu04
    useradd stu05
    useradd stu06
    useradd stu07
    useradd stu08
    useradd stu09
    useradd stu10
    上面三步是完整的命令,第四步开始实际上是不同的命令,因此用分号分隔。
    第四步:定义8位随机数变量。
    [root@cs6 ~]# pass=$((RANDOM+88888888))
    [root@cs6 ~]# echo $pass
    88905344
    第五步:以第一二步作为结果使用sed -r 's#(.*)#最终命令#g'。
    [root@cs6 ~]# echo stu{01..10}|tr " " "
    "|sed -r 's#(.*)#useradd 1;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin 1;echo -e "1 `echo "$pass"`">>/tmp/lewen.log#g'
    useradd stu01;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu01;echo -e "stu01 `echo "$pass"`">>/tmp/lewen.log
    useradd stu02;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu02;echo -e "stu02 `echo "$pass"`">>/tmp/lewen.log
    useradd stu03;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu03;echo -e "stu03 `echo "$pass"`">>/tmp/lewen.log
    useradd stu04;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu04;echo -e "stu04 `echo "$pass"`">>/tmp/lewen.log
    useradd stu05;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu05;echo -e "stu05 `echo "$pass"`">>/tmp/lewen.log
    useradd stu06;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu06;echo -e "stu06 `echo "$pass"`">>/tmp/lewen.log
    useradd stu07;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu07;echo -e "stu07 `echo "$pass"`">>/tmp/lewen.log
    useradd stu08;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu08;echo -e "stu08 `echo "$pass"`">>/tmp/lewen.log
    useradd stu09;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu09;echo -e "stu09 `echo "$pass"`">>/tmp/lewen.log
    useradd stu10;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu10;echo -e "stu10 `echo "$pass"`">>/tmp/lewen.log
    [root@cs6 ~]# echo stu{01..10}|tr " " "
    "|sed -r 's#(.*)#useradd 1;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin 1;echo -e "1 `echo "$pass"`">>/tmp/lewen.log#g'|bash
    拼接后的命令拆解解析
     
    useradd stu10;                        添加用户
    pass=$((RANDOM+10000000));            密码随机数定义
    echo "$pass"|passwd --stdin stul0;    非交互式设置密码
    echo -e "stu10 `echo "$pass"`" >>/tmp/lewen.log 将密码生成到文件里并记录
    第六步:将得出的10条语句通过管道交给bash命令来执行。
    [root@cs6 ~]# echo stu{01..10}|tr " " "
    "|sed -r 's#(.*)#useradd 1;pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin 1;echo -e "1 `echo "$pass"`">>/tmp/lewen.log#g'|bash
    useradd: warning: the home directory already exists.
    Not copying any file from skel directory into it.
    Creating mailbox file: File exists
    Changing password for user stu01.
    passwd: all authentication tokens updated successfully.
    ......
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    mysql锁表与解锁
    问题汇总
    安装一台Centos7桌面版的跳板机
    Centos7二进制部署k8s-v1.20.2 ipvs版本(部署mysql、nacos)
    Centos7二进制部署k8s-v1.20.2 ipvs版本(Prometheus监控k8s)
    CV2 安装异常
    PostgreSQL VACUUM 没有效果(无法清理死元组)的原因
    SQL Server 进程运行状态解析
    mysql 几种启动和关闭mysql服务的方法和区别
    MySQL学习(九)小结(转载)
  • 原文地址:https://www.cnblogs.com/fadewalk/p/10859148.html
Copyright © 2011-2022 走看看