一、用户管理命令

    相关命令:useradd、userdel、usermod、passwd、chsh、chfn、finger、id、chage、newgrp

1、useradd命令

    1)功能:

[root@localhost /]# whatis useradd
useradd (8)          - 创建一个新用户或更新默认新用户信息

   2)常用选项:

选项含义
-g指定所属组
-u指定UID号
-s指定登录的shell
-d指定家目录
-G指定属于多个组(附属组)
-M指定不创建家目录
-m指定创建家目录
-e账号终止日期,日期指定的格式为MM/DD/YY
-f账号过期几日后永久停权。当值为0时账号立即停权,为-1时则关闭此功能,预设值为-1。
-c注释
-h显示此命令的帮助信息

    3)实例:

    创建一个名为oldboy的用户,不创建家目录,不登录shell,指定UID号为8888,注释为virtual user。

[root@localhost /]# useradd -c "virtual user" -M -s /sbin/nologin -u 8888 oldboy
[root@localhost /]# grep oldboy /etc/passwd
oldboy:x:8888:8888:virtual user:/home/oldboy:/sbin/nologin
[root@localhost /]# ls /home/
tom  user

2、userdel命令

    1)功能:

[root@localhost /]# whatis userdel
userdel (8)          - 删除用户账户和相关文件

    2)常用选项:

选项含义
-r删除主目录和邮件池
-f强制删除,即使登录中
-h查看此帮助信息

    3)实例:

    删除admin用户,并同时删除家目录。

[root@localhost /]# grep admin /etc/passwd
admin:x:8889:8889::/home/admin:/bin/bash
[root@localhost /]# ls /home/
admin  tom  user
[root@localhost /]# userdel -r admin
[root@localhost /]# grep admin /etc/passwd
[root@localhost /]# ls /home/
tom  user

3、usermod命令

    1)功能:

    修改账户属性

[root@localhost /]# whatis usermod
usermod (8)          - 修改一个用户账户

    2)常用选项:

选项含义
-g修改指定GID号
-u修改指定UID号
-c修改用户注释信息
-s修改指定用户默认shell
-d修改指定家目录
-G修改附加组
-a -G添加附加组
-M指定不创建家目录
-l修改用户名
-L锁定用户账户
-U解锁账户
-D改变默认属性
-f账号过期几日后永久停权。当值为0时账号立即停权,为-1时则关闭此功能,预设值为-1
-e修改账号终止日期。日期的指定格式为MM/DD/YY

    3)实例:

    修改oldboy用户:用户名修改为useradmin,修改UID号为6666,修改注释信息为manage users,修改登录shell为/bin/bash,修改指定家目录为/home/useradmin,添加一个附加组为admin组。

[root@localhost /]# grep oldboy /etc/passwd
oldboy:x:8888:8888:virtual user:/home/oldboy:/sbin/nologin
[root@localhost /]# usermod -l useradmin -u 6666 -c "manage users" -s /bin/bash -d /home/useradmin -a -G admin oldboy
[root@localhost /]# grep useradmin /etc/passwd
useradmin:x:6666:8888:manage users:/home/useradmin:/bin/bash
[root@localhost /]# id useradmin
uid=6666(useradmin) gid=8888(oldboy) 组=8888(oldboy),8889(admin)

4、passwd命令

    1)功能:

[root@localhost /]# whatis passwd
passwd (1)           - update user's authentication tokens   #更新用户的身份验证(更新用户密码)
sslpasswd (1ssl)     - compute password hashes

    2)常用选项:

选项含义
-l锁定用户
-U解除用户锁定
-d删除用户密码
-S (大写)查看用户状态
-n表示多少天内不能更改密码
-x表示多少天以后要求更改密码
-w表示账户密码过期前多少天提醒
-i表示密码过期后多少天账号被禁用
--stdin非交互式修改密码

    3)实例:

    修改useradmin用户密码信息:非交互式修改密码为123123,3天内不能更改密码,30天后要求更改密码,密码过期前7天提醒,密码过期后5天禁用账号。

