用户管理

Linux中用户的概述

用户指的是能够正常登录Linux或windows系统
与windows用户的区别:

  • 支持同一个用户多个设备同时登录

  • 支持不同的用户多个设备同时登录

用户的作用

1:系统上的每一个进程(运行的程序)都需要特定的用户运行
2:每一个文件都有特定的用户拥有,所以访问一个文件或目录受到用户的限制
3:进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关

查看系统中用户的命令

## 查看指定用户的信息
id:默认情况不加用户名则查看当前登录用户的信息
[root@web ~]# id 
uid=0(root) gid=0(root) groups=0(root)

## 语法:
id 用户名
[root@web ~]# id www
uid=666(www) gid=666(www) groups=666(www)

uid=666(www)     # UserID:用户id号   
gid=666(www)     # GroupID:用户组id号
groups=666(www)  # 该用户的所有组信息

## 查看进程(每个进程的运行用户)
[root@web ~]# ps -ef 
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 15:27 ?        00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 15:27 ?        00:00:00 [kthreadd]
root          4      2  0 15:27 ?        00:00:00 [kworker/0:0H]
root          5      2  0 15:27 ?        00:00:00 [kworker/u256:0]
root          6      2  0 15:27 ?        00:00:00 [ksoftirqd/0]
root          7      2  0 15:27 ?        00:00:00 [migration/0]
root          8      2  0 15:27 ?        00:00:00 [rcu_bh]
root          9      2  0 15:27 ?        00:00:03 [rcu_sched]
root         10      2  0 15:27 ?        00:00:00 [lru-add-drain]
root         11      2  0 15:27 ?        00:00:00 [watchdog/0]
root         13      2  0 15:27 ?        00:00:00 [kdevtmpfs]
root         14      2  0 15:27 ?        00:00:00 [netns]
root         15      2  0 15:27 ?        00:00:00 [khungtaskd]
root         16      2  0 15:27 ?        00:00:00 [writeback]
root         17      2  0 15:27 ?        00:00:00 [kintegrityd]
root         18      2  0 15:27 ?        00:00:00 [bioset]
root         19      2  0 15:27 ?        00:00:00 [bioset]
root         20      2  0 15:27 ?        00:00:00 [bioset]
root         21      2  0 15:27 ?        00:00:00 [kblockd]
root         22      2  0 15:27 ?        00:00:00 [md]
root         23      2  0 15:27 ?        00:00:00 [edac-poller]
root         24      2  0 15:27 ?        00:00:00 [watchdogd]
root         30      2  0 15:27 ?        00:00:00 [kswapd0]
root         31      2  0 15:27 ?        00:00:00 [ksmd]
root         32      2  0 15:27 ?        00:00:00 [khugepaged]
root         33      2  0 15:27 ?        00:00:00 [crypto]
root         41      2  0 15:27 ?        00:00:00 [kthrotld]
root         42      2  0 15:27 ?        00:00:00 [kworker/u256:1]
root         43      2  0 15:27 ?        00:00:00 [kmpath_rdacd]
root         44      2  0 15:27 ?        00:00:00 [kaluad]
root         45      2  0 15:27 ?        00:00:00 [kpsmoused]
root         47      2  0 15:27 ?        00:00:00 [ipv6_addrconf]
root         60      2  0 15:27 ?        00:00:00 [deferwq]
root         95      2  0 15:27 ?        00:00:00 [kauditd]
root        235      2  0 15:27 ?        00:00:00 [mpt_poll_0]
root        236      2  0 15:27 ?        00:00:00 [nfit]
root        237      2  0 15:27 ?        00:00:00 [mpt/0]
root        240      2  0 15:27 ?        00:00:00 [ata_sff]
root        246      2  0 15:27 ?        00:00:00 [scsi_eh_0]
root        247      2  0 15:27 ?        00:00:00 [scsi_tmf_0]
root        248      2  0 15:27 ?        00:00:00 [scsi_eh_1]
root        250      2  0 15:27 ?        00:00:00 [scsi_tmf_1]
root        251      2  0 15:27 ?        00:00:00 [scsi_eh_2]
root        252      2  0 15:27 ?        00:00:00 [scsi_tmf_2]
root        257      2  0 15:27 ?        00:00:00 [irq/16-vmwgfx]
root        258      2  0 15:27 ?        00:00:00 [ttm_swap]
root        278      2  0 15:27 ?        00:00:00 [bioset]
root        279      2  0 15:27 ?        00:00:00 [xfsalloc]
root        280      2  0 15:27 ?        00:00:00 [xfs_mru_cache]
root        281      2  0 15:27 ?        00:00:00 [xfs-buf/sda3]
root        282      2  0 15:27 ?        00:00:00 [xfs-data/sda3]
root        283      2  0 15:27 ?        00:00:00 [xfs-conv/sda3]
root        284      2  0 15:27 ?        00:00:00 [xfs-cil/sda3]
root        285      2  0 15:27 ?        00:00:00 [xfs-reclaim/sda]
root        286      2  0 15:27 ?        00:00:00 [xfs-log/sda3]
root        287      2  0 15:27 ?        00:00:00 [xfs-eofblocks/s]
root        288      2  0 15:27 ?        00:00:02 [xfsaild/sda3]
root        289      2  0 15:27 ?        00:00:00 [kworker/0:1H]
root        366      1  0 15:27 ?        00:00:00 /usr/lib/systemd/systemd-journald
root        395      1  0 15:27 ?        00:00:00 /usr/lib/systemd/systemd-udevd
root        431      2  0 15:27 ?        00:00:00 [xfs-buf/sda1]
root        432      2  0 15:27 ?        00:00:00 [xfs-data/sda1]
root        435      2  0 15:27 ?        00:00:00 [xfs-conv/sda1]
root        436      2  0 15:27 ?        00:00:00 [xfs-cil/sda1]
root        437      2  0 15:27 ?        00:00:00 [xfs-reclaim/sda]
root        438      2  0 15:27 ?        00:00:00 [xfs-log/sda1]
root        440      2  0 15:27 ?        00:00:00 [xfs-eofblocks/s]
root        443      2  0 15:27 ?        00:00:00 [xfsaild/sda1]
root        466      1  0 15:27 ?        00:00:00 /sbin/auditd
root        478      2  0 15:27 ?        00:00:00 [kworker/u257:0]
root        481      2  0 15:27 ?        00:00:00 [hci0]
root        483      2  0 15:27 ?        00:00:00 [hci0]
root        487      2  0 15:27 ?        00:00:00 [kworker/u257:2]
root        531      1  0 15:27 ?        00:00:00 /usr/lib/systemd/systemd-logind
dbus        532      1  0 15:27 ?        00:00:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile -
root        535      1  0 15:27 ?        00:00:00 /usr/sbin/NetworkManager --no-daemon
root        536      1  0 15:27 ?        00:00:00 /usr/bin/VGAuthService -s
root        537      1  0 15:27 ?        00:00:05 /usr/bin/vmtoolsd
polkitd     541      1  0 15:27 ?        00:00:00 /usr/lib/polkit-1/polkitd --no-debug
root        547      1  0 15:27 ?        00:00:00 /usr/sbin/crond -n
root        550      1  0 15:27 tty1     00:00:00 /sbin/agetty --noclear tty1 linux
root        842      1  0 15:27 ?        00:00:00 /usr/sbin/rsyslogd -n
root        843      1  0 15:27 ?        00:00:25 /usr/local/bin/dockerd --default-ulimit nofile=65535:65535
root        844      1  0 15:27 ?        00:00:00 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root        846      1  0 15:27 ?        00:00:00 /usr/sbin/sshd -D
root        920    843  0 15:27 ?        00:00:21 containerd --config /var/run/docker/containerd/containerd.toml --log-le
root       1012      1  0 15:27 ?        00:00:00 /usr/libexec/postfix/master -w
postfix    1016   1012  0 15:27 ?        00:00:00 pickup -l -t unix -u
postfix    1017   1012  0 15:27 ?        00:00:00 qmgr -l -t unix -u
root       1498    843  0 15:27 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 2222
root       1505    843  0 15:27 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip :: -host-port 2222 -con
root       1518    843  0 15:27 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 6379
root       1522    843  0 15:27 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip :: -host-port 63790 -co
root       1534    843  0 15:27 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 3306
root       1541    843  0 15:27 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip :: -host-port 33062 -co
root       1556    843  0 15:27 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 3306
root       1559      1  0 15:27 ?        00:00:05 /usr/local/bin/containerd-shim-runc-v2 -namespace moby -id a97f5b939d9b
root       1571    843  0 15:27 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip :: -host-port 33061 -co
root       1583      1  0 15:27 ?        00:00:05 /usr/local/bin/containerd-shim-runc-v2 -namespace moby -id b38a37075701
root       1611    843  0 15:27 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -
root       1613   1559  0 15:27 pts/0    00:00:00 /bin/bash ./entrypoint.sh start web
root       1634    843  0 15:27 ?        00:00:00 /usr/local/bin/docker-proxy -proto tcp -host-ip :: -host-port 80 -conta
root       1642   1583  0 15:27 pts/0    00:00:00 /bin/bash ./entrypoint.sh start task
root       1659      1  0 15:27 ?        00:00:05 /usr/local/bin/containerd-shim-runc-v2 -namespace moby -id ed792e914fff
root       1690      1  0 15:27 ?        00:00:05 /usr/local/bin/containerd-shim-runc-v2 -namespace moby -id d5f23a8df993
root       1727      1  0 15:27 ?        00:00:05 /usr/local/bin/containerd-shim-runc-v2 -namespace moby -id d1c0300fdb7e
root       1739   1659  0 15:27 pts/0    00:00:00 /bin/sh ./entrypoint.sh
root       1750      1  0 15:27 ?        00:00:05 /usr/local/bin/containerd-shim-runc-v2 -namespace moby -id 1f7d88caf6e5
root       1775      1  0 15:27 ?        00:00:05 /usr/local/bin/containerd-shim-runc-v2 -namespace moby -id ef29ed1666bf
root       1781      1  0 15:27 ?        00:00:05 /usr/local/bin/containerd-shim-runc-v2 -namespace moby -id 2379d6492f11
root       1785   1690  0 15:27 pts/0    00:00:00 /bin/sh ./entrypoint.sh
polkitd    1841   1727  0 15:27 ?        00:00:04 mariadbd --character-set-server=utf8 --collation-server=utf8_general_ci
root       1859   1781  0 15:27 pts/0    00:00:00 /bin/sh ./entrypoint.sh
polkitd    1877   1775  0 15:27 ?        00:00:10 redis-server *:6379
root       1914   1750  0 15:27 pts/0    00:00:00 nginx: master process nginx -g daemon off;
root       2024   1613  0 15:27 pts/0    00:00:08 python jms start web
root       2025   1642  0 15:27 pts/0    00:00:06 python jms start task
root       2042   1785  0 15:27 pts/0    00:00:01 wisp
root       2107   1859  0 15:27 pts/0    00:00:01 /usr/bin/python2 /usr/bin/supervisord
root       2238   1914  0 15:27 ?        00:00:00 /usr/sbin/cron
101        2247   1914  0 15:27 pts/0    00:00:00 nginx: worker process
root       2291   2107  0 15:27 pts/0    00:00:00 /usr/local/guacamole/sbin/guacd -b 0.0.0.0 -L error -f
root       2292   2107  0 15:27 pts/0    00:00:00 /opt/lion/lion
root       2326   2025  0 15:28 pts/0    00:00:09 /usr/local/bin/python /usr/local/bin/celery -A ops worker -P threads -l
root       2328   2025  0 15:28 pts/0    00:00:00 /usr/local/bin/python start_celery_beat.py
root       2329   2025  0 15:28 pts/0    00:00:09 /usr/local/bin/python /usr/local/bin/celery -A ops worker -P threads -l
root       2475   2328  0 15:28 pts/0    00:00:04 /usr/local/bin/python /usr/local/bin/celery -A ops beat -l INFO --sched
root       2507   2024  0 15:28 pts/0    00:00:07 /usr/local/bin/python /usr/local/bin/celery -A ops flower -logging=info
root       2511   2024  0 15:28 pts/0    00:00:01 /usr/local/bin/python /usr/local/bin/gunicorn jumpserver.asgi:applicati
root       2638   2511  0 15:28 pts/0    00:00:21 /usr/local/bin/python /usr/local/bin/gunicorn jumpserver.asgi:applicati
root       2639   2511  0 15:28 pts/0    00:00:27 /usr/local/bin/python /usr/local/bin/gunicorn jumpserver.asgi:applicati
root       2640   2511  0 15:28 pts/0    00:00:24 /usr/local/bin/python /usr/local/bin/gunicorn jumpserver.asgi:applicati
root       2980   1739  0 15:28 pts/0    00:00:01 ./koko
root       3004   2042  0 15:28 pts/0    00:00:00 /opt/magnus/magnus
root      46289      2  0 16:18 ?        00:00:00 [loop0]
root      46298      2  0 16:18 ?        00:00:00 [ext4-rsv-conver]
root      49178    846  0 16:21 ?        00:00:00 sshd: root@pts/0
root      49180  49178  0 16:21 pts/0    00:00:00 -bash
root      73870      2  0 16:50 ?        00:00:00 [kworker/0:0]
root      76486      2  0 16:53 ?        00:00:00 [kworker/0:1]
root      80833      2  0 16:58 ?        00:00:00 [kworker/0:2]
root      83466      2  0 17:01 ?        00:00:00 [kworker/0:3]
root      85670  49180  0 17:04 pts/0    00:00:00 ps -ef

