zoukankan      html  css  js  c++  java
  • LINUX核心命令实战总结八——用户管理及用户信息查询命令

    1.1 useradd:创建用户

    【功能说明】

    命令useradd可用于创建新的用户或者更改用户的信息

    【语法格式】

    useradd   [options] [login]
    useradd   [选项] [用户名]
    useradd  -D  [options]

    在使用useradd命令时,若不加任何参数选项,后面直接跟所添加的用户名,那么系统首先会读取/etc/login.defs(用户定义文件)和/etc/default/useradd(用户默认配置文件)文件中所定义的参数和规则,然后根据所设置的规则添加

    【选项说明】

    参数选项

    解释说明(带*的为重点)

    -c comment

    新用户password文件中的说明栏(冒号分隔后的第五列)

    -d home_dir

    新用户每次登入时所使用的家目录

    -e expire_data

    用户终止日期。日期的指定格式为YYYY-MM-DD

    -f inactive_days

    用户过期几日后永久停权。当值为0时用户立即被停权,而当值为-1时则关闭此功能,预设值为-1.

    -g initial_group

    指定用户对应的用户组,用户组名必须为系统现已存在的名称(*

    -G group,[...]

    定义此用户为多个不同组的成员,每个用户组使用逗号(,)分隔。用户组名同-g选项的限制。默认值为用户的起始用户组。

    -m

    用户目录如不存在则自动建立

    -M

    不建立家目录,优先于/etc/login.dfs文件设定。创建虚拟化用户时一般不需要建立家目录,部署应用服务时则需要创建虚拟用户。

    -n

    默认情况下用户的用户与组用户的名称是相同的,如果命令添加了-n参数,就不会生成与用户同名的用户组了。

    -r

    此参数是用来建立

    -s shell

    用户登录后使用的shell名称,默认值为不填写,这样系统会帮助指定预设的登录shell(根据/etc/default/useradd预设的值)

    -u uid

    用户的ID值,这个值必须是唯一的,除非用-o选项,数字不可为负值(*

    不加选项-D的参数选项及说明

    命令useradd-D选项参数及说明:改变新建用户的预设值

    参数选项

    解释说明(带*的为重点)

    -b default_home

    定义用户家目录的基本目录,当前用户家目录不存在时,此目录将作为家目录生效

    -e default_expire_data

    用户账号停止日期,格式为YYYY-MM-DD,同useradd-e参数

    -f default_inactive

    用户过期后几日停权。同useradd -f参数

    -g default_group

    新用户起始用户名或ID,用户组名必须为现已存在的名称。用户组ID也必须为现已存在的用户组。同useradd-g参数

    -s default_shell

    用户登录后使用的shell名称,修改后新加入的用户都将使用此shell类型,同useradd -s

     【使用范例】

    不加任何参数添加用户

    [root@A ~]# useradd yanhh
    [root@A ~]# ls -ld /home/yanhh
    drwx------ 3 yanhh yanhh 4096 1月  29 10:34 /home/yanhh
    [root@A ~]# grep -w yanhh /etc/passwd
    yanhh:x:506:506::/home/yanhh:/bin/bash
    [root@A ~]# grep -w yanhh /etc/shadow
    yanhh:!!:17560:0:99999:7:::
    [root@A ~]# grep -w yanhh /etc/group
    yanhh:x:506:
    [root@A ~]# grep -w yanhh /etc/gs
    gshadow           gshadow-          gssapi_mech.conf  
    [root@A ~]# grep -w yanhh /etc/gshadow
    yanhh:!::
    View Code

    命令useradd-g-u参数,执行useradd[参数] username添加用户。

    [root@A ~]# groupadd -g 801 sb
    [root@A ~]# useradd -g sb -u 901 yanhuih
    [root@A ~]# id yanhuih
    uid=901(yanhuih) gid=801(sb) 组=801(sb)

    命令useradd-M-s参数的例子

    [root@A ~]# useradd -M -s /sbin/nologin yanyan
    [root@A ~]# ls -ld /home/yanyan
    ls: 无法访问/home/yanyan: 没有那个文件或目录
    [root@A ~]# grep -w yanyan /etc/passwd
    yanyan:x:902:902::/home/yanyan:/sbin/nologin

    命令useradd-c-u-G-s-d-m-e-f等多个参数组合的综合例子

    添加用户inca,并设置用户注释信息为“SYSUser”,UID指定为806,归属为用户组rootsb组成员,其shell类型为/bin/sh,设置家目录为/tmp/inca,用户过期时间为20180202,过期两天后停权。

    [root@A ~]# useradd -u 806 -s /bin/sh -c SysUser -G root,sb -e "2018/02/02" -f 2 -d /tmp/inca inca
    [root@A ~]# tail -1 /etc/passwd
    inca:x:806:806:SysUser:/tmp/inca:/bin/sh

    inca

    x

    :806

    :1002

    :SysUser

    :/tmp/inca

    :/bin/sh

    账号名称

    :账号密码

    :账号UID

    :账户组GID

    :用户说明

    :用户家目录

    shell解释器

    [root@A ~]# id inca
    uid=806(inca) gid=806(inca) 组=806(inca),0(root),801(sb)
    [root@A ~]# change -l inca
    -bash: change: command not found
    [root@A ~]# id inca
    uid=806(inca) gid=806(inca) 组=806(inca),0(root),801(sb)
    [root@A ~]# chage -l inca 
    Last password change                                    : Jan 29, 2018
    Password expires                                        : never
    Password inactive                                       : never
    Account expires                                         : Feb 02, 2018
    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
    [root@A ~]# tail -1 /etc/passwd
    inca:x:806:806:SysUser:/tmp/inca:/bin/sh
    [root@A ~]# tail -1 /etc/shadow
    inca:!!:17560:0:99999:7:2:17564:
    View Code

    命令useradd -D参数的使用说明及案例实践

    [root@A ~]# cat /etc/default/useradd
    # useradd defaults file
    GROUP=100                #依赖于/etc/login.defs的USERGROUPS_ENAB参数,如果为no,则此处控制
    HOME=/home                #把用户的家目录建立在/home中
    INACTIVE=-1                #是否启用用户过期停权,-1表示不启用
    EXPIRE=                    #用户终止日期,不设置表示不启用
    SHELL=/bin/bash                #新用户默认所用的shell类用
    SKEL=/etc/skel                #配置新用户家目录的默认文件存放路径。前文提到的/etc/skell,就是在这                        里配置生效的,即当我们用useradd添加用户时,家目录下的文件,都是                        从这里配置的目录中复制过去的
    CREATE_MAIL_SPOOL=yes        #创建mail文件
    View Code

    修改实践

    [root@A ~]# cp /etc/default/useradd{,.bak}
    [root@A ~]# useradd -D  -s /bin/sh
    [root@A ~]# diff /etc/default/useradd{,.bak}
    6c6
    < SHELL=/bin/sh
    ---
    > SHELL=/bin/bash
    [root@A ~]# useradd -D -e "2018/07/12"
    [root@A ~]# diff /etc/default/useradd{,.bak}
    5,6c5,6
    < EXPIRE=2018/07/12
    < SHELL=/bin/sh
    ---
    > EXPIRE=
    > SHELL=/bin/bash
    View Code

    添加一个新用户

    [root@A ~]# useradd nihao
    [root@A ~]# tail -1 /etc/passwd
    nihao:x:903:903::/home/nihao:/bin/sh
    [root@A ~]# chage -l nihao
    Last password change                                    : Jan 29, 2018
    Password expires                                        : never
    Password inactive                                       : never
    Account expires                                         : Jul 12, 2018
    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
    [root@A ~]# cp /etc/default/useradd{.bak,}
    View Code

    1.2命令usermod:修改用户信息

    【功能说明】

    命令usermod用于修改系统用户已经存在的账户信息

    【语法格式】

    useradd   [options] [login]
    useradd   [选项] [用户名]

    【选项说明】

    命令usermod的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -c comment

    修改password文件中的说明栏(冒号分隔后的第五列)

    -d home_dir

    修改户每次登入时所使用的家目录

    -e expire_data

    修改用户终止日期。日期的指定格式为YYYY-MM-DD

    -f inactive_days

    修改用户过期几日后永久停权。当值为0时用户立即被停权,而当值为-1时则关闭此功能,预设值为-1.

    -g initial_group

    修改指定用户对应的用户组,用户组名必须为系统现已存在的名称(*

    -G group,[...]

    定义此用户为多个不同组的成员,每个用户组使用逗号(,)分隔。用户组名同-g选项的限制。默认值为用户的起始用户组。

    -m

    用户目录如不存在则自动建立

    -M

    不建立家目录,优先于/etc/login.dfs文件设定。创建虚拟化用户时一般不需要建立家目录,部署应用服务时则需要创建虚拟用户。

    -n

    默认情况下用户的用户与组用户的名称是相同的,如果命令添加了-n参数,就不会生成与用户同名的用户组了。

    -r

    此参数是用来建立

    -s shell

    修改用户登录后使用的shell名称,默认值为不填写,这样系统会帮助指定预设的登录shell(根据/etc/default/useradd预设的值)

    -u uid

    修改用户的ID值,这个值必须是唯一的,除非用-o选项,数字不可为负值(*

    -a

    追加用户到用户组,仅与-G参数连用

    -l

    修改用户的账号名称

    -L

    锁定用户密码,不让用户修改密码

    -U

    解除密码锁定

    【使用范例】

    命令useradd-c-u-G-s-d-m-e-f等多个参数组合的综合例子

    修改用户inca,并设置用户注释信息为“TmpUser”,UID指定为999,归属为用户组rootsbtech组成员,其shell类型为/sbin/nologin,设置家目录为/homeinca,用户过期时间为20190202,过期30天后停权。

    [root@A ~]# groupadd tech 
    [root@A ~]# usermod -u 999 -s /sbin/nologin -c TmpUser -G root,sb,tech -e "2019/02/02" -f 30 -d /home/inca inca
    [root@A ~]# grep -w inca /etc/passwd
    inca:x:999:806:TmpUser:/home/inca:/sbin/nologin
    [root@A ~]# id inca
    uid=999(inca) gid=806(inca) 组=806(inca),0(root),801(sb),904(tech)
    [root@A ~]# grep -w inca /etc/shadow
    inca:!!:17560:0:99999:7:30:17929:
    [root@A ~]# chage -l
    Usage: chage [options] [LOGIN]
    
    Options:
      -d, --lastday LAST_DAY        set date of last password change to LAST_DAY
      -E, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
      -h, --help                    display this help message and exit
      -I, --inactive INACTIVE       set password inactive after expiration
                                    to INACTIVE
      -l, --list                    show account aging information
      -m, --mindays MIN_DAYS        set minimum number of days before password
                                    change to MIN_DAYS
      -M, --maxdays MAX_DAYS        set maximim number of days before password
                                    change to MAX_DAYS
      -W, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS
    View Code

    1.3 命令userdel:删除用户

    【功能说明】

    命令userdel命令用于删除指定的用户及与该用户相关的文件

    【语法格式】

    useradd   [options] [login]
    useradd   [选项] [用户名]

    命令userdel参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -f

    强制删除用户,即使用户当前已登录

    -r

    删除用户的同时,删除与用户相关的所有文件

     【使用案例】

    不加参数删除用户

    [root@A ~]# tail -4 /etc/passwd
    yanhuih:x:901:801::/home/yanhuih:/bin/bash
    yanyan:x:902:902::/home/yanyan:/sbin/nologin
    inca:x:999:806:TmpUser:/home/inca:/sbin/nologin
    nihao:x:903:903::/home/nihao:/bin/sh
    [root@A ~]# ll -d /home/yanhuih
    drwx------ 3 yanhuih sb 4096 1月  29 10:51 /home/yanhuih
    [root@A ~]# userdel yanhuih 
    [root@A ~]# grep -w yanhuih /etc/passwd
    [root@A ~]# ll -d /home/yanhuih
    drwx------ 3 901 sb 4096 1月  29 10:51 /home/yanhuih
    View Code

    加参数-r删除用户及家目录

    root@A ~]# tail -6 /etc/passwd
    yhh2:x:504:504::/home/yhh2:/bin/bash
    yhh3:x:505:505::/home/yhh3:/bin/bash
    yanhh:x:506:506::/home/yanhh:/bin/bash
    yanyan:x:902:902::/home/yanyan:/sbin/nologin
    inca:x:999:806:TmpUser:/home/inca:/sbin/nologin
    nihao:x:903:903::/home/nihao:/bin/sh
    [root@A ~]# userdel -r yhh3
    [root@A ~]# grep -w yhh3 /etc/paaswd
    grep: /etc/paaswd: 没有那个文件或目录
    [root@A ~]# ll -d /home/yhh3
    ls: 无法访问/home/yhh3: 没有那个文件或目录
    View Code

    1.4 命令groupadd:创建新的用户组

    【功能说明】

    命令groupadd用于创建新的用户组。

    【语法格式】

    groupadd   [options] [login]
    groupadd   [选项] [用户名]

    【选项说明】

    命令groupadd参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -g  gid

    指定用户GID,除非接-o参数,否则GID值唯一且不为负,如果不指定-gGID500开始

    -f

    新增一个账户,强制覆盖一个已经存在的组账户

    【使用范例】

    [root@A ~]# tail -1 /etc/group
    tech:x:904:inca
    [root@A ~]# groupadd -g 666 test1
    [root@A ~]# tail -1 /etc/group
    test1:x:666:
    [root@A ~]# tail -1 /etc/gshadow
    test1:!::

    1.5 命令groupdel:删除用户组

    【功能说明】

    命令groupdel用于删除指定的用户组,此命令的使用频率极低。

    【语法格式】

    groupadd    [login]
    groupadd [用户名]

    【使用案例】

    [root@A ~]# groupdel root
    groupdel: cannot remove the primary group of user 'root'
    [root@A ~]# groupdel test1
    [root@A ~]# grep -w test1 /etc/group

    1.6 命令passwd:修改用户密码

    【功能说明】

    命令passwd可以修改用户及密码过期时间等内容,是工作中经常用到的命令,普通用户和超级用户都可以运行passwd命令,但普通用户只能更改自身的用户密码,超级用户root则可以设置或所有用户密码。

    【语法格式】

    passwd   [options] [username]
    passwd   [选项] [用户名]

    【选项说明】

    参数选项

    解释说明(带*的为重点)

    -k

    为密码已经过期的用户更新有效期

    -l

    锁定用户,被锁定的用户将不能登录,仅root用户有权使用该选项

    --stdin

    从标准输入读取密码字符串(*

    -u

    解除对用户的锁定。仅root用户有权使用该选项

    -d

    删除用户密码,使密码为空,仅root权限使用

    -e

    使用用户密码立即过期,将在用户下次登录时强制要求用户修改密码,仅root使用

    -n

    设置修改密码的最短天数,仅root用户使用

    -x

    设置修改密码的最长天数,仅root使用

    -w

    设置用户在密码过期前收到警告信息的天数,仅root使用

    -i

    设置密码过期多少天数禁用用户,仅root使用

    -S

    显示用户密码相关的简单描述,仅root使用

     【使用范例】

    修改用户自身密码

    [root@A ~]# passwd
    更改用户 root 的密码 。
    新的 密码:
    无效的密码: 过于简单化/系统化
    无效的密码: 过于简单
    重新输入新的 密码:
    passwd: 所有的身份验证令牌已经成功更新

    设置及修改普通用户的密码

    [root@A ~]# passwdyhh2
    -bash: passwdyhh2: command not found
    [root@A ~]# passwd yhh2
    更改用户 yhh2 的密码 。
    新的 密码:
    无效的密码: 过于简单化/系统化
    无效的密码: 过于简单
    重新输入新的 密码:
    passwd: 所有的身份验证令牌已经成功更新。
    [root@A ~]# su - yhh2
    [yhh2@A ~]$ passwd
    更改用户 yhh2 的密码 。
    为 yhh2 更改 STRESS 密码。
    (当前)UNIX 密码:
    新的 密码:
    重新输入新的 密码:
    passwd: 所有的身份验证令牌已经成功更新。
    View Code

    显示密码的信息

    [root@A ~]# su - yhh2
    [yhh2@A ~]$ passwd -S yhh2
    只有根用户才能进行此操作。
    [yhh2@A ~]$ su - root
    密码:
    [root@A ~]# passwd -S yhh2
    yhh2 PS 2018-01-29 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
    View Code

    一条命令设置密码(批量设置密码)

    [root@A ~]# echo "123456"|passwd --stdin yhh2
    更改用户 yhh2 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。

    要求yhh1用户7天内不能更改密码,60天以后必须修改密码,过期前10天通知用户,过期后30天禁止用户登录。

    [root@A ~]# passwd -n 7 -x 60 -w 10 -i 30 yhh1
    调整用户密码老化数据yhh1。
    passwd: 操作成功
    [root@A ~]# chage -l yhh1
    Last password change                                    : Jan 23, 2018
    Password expires                                        : Mar 24, 2018
    Password inactive                                       : Apr 23, 2018
    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
    View Code

    【生产案例】

    批量建立10个用户stu01-stu10,并设置8位随机密码,要求不能使用shell的循环,只能使用命令及管道

    第一步:生成符合题意10个用户名

    [root@A ~]# echo stu{01..10}
    stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10

    第二步:使用tr命令将上述10个用户名竖行显示

    [root@A ~]# echo stu{01..10}|tr " " "
    "
    stu01
    stu02
    stu03
    stu04
    stu05
    stu06
    stu07
    stu08
    stu09
    stu10

    第三步:在每行的前面加上useradd命令。既可以拼出添加用户的所有命令

    [root@A ~]# echo stu{01..10}|tr " " "
    "|sed 's#(.*)#useradd 1#g'
    sed:-e 表达式 #1,字符 19:“s”命令的RHS非法引用1
    [root@A ~]# 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
    View Code

    第四步:定义随机8位随机变量

    [root@A ~]# pass=$((RANDOM+88888888))
    [root@A ~]# echo $pass
    88904790

    第五步:以第三步为基础,拼出 echo "随机密码"|passwd --stdin 用户名

    [root@A ~]# echo stu{01..10}|tr " " "
    "|sed  -r 's#(.*)#useradd 1 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin 1 #g'
    useradd stu01 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu01 
    useradd stu02 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu02 
    useradd stu03 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu03 
    useradd stu04 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu04 
    useradd stu05 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu05 
    useradd stu06 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu06 
    useradd stu07 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu07 
    useradd stu08 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu08 
    useradd stu09 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu09 
    useradd stu10 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu10

    第六步:为了建立用户后更好登录,把用户和密码重定向保存在文件中(红色)

    [root@A ~]# echo stu{01..10}|tr " " "
    "|sed  -r 's#(.*)#useradd 1 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin 1;echo -e "1`echo "$pass"`">>/tmp/test #g'
    useradd stu01 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu01;echo -e "stu01`echo "$pass"`">>/tmp/test 
    useradd stu02 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu02;echo -e "stu02`echo "$pass"`">>/tmp/test 
    useradd stu03 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu03;echo -e "stu03`echo "$pass"`">>/tmp/test 
    useradd stu04 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu04;echo -e "stu04`echo "$pass"`">>/tmp/test 
    useradd stu05 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu05;echo -e "stu05`echo "$pass"`">>/tmp/test 
    useradd stu06 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu06;echo -e "stu06`echo "$pass"`">>/tmp/test 
    useradd stu07 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu07;echo -e "stu07`echo "$pass"`">>/tmp/test 
    useradd stu08 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu08;echo -e "stu08`echo "$pass"`">>/tmp/test 
    useradd stu09 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu09;echo -e "stu09`echo "$pass"`">>/tmp/test 
    useradd stu10 ; pass=$((RANDOM+88888888));echo "$pass"|passwd --stdin stu10;echo -e "stu10`echo "$pass"`">>/tmp/test 

    第七步把拼出的命令交给bash运行

    [root@A ~]# echo stu{01..10}|tr " " "
    "|sed  -r 's#(.*)#useradd 1 ; pass=$((RANDOM+10000000));echo "$pass"|passwd --stdin 1;echo -e "1`echo "$pass"`">>/tmp/test #g'|bash
    更改用户 stu01 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。
    更改用户 stu02 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。
    更改用户 stu03 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。
    更改用户 stu04 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。
    更改用户 stu05 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。
    更改用户 stu06 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。
    更改用户 stu07 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。
    更改用户 stu08 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。
    更改用户 stu09 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。
    更改用户 stu10 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。

    拼接后命令解析

    拼接后的命令拆解解析(最终命令)

    解释说明

    echo stu{01..10}

    添加用户

    pass=$((RANDOM+10000000)

    密码随机数定义

    echo "$pass"|passwd --stdin 1

    非交互式设置密码

    echo -e "1`echo "$pass"`">>/tmp/test

    将密码生成到文件并记录

    1.7命令chage:修改用户密码的有效期

     【功能说明】

     命令chage用于查看修改密码有效期,和passwd命令一样。

     【语法格式】

    chage   [options] [username]
    chage   [选项] [用户名]

    【选项说明】

     命令chage的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -d

    设置上一次密码更改日期

    -E

    账号过期的日期。日期格式为YYYY-MM-DD

    -I

    设置密码过期多少天后禁用账号

    -l

    显示账号有效期的信息(*

    -m

    密码可更改的最小天数。默认为0,表示任何时候都可以更改密码

    -M

    密码保持有效的最大天数

    -W

    密码到期前,提前收到警告信息的天数

     【使用范例】

     要求yhh用户7天内不能更改密码,60天以后必须修改密码,过期前10天通知用户,过期后30天禁止用户登录。

    [root@A ~]# chage -m 7 -M 60 -W 10 -I 30 yhh  
    [root@A ~]# chage -l yhh
    Last password change                                    : Jan 20, 2018
    Password expires                                        : Mar 21, 2018
    Password inactive                                       : Apr 20, 2018
    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

    1.8 命令chpasswd:批量更新新用户密码

     【功能说明】

    命令chpasswd用于从标准输入中读取一定格式的用户名,密码来批量更新新用户的密码

    【语法格式】

    chpasswd   [options]
    chpasswd   [选项] 

    【选项说明】

    命令chpasswd的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -e

    默认格式是明文密码,使用-e参数则需要加密的密码

    【使用范例】

    命令批量修密码

    [root@A ~]# chpasswd 
    root:5tgb%TGB
    yhh:123456
    yhh1:123456
    yhh2:123456     #Ctrl+D结束

    【生产案例】

    批量建立10个用户stu01-stu10,并设置8位随机密码,要求不能使用shell的循环,只能使用命令及管道

    第一步:生成符合题意10个用户名

    第一步:添加10个用户

    [root@client ~]# echo stu{01..10}|xargs -n 1 useradd 
    [root@client ~]# tail /etc/passwd
    stu01:x:501:501::/home/stu01:/bin/bash
    stu02:x:502:502::/home/stu02:/bin/bash
    stu03:x:503:503::/home/stu03:/bin/bash
    stu04:x:504:504::/home/stu04:/bin/bash
    stu05:x:505:505::/home/stu05:/bin/bash
    stu06:x:506:506::/home/stu06:/bin/bash
    stu07:x:507:507::/home/stu07:/bin/bash
    stu08:x:508:508::/home/stu08:/bin/bash
    stu09:x:509:509::/home/stu09:/bin/bash
    stu10:x:510:510::/home/stu10:/bin/bash

    “用户名”:密码的格式将添加的用户写入pass.txt

    [root@client ~]# echo stu{01..10}:$((RANDOM+10000000))|tr " " "
    ">pass.txt 
    [root@client ~]# cat pass.txt
    stu01:10009601
    stu02:10028735
    stu03:10027066
    stu04:10025467
    stu05:10018531
    stu06:10001398
    stu07:10013916
    stu08:10025178
    stu09:10002575
    stu10:10024838
    View Code

    第三步:chpasswd将文件pass.txt中读取相关的数据,为对应的用户设置冒号后免得密码

    [root@client ~]# chpasswd <pass.txt
    [root@client ~]# su - stu01
    [stu01@client ~]$ su - stu02
    密码:
    [stu02@client ~]$ 

    1.9 su:切换用户

    【功能说明】

    命令su 用于将当前用户切换到指定用户或者以指定用户的身份执行命令或程序

    【语法格式】

    su   [options] [username]
    su   [选项] [用户名]

    【选项说明】

    参数选项

    解释说明(带*的为重点)

    --l--login

    切换用户的同时,将用户的家目录、系统环境等重新按切换后的用户初始化(*

    -c

    shell传递单个命令(*

    【使用范例】

    切换用户例子

    [root@A ~]# whoami
    root
    [root@A ~]# su yhh
    [yhh@A root]$ pwd
    /root
    [yhh@A root]$ env|egrep "USER|MALL|PWD|LOGNAME"  
    USER=yhh
    PWD=/root
    LOGNAME=yhh
    View Code

    - 切换后再测试

    [root@A ~]# su - yhh
    [yhh@A ~]$ env|egrep "USER|MALL|PWD|LOGNAME" 
    USER=yhh
    PWD=/home/yhh
    LOGNAME=yhh

    如何让系统在每一天开机时都能自动以普通用户启动指定的服务脚本

    [root@A ~]#  echo "su - yhh -c " /bin/sh  /service/scripts/mac.py>> /etc/rc.local
    [root@A ~]# tail -1 /etc/rc.local
    su - yhh -c  /bin/sh /service/scripts/mac.py

    1.10 命令visudo:编辑sudoers文件

    【功能说明】

    命令visudo是专门用来编辑/etc/sudoers这个文件的,同时提供语法检查等功能。/etc/sudoers文件是sudo命令的配置文件。

    【语法格式】

    visudo   [options]
    visudo    [选项] 

    【选项说明】

    命令visudo的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -c

    手动执行语法检查

    【使用范例】

    执行visudo命令,既可以打开sudo的配置文件进行编辑。

    [root@A ~]# visudo
    root    ALL=(ALL)       ALL
    stu01   ALL=(ALL)       /usr/sbin/useradd,/usr/sbin/userdel
    stu02   ALL=(ALL)       ALL

    命令sudo提权配置说明

    待授权的用户或组

    机器=(授权)

    可执行的命令

    user

    MACHINE=

    COMMANDS

    Stu02

    ALL=(ALL)

    /usr/sbin/useradd,/usr/sbin/userdel

    检查sudoer文件语法的例子

    [root@A ~]# echo "su - yhh -c " /bin/sh  /service/scripts/mac.py
    su - yhh -c  /bin/sh /service/scripts/mac.py
    [root@A ~]#  echo "su - yhh -c " /bin/sh  /service/scripts/mac.py>> /etc/rc.local
    [root@A ~]# tail -1 /etc/rc.local
    su - yhh -c  /bin/sh /service/scripts/mac.py
    [root@A ~]# visudo -c
    /etc/sudoers:解析正确

    1.11 命令sudo:以另外用户身份执行命令

    【功能说明】

    通过sudo命令,可以让普通用户在执行指令的命令或程序上,拥有超级用户的授权,进行分类,并且有针对地将不同的命令授予指定的普通用户,同时普通用户不需要知道root密码就可以得到授权,这个授权可以用visudo配置管理。

    【语法格式】

    sudo   [options]
    sudo    [选项] 

    命令sudo的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -l

    列出当前用户可以执行的命令,只有在sudoer文件里的用户才能使用该选项(*

    -h

    列出使用方法,并退出

    -H

    将环境变量的HOME(家目录)指定为要变更身份的使用者家目录(如果不加-u参数就是系统管理者root

    -V

    显示版本信息,并退出

    -v

    Sudo在第一次执行时,或者在N分钟内没有执行(N预设为五),则会询问密码,这个参数用于重新做一次确认

    -u

    以指定用户的身份执行命令,后面是除root以外用户,可以是用户,也是可以uid

    -k

    清除时间戳上的时间,下次再使用sudo时要再次输入密码

    -K

    -k类似,同时还要删除时间戳文件

    -b

    在后台执行指令的命令

    -p

    可以更改询问密码时的提示语

    -e

    不执行命令,而是修改文件,相当于命令sudo edit

    【使用范例】

    查看用户被visudo授权后拥有的权限

    [yhh@A ~]$ ls /root
    ls: 无法打开目录/root: 权限不够
    [yhh@A ~]$ sudo ls /root
    aa               data3  eth0   file2  hard_link    install.log.syslog  test       test.txt     yanhuihuang1
    anaconda-ks.cfg  dir1   eth1   file3  hello.txt    md5.log             test1      yan          yanhuihuang2
    data             dir2   file1  g      install.log  soft_link           test2.txt  yanhuihuang  yhh

    1.12命令id:显示用户与用户组的信息

    【功能说明】

    命令id能够显示指定用户真实有效的用户IDUID)和组IDGID)等信息

    【语法格式】

    id   [options] [username]
    id   [选项] [用户名]

    【选项说明】

    命令id的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -g

    显示用户组ID

    -G

    显示用户所属附加群组ID

    -n

    显示用户,所属群组或附加群组的名称,不显示数字

    -r

    显示实际ID

    -u

    显示用户ID

    【使用范例】

    [root@A ~]# id
    uid=0(root) gid=0(root) 组=0(root)
    [root@A ~]# id yhh
    uid=500(yhh) gid=500(yhh) 组=500(yhh)
    [root@A ~]# id -gn
    root
    [root@A ~]# id -u
    0
    [root@A ~]# id -un
    root

    1.13命令w:显示已登录用户信息

    【功能说明】

    命令w可以显示已经登录系统的用户,并显示用户正在执行的命令

    【选项说明】

    命令w的参数选项及说明

    参数选项

    解释说明(带*的为重点)

    -h

    不显示前面行标题信息

    -u

    忽略执行程序的名称,以及CPU时间的信息

    -s

    使用短输入格式

    【使用范例】

    [root@A ~]# w
     10:02:20 up 12 days, 13:36,  2 users,  load average: 0.07, 0.06, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    10.16.50.4       23Jan18 11:24m  0.34s  0.34s -bash
    root     pts/1    10.16.50.4       24Jan18  0.00s  0.83s  0.00s w
    [root@A ~]# w -h
    root     pts/0    10.16.50.4       23Jan18 11:24m  0.34s  0.34s -bash
    root     pts/1    10.16.50.4       24Jan18  0.00s  0.83s  0.00s w -h

    1.14 命令who:显示已登录用户信息

    【功能说明】

    命令who能够显示已登录系统的用户,以及系统的启动时间等信息

    【语法格式】

    who    [options]
    who   [选项] 

    【选项说明】

    命令who的参数及说明

    参数选项

    解释说明(带*的为重点)

    -a

    显示所有信息,相当于-b-d --login -p -r-t-T-u

    -b

    显示系统的启动时间

    -d

    显示已死进程

    -H

    显示标题,默认不显示

    -l

    显示登录进程

    【使用范例】

    [root@A ~]# who
    root     pts/0        2018-01-23 17:25 (10.16.50.4)
    root     pts/1        2018-01-24 09:20 (10.16.50.4)
    [root@A ~]# who -b
             系统引导 2018-01-17 20:26
    [root@A ~]# who -l
    登录   tty1         2018-01-17 20:26              1946 id=1
    登录   tty2         2018-01-17 20:26              1949 id=2
    登录   tty3         2018-01-17 20:26              1956 id=3
    登录   tty4         2018-01-17 20:26              1959 id=4
    登录   tty5         2018-01-17 20:26              1962 id=5
    登录   tty6         2018-01-17 20:26              1964 id=6
    [root@A ~]# who -H
    名称   线路       时间           备注
    root     pts/0        2018-01-23 17:25 (10.16.50.4)
    root     pts/1        2018-01-24 09:20 (10.16.50.4)
    [root@A ~]# who -H -a
    名称     线路       时间           空闲  进程号 备注   退出
               系统引导 2018-01-17 20:26
               运行级别 3 2018-01-17 20:26
    登录     tty1         2018-01-17 20:26              1946 id=1
    登录     tty2         2018-01-17 20:26              1949 id=2
    登录     tty3         2018-01-17 20:26              1956 id=3
    登录     tty4         2018-01-17 20:26              1959 id=4
    登录     tty5         2018-01-17 20:26              1962 id=5
    登录     tty6         2018-01-17 20:26              1964 id=6
    root     + pts/0        2018-01-23 17:25 11:34       31982 (10.16.50.4)
    root     + pts/1        2018-01-24 09:20   .          2820 (10.16.50.4)
    [root@A ~]# who -d
    [root@A ~]# 
    View Code

    1.15 users:显示已登录用户

    【功能说明】

    命令users可以显示已经登录系统的用户,如果是同一用户登录多次,则登录几次就会显示几次用户名

    【使用范例】

    显示已经登录用户

    [root@A ~]# users
    root root

    1.16 whoami:显示当前登录的用户名

    【功能说明】

    命令whoami用于显示当前登录的用户名。

    【使用范例】

    [root@A ~]# whoami
    root

    1.17 命令last:显示用户登录列表

    【功能说明】

    命令last能够从日志文件/var/log/wtmp读取信息并显示用户最近的登录列表

    【语法格式】

    last   [options]
    last   [选项] 

    【选项说明】

    命令last的参数及说明

    参数选项

    解释说明(带*的为重点)

    -num

    -n num

    指定显示结果的行数(*

    【使用范例】

    显示用户最近登录的列表

    [root@A ~]# last -10
    root     pts/1        10.16.50.4       Wed Jan 24 09:20   still logged in   
    root     pts/0        10.16.50.4       Tue Jan 23 17:25   still logged in   
    root     pts/1        10.16.50.4       Sun Jan 21 21:07 - 17:25 (1+20:17)   
    root     pts/0        10.16.50.4       Sat Jan 20 20:53 - 16:59 (1+20:05)   
    root     pts/0        10.16.50.4       Thu Jan 18 09:29 - 20:47 (2+11:17)   
    reboot   system boot  2.6.32-504.el6.x Wed Jan 17 20:26 - 10:25 (12+13:59)  
    root     pts/0        10.16.50.4       Wed Jan 17 20:24 - down   (00:01)    
    reboot   system boot  2.6.32-504.el6.x Wed Jan 17 20:22 - 20:25  (00:03)    
    root     pts/0        10.16.50.4       Wed Jan 17 20:02 - down   (00:16)    
    root     pts/1        10.16.50.4       Sun Dec 24 23:25 - 15:57 (9+16:32)   
    
    wtmp begins Tue Jul  5 11:12:08 2016

    1.18 命令lastab:显示用户登录失败的记录

    【功能说明】

    命令lastab可以从日志文件/var/log/btmp中读取信息,并显示用户登录失败的记录,用于发现系统登录异常

    【语法格式】

    lastb   [options]
    lastb   [选项] 

    【选项说明】

    命令lastb的参数及说明

    参数选项

    解释说明(带*的为重点)

    -num

    -n num

    指定显示结果的行数(*

    【使用范例】

    显示用户登录失败的列表

    [root@A ~]# lastb
    root     ssh:notty    10.16.50.4       Tue Jan 30 10:31 - 10:31  (00:00)    
    
    btmp begins Tue Jan 30 10:31:04 2018

    1.19 命令lastlog:显示所有用户的最近登录记录

    【功能说明】

    命令lastlog从日志文件/var/log/lastlog中读取信息,并显示所有用户的最近登录信息,用于查看系统是否有异常登录。

    【使用范例】

    显示所有用户的最近登陆记录

    [root@A ~]# lastb
    root     ssh:notty    10.16.50.4       Tue Jan 30 10:31 - 10:31  (00:00)    
    
    btmp begins Tue Jan 30 10:31:04 2018
    [root@A ~]# lastlog
    用户名           端口     来自             最后登陆时间
    root             pts/2    10.16.50.4       二 1月 30 10:30:34 +0800 2018
    bin                                        **从未登录过**
    daemon                                     **从未登录过**
    adm                                        **从未登录过**
    lp                                         **从未登录过**
    sync                           
  • 相关阅读:
    java多线程学习-java.util.concurrent详解(四) Exchanger
    java多线程学习-java.util.concurrent详解(三) Semaphore
    java多线程学习-java.util.concurrent详解(二) CyclicBarrier
    java多线程学习-java.util.concurrent详解(一) CountDownLatch
    MongoDB 入门学习
    Protrator自动化测试(针对Angular 应用的自动化测试)
    Jasmine 编写 JavaScript 测试用例
    记录一下mysql忘记密码重置
    System.Data.DbType的字符串和数据库中字符串类型对应关系
    memcached和mongodb 在windows下安装
  • 原文地址:https://www.cnblogs.com/huihuangyan/p/13690536.html
Copyright © 2011-2022 走看看