文章目录
展开用户管理
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
用户身份提权
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用户。
优点:安全,方便
缺点:复杂
##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文件中都是正确的语法
Comments | NOTHING