系统用户相关的配置文件

## 用户信息配置文件
/etc/passwd

## 用户密码存储文件
/etc/shadow

## 用户组信息配置文件
/etc/group

## 用户组密码存储文件
/etc/gshadow

/etc/passwd

/etc/passwd文件又称用户信息文件,用于存储 Linux 系统中用户的信息。

[root@01:28:59wudidesangege ~]\ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
wyk:x:1000:1000::/home/wyk:/bin/bash

/etc/passwd配置文件解析

按:分隔 第一列 第二列 第三列 第四列 第五列 第六列 第七列
内容 root x 0 0 root /root /bin/bash
作用 用户名 密码占位符 Uid Gid 描述信息 用户家目录 用户登陆的shell

/etc/shadow

/etc/shadow 文件又称影子文件,用于存储 Linux 系统中用户的密码信息。
前面介绍了 /etc/passwd 文件,由于该文件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了此文件中。/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。

[root@web ~]# cat /etc/shadow
root:$6$i8oyKJc0tDjkdi4h$B1CWImm3siavv3w1OwV1qu2slshRSKpt/60lWovYkXx.2cWbkqs4BdFrwin./lSiXdLU.J1HO/to1pIXoPlax/::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
mail:*:18353:0:99999:7:::
operator:*:18353:0:99999:7:::
games:*:18353:0:99999:7:::
ftp:*:18353:0:99999:7:::
nobody:*:18353:0:99999:7:::
systemd-network:!!:19458::::::
dbus:!!:19458::::::
polkitd:!!:19458::::::
sshd:!!:19458::::::
postfix:!!:19458::::::
www:!!:19541:0:99999:7:::

