[TOC]
思维导图
一、用户组管理
1、相关文件
(1)/etc/group
1 ? 03:00:11 root@yyds,10.0.0.100:<sub> # cat /etc/group
root:x:0:jinjin
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
#root:x:0:jinjin
root 组名字
x 组密码占位符
0 GID
jinjin 显示该组的附加成员
(2)#增
groupadd [选项] 组名
-g 指定组的gid
-r 指定gid范围201-999之间的系统组号
0 ✓ 03:04:44 root@yyds,10.0.0.100:</sub> # groupadd tianshen
0 ✓ 03:10:07 root@yyds,10.0.0.100:<sub> # tail -1 /etc/passwd
jinjin:x:1001:1001::/home/jinjin:/bin/bash
0 ✓ 03:11:12 root@yyds,10.0.0.100:</sub> # tail -1 /etc/group
tianshen:x:1002:
0 ✓ 03:11:33 root@yyds,10.0.0.100:<sub> # id tianshen
id: tianshen: no such user
# -g
1 ✗ 03:12:00 root@yyds,10.0.0.100:</sub> # groupadd tainshen1 -g 666
0 ✓ 03:15:13 root@yyds,10.0.0.100:<sub> # tail -1 /etc/group
tainshen1:x:666:
# -r
0 ✓ 03:15:53 root@yyds,10.0.0.100:</sub> # groupadd tianshen2 -r
0 ✓ 03:16:39 root@yyds,10.0.0.100:<sub> # tail -1 /etc/group
tianshen2:x:665:
(3)#删
groupdel
0 ✓ 03:16:42 root@yyds,10.0.0.100:</sub> # groupdel tianshen2
0 ✓ 03:18:37 root@yyds,10.0.0.100:<sub> # tail -1 /etc/group
tainshen1:x:666:
0 ✓ 03:18:42 root@yyds,10.0.0.100:</sub> # tail -3 /etc/group
jinjin:x:1001:
tianshen:x:1002:
tainshen1:x:666:
(4) #改
groupmod
-g 修改用户组Gid
-n 修改组名字
#-g
6 ✗ 03:23:18 root@yyds,10.0.0.100:<sub> # groupmod tianshen -g 889
0 ✓ 03:23:44 root@yyds,10.0.0.100:</sub> # tail -5 /etc/group
postfix:x:89:
ss:x:1000:
jinjin:x:1001:
tianshen:x:889:
tainshen1:x:666:
#-n
0 ✓ 03:23:44 root@yyds,10.0.0.100:<sub> # tail -5 /etc/group
postfix:x:89:
ss:x:1000:
jinjin:x:1001:
tianshen:x:889:
tainshen1:x:666:
0 ✓ 03:24:11 root@yyds,10.0.0.100:</sub> # groupmod tianshen -n baichi
0 ✓ 03:25:14 root@yyds,10.0.0.100:<sub> # tail -5 /etc/group
postfix:x:89:
ss:x:1000:
jinjin:x:1001:
tainshen1:x:666:
baichi:x:889:
(5)查
0 ✓ 03:25:23 root@yyds,10.0.0.100:</sub> # cat /etc/group
root:x:0:jinjin
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
二、用户身份切换
# su - (用户名)
0 ✓ 03:26:59 root@yyds,10.0.0.100:<sub> # useradd apple
0 ✓ 03:31:55 root@yyds,10.0.0.100:</sub> # su- apple
-bash: su-: command not found
127 ✗ 03:32:02 root@yyds,10.0.0.100:<sub> # su - apple
[apple@yyds </sub>]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
#切换组信息
[apple@yyds <sub>]$ newgrp baichi
[apple@yyds </sub>]$ id
uid=1002(apple) gid=889(baichi) groups=889(baichi),1002(apple) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[apple@yyds ~]$ id apple
uid=1002(apple) gid=1002(apple) groups=1002(apple),889(baichi)
Linux系统中,有时候普通用户有些事情是没办法操作,除非是root管理员用户才能做到。这时就需要临时切换到root管理员身份来做事了。那么在学习如何切换用户之前,我们先来了解下用户工作环境。
如何在普通用户的情况下,完成日常工作?
1)su 切换用户,使用普通用户登录,然后使用su命令切换到root。
优点:简单,方便
缺点:需要知道root密码,不安全,切换到root没有日志审计功能
2)sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户。
优点:安全,方便
缺点:复杂
三、shell的种类
交互式shell //等待用户输入执行的命令(终端操作,需要不断提示)
非交互式shell //执行shell脚本, 脚本执行结束后shell自动退出
登陆shell //需要输入用户名和密码才能进入shell su - zls
非登陆shell //不需要输入用户和密码就能进入,比如执行sh, bash, su username
//查看登陆shell
[root@zls <sub>]# pstree
//临时设置,永久设置需要写配置文件
[apple@yyds </sub>]$ export PS1='[\h@\u \t]#'
[yyds@apple 03:50:06]#
1 ✗ 03:51:34 root@yyds,10.0.0.100:<sub> # su - apple
Last login: Thu Apr 7 03:38:29 EDT 2022 on pts/0
[apple@yyds </sub>]$
四、环境变量文件
(1)局部环境变量
<sub>/.bashrc
</sub>/.bash_profile
(2)全局环境变量
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
(3)加载顺序
/etc/profile
/etc/profile.d/*.sh
<sub>/.bash_profile
</sub>/.bashrc
/etc/bashrc
(4)Bash的配置文件保存用户的工作环境
个人配置文件: <sub>/.bash_profile </sub>/.bashrc
全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc
profile类文件, 设定环境变量, 登陆前运行的脚本和命令
bashrc 类文件, 设定本地变量, 定义命令别名
全局配置和个人配置设置冲突, 优先使用个人配置准
五、visudo-用户身份提权
1、sudo 命令提权
sudo就是普通用户提权,执行root用户可执行的命令。
2、为什么要用sudo
在公司,使用普通用户,但有些命令只有root才可以执行。
3、sudo如何使用
(1)系统超级管理员root,需要sudo的配置(发一个兵符给普通用户)
(2)普通用户只需要在执行命令之前加上sudo即可
4、sudo的配置
1、安装sudo命令 yum install -y sudo
2、sudo的配置文件
0 ? 03:09:41 root@yyds,10.0.0.100:<sub> # vim /etc/sudoers
用户名 所有主机(角色) 所有命令的执行权限
root ALL=(ALL) ALL
moon ALL=(ALL) /bin/cp
#普通用户不需要输入密码
moon ALL=(ALL) NOPASSWD:ALL
3、推荐修改sudo的方式:
0 ✓ 03:33:39 root@yyds,10.0.0.100:</sub> # visudo
# -c 选项
✗ 04:00:41 root@yyds,10.0.0.100:<sub> # visudo -c
/etc/sudoers: parsed OK
4、sudo的配置
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
pig ALL=(ALL) NOPASSWD:/bin/cat,/bin/cp,!/bin/mkdir
0 ✓ 03:34:39 root@yyds,10.0.0.100:</sub> # su - pig
Last login: Fri Apr 8 03:32:12 EDT 2022 on pts/1
[pig@yyds <sub>]$ sudo 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
[pig@yyds </sub>]$ sudo mkdir -p /bbc/sd
Sorry, user pig is not allowed to execute '/bin/mkdir -p /bbc/sd' as root on yyds.
[pig@yyds <sub>]$ sudo cp /etc/passwd /home/pig/
[pig@yyds </sub>]$ ll /home/pig
total 4
-rw-r--r--. 1 root root 997 Apr 8 03:36 passwd
#sudoers的其他别名配置
主机别名
Host_Alias FILESERVERS = localhost, web01
命令别名
Cmnd_Alias ZLSCMD = /bin/cp,/bin/mv
Cmnd_Alias ZLSUNCMD =!/bin/rm,!/bin/su
角色别名
User_Alias
(4)给组发兵符,好处:用户提权直接加入该组即可,不用再修改配置。
%test666 ALL=(ALL) NOPASSWD:ALL
# 1.会修改visudo,添加用户提权
# 2.给用户免密执行sudo的权限
# 3.自定义用户的可执行命令,和不可执行命令
# 4.给组分配提权的权限
# 5.提权不用修改visudo,只需要加入wheel组即可
注意:除非企业中有要求,哪些命令需要用,哪些不能使用
#
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
%xiaomi ALL=(ALL) /bin/ls
2 ✗ 04:21:47 root@yyds,10.0.0.100:<sub> # usermod pig -aG xiaomi
0 ✓ 04:22:56 root@yyds,10.0.0.100:</sub> # id pig
uid=1004(pig) gid=1004(pig) groups=1004(pig),1005(xiaomi)
0 ✓ 04:23:05 root@yyds,10.0.0.100:<sub> # su - pig
Last login: Fri Apr 8 04:01:17 EDT 2022 on pts/1
[pig@yyds </sub>]$ sudo ls /
[sudo] password for pig:
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[pig@yyds ~]$ sudo mkdir /star
Sorry, user pig is not allowed to execute '/bin/mkdir /star' as root on yyds.