[root@localhost /]# grep useradmin /etc/shadow
useradmin:!!:18066:0:99999:7:::
[root@localhost /]# echo 123123|passwd --stdin useradmin -n 3 -x 30 -w 7 -i 5
调整用户密码老化数据useradmin。
passwd: 操作成功
[root@localhost /]# grep useradmin /etc/shadow
useradmin:!!:18066:3:30:7:5::

5、chsh命令

    1)功能:

[root@localhost /]# whatis chsh
chsh (1)             - change your login shell  #更改登录shell

    2)常用选项:

选项含义
-s指定登录shell
-l打印shell列表并退出
-u 或 --help显示此帮助信息
-v显示版本信息

    3)实例:

    更改apache账号的登录shell为/bin/bash,打印shell列表。

#更改apache用户登录shell为/bin/bash
[root@localhost /]# grep apache /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin  #不能登录shell
[root@localhost /]# chsh -s /bin/bash apache
Changing shell for apache.
Shell changed.
[root@localhost /]# grep apache /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/bin/bash   #登录shell为/bin/bash
#打印shell列表
[root@localhost /]# chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

6、chfn命令

    1)功能:

    修改用户的描述信息,类似与usermod -c命令

[root@localhost /]# whatis chfn
chfn (1)             - change your finger information   #修改用户的描述信息

    2)常用选项:

选项含义
-f , --full-name真实姓名
-o , --office办公号码
-p , --office-phone办公电话
-h , --home-phone住宅电话
-u显示帮助信息
-v输出版本信息

    3)实例:

    修改useradmin用户描述信息:真是姓名为wang hong zhi,办公电话为40056008

[root@localhost /]# grep useradmin /etc/passwd
useradmin:x:6666:8888:manage users:/home/useradmin:/bin/bash
[root@localhost /]# chfn -f "wang hong zhi" -p 40056008 useradmin
Changing finger information for useradmin.
Finger information changed.
[root@localhost /]# grep useradmin /etc/passwd
useradmin:x:6666:8888:wang hong zhi,,40056008:/home/useradmin:/bin/bash

7、finger命令

    1)功能:

    用于查看用户账号的家目录、shell等信息,finger指定会去查找。(查看账户信息

[root@localhost /]# man finger
NAME
     finger — user information lookup program    #用户信息查找程序

    2)常用选项:

选项含义
-l
多行显示用户的登录名、真实姓名、登录shell、家目录等信息
-m与-l选项类似
-s显示用户登录名、真是姓名、终端名称、停留时间、登录时间、办公电话等信息
-p除了不显示.plan、.project文件以外,与-l选项相同

    3)实例:

############-l选项############
[root@localhost /]# finger -l useradmin
Login: useradmin      			Name: wang hong zhi
Directory: /home/useradmin          	Shell: /bin/bash
Office: 40056008
Last login 三 6月 19 11:28 (CST) on pts/0
No mail.
No Plan.
############-s选项############
[root@localhost /]# finger -s useradmin
Login      Name            Tty      Idle  Login Time   Office     Office Phone   Host
useradmin  wang hong zhi   pts/0       *  Jun 19 11:28 40056008  
############-m选项############
[root@localhost /]# finger -m useradmin
Login: useradmin      			Name: wang hong zhi
Directory: /home/useradmin          	Shell: /bin/bash
Office: 40056008
Last login 三 6月 19 11:28 (CST) on pts/0
No mail.
No Plan.
############-p选项############
[root@localhost /]# finger -p useradmin
Login: useradmin      			Name: wang hong zhi
Directory: /home/useradmin          	Shell: /bin/bash
Office: 40056008
Last login 三 6月 19 11:28 (CST) on pts/0
No mail.

8、id命令

    1)功能:

[root@localhost /]# whatis id
id (1)               - print real and effective user and group IDs    #打印真实有效的用户和组ID

    2)常用选项:

选项含义
--help显示此帮助信息
--version
显示版本信息
-u仅显示有效用户id
-g仅显示有效的用户组id
-G显示所有组的id(属组id和附加组id)
-r显示真实ID而非有效ID(不能单独使用,与ug结合使用)
-n显示用户组的名称而非数字
-a忽略,仅为与其他版本相兼容而设计
-Z仅显示当前用户的selinux安全环境

注意:-r与-n两个选项是不能单独使用的,要与-u或-g选项结合使用。

    3)实例:

[root@localhost /]# id -u useradmin   #显示UID
6666
[root@localhost /]# id -g useradmin    #显示GID
8888
[root@localhost /]# id -G useradmin    #显示所有GID
8888 8889
[root@localhost /]# id -ur useradmin   #显示真实UID
6666
[root@localhost /]# id -gr useradmin   #显示真实GID
8888
[root@localhost /]# id -gn useradmin   #显示组名称
oldboy
[root@localhost /]# id -un useradmin   #显示用户名称
useradmin

9、chage命令

    1)功能:

[root@localhost /]# whatis chage
chage (1)            - 更改用户密码过期信息

    2)常用选项:

选项含义
-d上次修改密码的时间距离1970-01-01起的天数,如果后面跟的天数为0,则表示,用户在下次登录的时候,必须要修改自己的密码
-E修改账户失效日期,格式为YYYY-MM-DD。后面也可跟上天数,如果为天数,则表示距离1970-01-01起的天数。如果为-1,则表示移除账户失效日期。该指令等同于usemod -e
-h显示帮助信息
-I(大写i)密码过期多少天后,账户将被禁用。如果为-1将关闭该功能。
-l查看用户密码的过期信息
-m密码使用的最小天数
-M密码使用的最大天数,如果为-1将关闭该功能。
-W密码过期前多少天警告。

    3)实例:

    修改useradmin用户的密码信息:修改下次登录时必须修改密码,修改账户失效日期为2060-01-01,修改密码过期7天后 账户将被禁用,密码使用最小天数为3天,密码使用最大天数为30天,密码过期前5天警告。

[root@localhost /]# chage -l useradmin
最近一次密码修改时间					:6月 19, 2019
密码过期时间					:7月 19, 2019
密码失效时间					:7月 24, 2019
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:3
两次改变密码之间相距的最大天数		:30
在密码过期之前警告的天数	:7
* * * * * * * * * * * * * * * * * * * * *  * * * * * * * * * * *  * * * * * * 
[root@localhost /]# chage -d 0 -E 2060-01-01 -I 7 -m 3 -M 30 -W 5 useradmin
* * * * * * * * * * * * * * * * * * * * *  * * * * * * * * * * *  * * * * * * 
[root@localhost /]# chage -l useradmin
最近一次密码修改时间					:密码必须更改
密码过期时间					:密码必须更改
密码失效时间					:密码必须更改
帐户过期时间						:1月 01, 2060
两次改变密码之间相距的最小天数		:3
两次改变密码之间相距的最大天数		:30
在密码过期之前警告的天数	:5

10、newgrp命令

    1)功能:

    如果一个用户同时属于多个用户组,那么该用户可以在用户组之间进行切换,以便具有其他用户组的权限。newgrp主要用于在多个用户组之间进行切换。

[root@localhost /]# whatis newgrp
newgrp (1)           - 登录到一个新组

    2)命令格式:

newgrp <用户组>

    3)实例:

[root@localhost user1]# su - user1
[user1@localhost ~]$ id user1
uid=6667(user1) gid=8890(grp1) 组=8890(grp1),8892(grp2),8893(grp3)
[user1@localhost ~]$ newgrp grp1       #进入grp1组
[user1@localhost ~]$ touch txt-01
[user1@localhost ~]$ ll txt-01 
-rw-r--r--. 1 user1 grp1 0 6月  19 14:58 txt-01    #进入grp1组后,创建的文件的属组为grp1了
[user1@localhost ~]$ newgrp grp2       #进入grp2组
[user1@localhost ~]$ touch txt-02
[user1@localhost ~]$ ll txt-02
-rw-r--r--. 1 user1 grp2 0 6月  19 14:59 txt-02    #进入grp1组后,创建的文件的属组为grp2了
[user1@localhost ~]$ newgrp grp3       #进入grp3组
[user1@localhost ~]$ touch txt-03
[user1@localhost ~]$ ll txt-03
-rw-r--r--. 1 user1 grp3 0 6月  19 14:59 txt-03    #进入grp1组后,创建的文件的属组为grp3了
[user1@localhost ~]$ ll
总用量 0
-rw-r--r--. 1 user1 grp1 0 6月  19 14:58 txt-01
-rw-r--r--. 1 user1 grp2 0 6月  19 14:59 txt-02
-rw-r--r--. 1 user1 grp3 0 6月  19 14:59 txt-03

二、用户查看命令

    相关命令:whoami、who、w

1、whoami命令

    1)功能:

    打印当前登录的用户名称

[root@localhost /]# whatis whoami
whoami (1)           - print effective userid    #打印有效标识

    2)实例:

[root@localhost /]# whoami
root
[root@localhost /]# su - user1
上一次登录:三 6月 19 14:58:11 CST 2019pts/0 上
[user1@localhost ~]$ whoami
user1

2、who命令

    1)功能:

[user1@localhost ~]$ whatis who
who (1)              - show who is logged on   #显示谁已登录

    2)常用选项:

选项含义
-b , --boot上次系统启动时间
-l , --login显示系统登录进程
--lookup尝试通过DNS查验主机名
-q , --count列出所有已登录用户的登录名与用户数量
-u , --users列出已登录的用户
--help显示帮助信息
-r显示当前的运行级别

    3)实例:

[root@localhost /]# who -b    #列出上次系统启动时间
         系统引导 2019-06-18 10:42
[root@localhost /]# who -q    #列出所有已登录用户的用户名与用户数量
root
# 用户数=1
[root@localhost /]# who -u    #列出已登录的用户
root     pts/0        2019-06-18 10:57   .          3192 (192.168.26.1)
[root@localhost /]# who --lookup     
root     pts/0        2019-06-18 10:57 (192.168.26.1)
[root@localhost /]# who -r     #显示当前运行级别
         运行级别 3 2019-06-18 10:44
[root@localhost /]# who -l    #显示系统登录进程
登录   tty1         2019-06-18 10:43               970 id=tty1

3、w命令

    1)功能:

    显示目前登录系统的用户信息

[root@localhost /]# whatis w
w (1)                - Show who is logged on and what they are doing.  #显示谁已登录以及他们正在做什么

    2)常用选项:

选项含义
-f开启或关闭显示用户从何处登入系统
-h不显示各栏位的标题信息列
-s使用简洁格式列表,不显示用户登入时间
--help显示帮助信息

    3)实例:

[root@localhost /]# w
 15:24:59 up 1 day,  4:43,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.26.1     二10    3.00s  1.98s  0.04s w

[root@localhost /]# w -h
root     pts/0    192.168.26.1     二10    6.00s  1.96s  0.02s w -h

[root@localhost /]# w -f
 15:25:04 up 1 day,  4:43,  1 user,  load average: 0.08, 0.03, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     二10    0.00s  1.98s  0.04s w -f

[root@localhost /]# w -s
 15:25:13 up 1 day,  4:43,  1 user,  load average: 0.07, 0.03, 0.05
USER     TTY      FROM              IDLE WHAT
root     pts/0    192.168.26.1      1.00s w -s