#以前CentOS6的文件↓
daemon:*:18353:0:99999:7:::

/etc/shadow 配置文件解析

以:分隔 第一列 第二列 第三列 第四列 第五列 第六列 第七列 第八列 第九列
内容 daemon * 17834 0 99999 7 2 6627567
作用 用户名 密码(加密)或者没密码 从1970年开始到上一次密码过了多少天 密码最少使用多少天,0代表没有限制 密码最大使用多少天 密码快过期前7天提示要修改密码 密码过期后2天强制修改密码 用户账户过期时间从1970年开始 保留位

 用户分类(约定、规范CentOS7)

用户UID号 系统中含义
0 超级管理员用户
1-200 系统用户(系统自己创建的)
201-999 系统用户(可以手动创建)
1000+ 普通用户

chage命令修改用户信息

[root@web ~]# useradd hg
[root@web ~]# echo "123" |passwd --stdin hg
Changing password for user hg.#修改用户hg的密码
passwd: all authentication tokens updated successfully.  #Passwd:所有认证令牌更新成功。
[root@web ~]# tail -1 /etc/shadow
hg:$6$5QuVGwvJ$QEXO/v67DYyP99E2x4aVz/X8UVJpe6Xc8DdxMtswRcq.4aXntWynIYt7nErpmEi6ABY3vlgjKlgXAOcV/UFDf.:18705:0:99999:7:::

-d :设置最近一次更改密码时间, 0下次登陆系统强制修改密码
[root@web ~]# chage -d "2021-03-21" hg
[root@web ~]# tail -n1 /etc/shadow
hg:$6$5QuVGwvJ$QEXO/v67DYyP99E2x4aVz/X8UVJpe6Xc8DdxMtswRcq.4aXntWynIYt7nErpmEi6ABY3vlgjKlgXAOcV/UFDf.:18706:0:99999:7:::

-m :设置用户两次改变密码之间使用"最小天数"
[root@web ~]# chage -m 2 hg
[root@web ~]# tail -n1 /etc/shadow
hg:$6$5QuVGwvJ$QEXO/v67DYyP99E2x4aVz/X8UVJpe6Xc8DdxMtswRcq.4aXntWynIYt7nErpmEi6ABY3vlgjKlgXAOcV/UFDf.:18707:2:99999:7:::

-M :设置用户两次改变密码之间使用"最大天数"
[root@web ~]# tail -n1 /etc/shadow
hg:$6$5QuVGwvJ$QEXO/v67DYyP99E2x4aVz/X8UVJpe6Xc8DdxMtswRcq.4aXntWynIYt7nErpmEi6ABY3vlgjKlgXAOcV/UFDf.:18707:2:15:7:::

-W :设置密码更改警告时间 将过期警告天数设为“警告天数”
[root@web ~]# chage -W 7 hg
[root@web ~]# tail -n1 /etc/shadow
hg:$6$5QuVGwvJ$QEXO/v67DYyP99E2x4aVz/X8UVJpe6Xc8DdxMtswRcq.4aXntWynIYt7nErpmEi6ABY3vlgjKlgXAOcV/UFDf.:18707:2:15:7:::

-I :设置密码过期天数后, 密码为失效状态
[root@web ~]# chage -I 3 hg
[root@web ~]# tail -n1 /etc/shadow
hg:$6$5QuVGwvJ$QEXO/v67DYyP99E2x4aVz/X8UVJpe6Xc8DdxMtswRcq.4aXntWynIYt7nErpmEi6ABY3vlgjKlgXAOcV/UFDf.:18707:2:15:7:3::

-E :设置用户过期时间, 账户失效后无法登陆
[root@web ~]# chage -E "2021-03-22" hg
[root@web ~]# tail -n1 /etc/shadow
hg:$6$5QuVGwvJ$QEXO/v67DYyP99E2x4aVz/X8UVJpe6Xc8DdxMtswRcq.4aXntWynIYt7nErpmEi6ABY3vlgjKlgXAOcV/UFDf.:18707:2:15:7:3:18708:

-l :显示用户信息
[root@web ~]# chage -l hg
Last password change                    : Mar 21, 2021
Password expires                    : Apr 05, 2021
Password inactive                   : Apr 08, 2021
Account expires                     : Mar 22, 2021
Minimum number of days between password change      : 2
Maximum number of days between password change      : 15
Number of days of warning before password expires   : 7

用户操作命令

用户创建

useradd adduser
注意:创建用户在默认不指定组的情况下,会同时创建出跟该用户名相同的组,跟uid相同的gid,除非-g指定组,则不会创建同名组

## 语法
useradd [选项]... 用户名
[root@web ~]# useradd hg1

## 选项
-u:创建用户时指定用户的uid
-g:创建用户时指定用户的gid 指定用户组名(该组必须存在)
-G:创建用户时指定用户的附加组(该组必须存在)
-c:创建用户时指定用户的描述信息
-d:创建用户时指定用户的家目录(该目录可以不存在,会自动创建)
-M:创建用户时不创建用户的家目录
-s:创建用户时指定用户登录的shell(默认是/bin/bash)
-r:创建用户时指定用户为系统用户

修改用户

## 语法
usermod [选项] 用户名
## 选项
-u:修改用户时指定用户的uid
-g:修改用户时指定用户的gid 指定用户组名(该组必须存在)
-G:修改用户时指定用户的附加组,会覆盖原来的附加组(该组必须存在)
-a:修改用户附加组的时候,配合-G追加使用
-c:修改用户时指定用户的描述信息
-m:修改用户时迁移用户的家目录,必须配合-d使用
-d:修改用户时指定用户的家目录(该目录可以不存在,会自动创建)
-M:修改用户时不创建用户的家目录
-s:修改用户时指定用户登录的shell(默认是/bin/bash)
-r:修改用户时指定用户为系统用户
-l:更改用户登录名
-L:锁定用户
-U:解锁用户

删除用户

userdel delete
注意:删除用户,默认情况下,只删除用户本身,其他相关目录文件不会删除

## 语法
userdel [选项]... 用户名
[root@web ~]# userdel hg1

## 选项
-r:递归删除,用户所有相关文件

查看用户其他命令

## 查看当前系统登录了哪些用户
[root@web ~]# who
root     pts/0        2021-04-01 00:00 (10.0.0.1)
#用户     终端            登录时间        #从哪连接过来

## 查看当前系统登录了哪些用户
[root@web ~]# w
 00:15:07 up  2:14,  1 user,  load average: 0.10, 0.16, 0.17
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         00:00     ?     2:40   0.00s w

## 查看当前登录的用户
[root@web ~]# whoami
root

用户组管理

[root@web ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
input:x:999:
systemd-journal:x:190:
systemd-network:x:192:
dbus:x:81:
polkitd:x:998:
ssh_keys:x:997:
sshd:x:74:
postdrop:x:90:
postfix:x:89:
www:x:666:
hg:x:1000:
# 1.组名字
# 2.组密码占位符
# 3.GID
# 4.显示该组的附加成员

[root@web ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
input:x:999:
systemd-journal:x:190:
systemd-network:x:192:
dbus:x:81:
polkitd:x:998:
ssh_keys:x:997:
sshd:x:74:
postdrop:x:90:
postfix:x:89:
www:x:666:
hg:x:1000:
[root@web ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
tty:::
disk:::
lp:::
mem:::
kmem:::
wheel:::
cdrom:::
mail:::postfix
man:::
dialout:::
floppy:::
games:::
tape:::
video:::
ftp:::
lock:::
audio:::
nobody:::
users:::
utmp:!::
utempter:!::
input:!::
systemd-journal:!::
systemd-network:!::
dbus:!::
polkitd:!::
ssh_keys:!::
sshd:!::
postdrop:!::
postfix:!::
www:!::
hg:!::
# 1.组名字
# 2.组密码(空和!是没有密码)
# 3.组管理员
# 4.显示该组的附加成员

## 相关命令
# 增
groupadd [选项] 组名
## 选项
-g:指定组的gid
[root@web ~]# groupadd hg1 -g 321
[root@web ~]# tail -1 /etc/group
hg1:x:321:

-r:指定gid范围201-999之间的系统组
[root@web ~]# groupadd hg2 -r
[root@web ~]# tail -1 /etc/group
hg2:x:320:

# 删
groupdel 组名
[root@web ~]# groupdel hg1

# 改
groupmod [选项] 用户名
## 选项
-g:修改组的gid
[root@web ~]# groupmod -g 1123 hg
[root@web ~]# tail -2 /etc/group
hg:x:1123:
hg2:x:320:

-n:修改组名字
[root@web ~]# groupmod hg -n yyds
[root@web ~]# tail -1 /etc/group
yyds:x:1123:

#查
[root@web ~]# cat /etc/group

用户身份切换

Linux系统中,有时候普通用户有些事情是没办法操作,除非是root管理员用户才能做到。这时就需要临时切换到
root管理员身份来做事了。那么在学习如何切换用户之前,我们先来了解下用户工作环境。
如何在普通用户的情况下,完成日常工作?
1:su 切换用户,使用普通用户登录,然后使用su命令切换到root。
优点:简单,方便
缺点:需要知道root密码,不安全,切换到root没有日志审计功能

2:sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户。
优点:安全,方便
缺点:复杂

su命令前戏

##shell的种类
- 交互式shell
- 非交互式shell
- 登录shell
  - 需要输入用户名和密码,才可以登录
- 非登陆shell
  - 不需要输入用户名和密码,就可以登录

##系统的环境变量文件
## 局部环境变量:切换用户用户需要重新配置
~/.bashrc
~/.bash_profile

## 全局环境变量:所有用户都生效
/etc/profile
/etc/profile.d/*.sh  #需要写的变量最好放在/etc/profile.d/ 方便删减
/etc/bashrc

## 5个文件变量文件的加载顺序
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc

验证方法
[root@web ~]# vim ~/.bashrc
echo 1
[root@web ~]# vim ~/.bash_profile
echo 2
[root@web ~]# vim /etc/profile
echo 3
[root@web ~]# vim /etc/profile.d/1.sh
echo 4
[root@web ~]# vim /etc/bashrc 
echo 5

断开Xshell重新连接
Connecting to 10.0.0.81:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last failed login: Thu Apr  8 00:00:38 CST 2021 on pts/0
There was 1 failed login attempt since the last successful login.
Last login: Sat Mar 27 00:01:40 2021
3
4
2
1
5

用户身份提权

什么是sudo
sudo就是普通用户可以提权,执行root用户可以执行的命令
为什么要用到sudo
如果在公司中,入职后,领导给运维的用户是普通用户,但是有些命令只能root执行
sudo如何使用

# 1.系统的超级管理员(root)需要做sudo的配置(发一个兵符给指定的普通用户)
# 2.普通用户只需要在,执行的命令之前,加上sudo即可

sudo的配置

# 第一种提权
# visudo
:100
root ALL=(ALL) ALL
user ALL=(ALL) ALL
# 提权完毕后
普通用户执行命令之前要加 sudo
[baolong@localhost root]$ sudo ls -l

# 普通用户免密
baolong ALL=(ALL) NOPASSWD:ALL (免密)

# 讲解
# 用户名 所有主机 所有命令的执行权限
root ALL=(ALL) ALL

# 第二种提权
针对多个用户
visudo
108附近
%wheel ALL=(ALL) ALL

# 可自己建立一个组

将用户加入组
usermod hg -G wheel

## sudo不认识别名,只能走系统命令
# 设置主机的别名
Host_Alias HOST = localhost web01 web02
# 设置用户的别名
User_Alias OLDBOY = xxx,yyy
# 设置命令的别名
Cmnd_Alias COM = /bin/cp,/bin/mv,/bin/cat

## 推荐修改sudo的方式
-c:检查sudoers文件的语法
[root@web ~]# visudo -c
/etc/sudoers: parsed OK   #  OK说明sudo文件中都是正确的语法