day16用户组管理及用户提权

day16用户组管理及用户的提权


用户组管理


# 相关文件
/etc/group
root:x:0:
# 1.组名字
# 2.组密码占位符
# 3.GID
# 4.显示该组的附加成员

/etc/gshadow
root:::
# 1.组名字
# 2.组密码
# 3.组管理员
# 4.显示该组的附加成员

# 增
groupadd [选项] 组名
# 选项
-g:指定组的gid
-r:指定gid范围201-999之间的系统组

 ✓ 12:46:40 root@localhost.localdomain,10.0.0.158:~ # groupadd hjx100
 ✓ 12:51:35 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
hjx100:x:1017:

#举例
-g
130 ✗ 16:49:00 root@localhost.localdomain,10.0.0.158:~ # groupadd zmm -g 8777
  0 ✓ 16:49:37 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
zmm:x:8777:
-r
  0 ✓ 16:50:01 root@localhost.localdomain,10.0.0.158:~ # groupadd zmmm -r
  0 ✓ 16:50:14 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
zmmm:x:996:

#删
groupdel 组名
# 改
groupmod
-g:修改组的gid
-n:修改组名字
# 举例
-g:
 0 ✓ 12:51:52 root@localhost.localdomain,10.0.0.158:~ # groupmod -g 1666 hjx100 
  0 ✓ 12:55:16 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
hjx100:x:1666:

-n:
✓ 12:55:21 root@localhost.localdomain,10.0.0.158:~ # groupmod -n hjx99 hjx100 
  0 ✓ 12:56:27 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
hjx99:x:1666:

# 查
  0 ✓ 12:56:30 root@localhost.localdomain,10.0.0.158:~ # cat /etc/group

用户身份切换


Linux系统中,有时候普通用户有些事情是没有办法操作,除非是root管理员用户才可以做到,这时候就需要临时切换到root管理员身份来做事,那么在学习如何切换用户之前,我们先来了解下用户工作环境

如何在普通用户的情况下,完成日常工作?

  • su 切换用户,使用普通用户登录,然后使用su命令切换到root。
    • 优点:简单,方便
    • 缺点:需要知道root密码,不安全,切换到root没有日志审计功能
  • sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户。
    • 优点:安全,方便
    • 缺点:复杂

su命令

shell的种类:

  • 交互式shell
  • 非交互式shell
  • 登录shell
    • 用户登录需要用户名和密码,才可以登录
  • 非登录shell
    • 用户登录不需要用户名和密码,就可以登录

系统的环境变量文件


# 局部环境变量文件
~/.bashrc
~/.bash_profile

# 全局环境变量
/etc/profile
/etc/profile.d/*.sh(在/etc/profile.d中所有以.sh结尾的文件)
/etc/bashrc
# 推荐用/etc/profile.d/*.sh,自己创建一个空的.sh结尾的文件去修改

# 加载顺序
[kkk01@localhost ~]$ su - root
Password: 
Last login: Sun Apr 10 13:53:53 CST 2022 on pts/0
加载了/etc/profile
加载了/etc/profile.d
加载了~/.bash_profile
加载了~/.bashrc
加载了/etc/bashrc

✓ 13:54:18 root@localhost.localdomain,10.0.0.158:~ # su - kkk01
Last login: Sun Apr 10 13:52:02 CST 2022 on pts/0
加载了/etc/profile
加载了/etc/profile.d
加载了/etc/bashrc


用户身份提权


sudo命令提权


什么是sudo

sudo就是普通用户可以提权,执行root用户可以执行的命令

为什么要用到sudo

如果在公司中,入职后,领导给运维用户时是普通用户,但有些命令需要root用户才能执行

sudo如何使用

# 1.系统用户的超级管理员(root)需要做sudo的配置(发配权限给普通用户)
# 2.普通用户只需要在执行命令前加上sudo命令即可

sudo的配置(root发兵符的过程)


# 没有sudo的命令,则需要安装
yum install -y sudo

# sudo的配置文件:
✗ 14:53:03 root@localhost.localdomain,10.0.0.158:~ # vim /etc/sudoers
  0 ✓ 14:54:45 root@localhost.localdomain,10.0.0.158:~ # visudo
  
#用户名      所有主机=(所有角色)   所有命令执行权限
root            ALL=(ALL)                ALL
# hjx这个普通用户登录也不需要密码
hjx              ALL=(ALL)          NOPASSWD:ALL

# 推荐修改sudo方式
0 ✓ 14:54:45 root@localhost.localdomain,10.0.0.158:~ # visudo

-c:检查sudoers文件的语法

# 免密切换到root用户,就算不免密,也是输入zls用户的密码,切换到root用户
wq      ALL=(ALL)  ALL

[wq@localhost ~]$ sudo su - root

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for wq: 
Last login: Sun Apr 10 15:10:49 CST 2022 on pts/0
加载了/etc/profile
加载了/etc/profile.d
加载了~/.bash_profile
加载了~/.bashrc
加载了/etc/bashrc
  0 ✓ 15:13:00 root@localhost.localdomain,10.0.0.158:~ # 

# 免密切换root
wq      ALL=(ALL)  nopasswd:ALL

[wq@localhost ~]$ sudo su - root
Last login: Sun Apr 10 15:16:53 CST 2022 on pts/0
加载了/etc/profile
加载了/etc/profile.d
加载了~/.bash_profile
加载了~/.bashrc
加载了/etc/bashrc
  0 ✓ 15:17:19 root@localhost.localdomain,10.0.0.158:~ # 

# 报错
[wq@localhost ~]$ sudo ll
sudo: ll: command not found

原因:ll是别名,不是系统命令,sudo不走别名,只认系统命令

# 普通用户以root身份执行命令
[wq@localhost ~]$ ls -l /root
ls: cannot open directory /root: Permission denied
[wq@localhost ~]$ sudo ls -l /root
total 884
drwxr-xr-x. 2 root root      6 Mar 21 11:17 abc
-rw-------. 2 root root   1469 Mar 16 14:54 anaconda-ks.cfg
-rw-r--r--. 1 root root 420318 Mar 24 11:35 background-2-scaled.jpg
-rw-r--r--. 1 root root   3229 Mar 23 16:24 bashrc


[wq@localhost ~]$ mkdir /root/hjx999
mkdir: cannot create directory ‘/root/hjx999’: Permission denied
[wq@localhost ~]$ sudo mkdir /root/hjx999
[wq@localhost ~]$ sudo ls -l /root/
total 884
drwxr-xr-x. 2 root root      6 Apr 10 15:22 hjx999

# sudoers其他别名配置
Host_Alias     FILESERVERS = fs1, fs2
Cmnd_Alias ZLSCMD = /bin/cp,/bin/mv
Cmnd_Alias ZLSUNCMD =!/bin/rm,!/bin/su
# 命令前面加!就是不能执行此命令
Cmnd_Alias:命令别名
Host_Alias:主机别名
User_Alias:角色别名

# 给组发权限
 # Allows people in group wheel to run all commands
  %wheel   ALL=(ALL)       ALL
 # 加%就是提权组名字
 # 用法:unermod 用户名 -G 提权组
 

总结

# 1.会修改visudo,添加用户提权
# 2.给用户免密执行sudo的权限
# 3.自定义用户的可执行命令,和不可执行命令
# 4.给组分配提权的权限
# 5.提权不用修改visudo,只需要加入wheel组,即可
注意:除非企业中有要求,哪些命令需要用,哪些不能使用

周末练习题


1.创建一个用户oldboy996并设置uid为615

 ✓ 15:41:18 root@localhost.localdomain,10.0.0.158:~ # useradd oldboy996 -u 615

2.创建一个mysql用户禁止登录并且不创建家目录

  3 ✗ 15:50:01 root@localhost.localdomain,10.0.0.158:~ # useradd -M mysql -s /sbin/nologin

3.Linux系统中切换用户的命令为?

su - [用户名]

4.如何将/data/logs目录的权限赋给web用户和users组

web     ALL=(ALL)       ALL
%users  ALL=(ALL) ALL

5.创建admins组

 ✗ 15:57:37 root@localhost.localdomain,10.0.0.158:~ # groupadd admins
  0 ✓ 15:58:30 root@localhost.localdomain,10.0.0.158:~ # tail -1 /etc/group
admins:x:1670:

6.创建用户wow ,使用admins作为附加组

 ✓ 15:58:42 root@localhost.localdomain,10.0.0.158:~ # useradd wow -G admins
  0 ✓ 16:00:13 root@localhost.localdomain,10.0.0.158:~ # id wow
uid=1017(wow) gid=1017(wow) groups=1017(wow),1670(admins)

7.创建用户niuwa,不可交互登录系统

niuwa      ALL=(ALL)       NOPASSWD: ALL

8.wow,niuwa的密码都是centos7

echo centos7 | passwd --stdin niuwa 
echo centos7 | passwd --stdin wow

9.创建用户user100,将该用户添加到group123组中

  6 ✗ 16:13:52 root@localhost.localdomain,10.0.0.158:~ # groupadd group123
  0 ✓ 16:14:10 root@localhost.localdomain,10.0.0.158:~ # useradd user100 -g group123
  0 ✓ 16:14:14 root@localhost.localdomain,10.0.0.158:~ # id user100
uid=1019(user100) gid=1671(group123) groups=1671(group123)

10.修改用户usre100 用户名为user1000

  0 ✓ 16:14:39 root@localhost.localdomain,10.0.0.158:~ # usermod user100 -l user1000

11.如何删除用户oldboy?说说删除用户的-r参数什么意思?

  1 ✗ 16:16:43 root@localhost.localdomain,10.0.0.158:~ # userdel -r oldboy
-r:删除所有相关文件

12.系统上有oldboy与oldgirl两个账号,如何把oldboy从原来oldboy用户组变为oldgirl用户组,将普通用户test加入root组的命令是?

使用usermod -g 将oldboy用户组变为oldgirl用户组
usermod test -g root

13.如何提权

visudo

14.作为一个Linux系统管理员,你希望在每一个新用户的目录下放一个文件 .bashrc,那么你应该在哪个目录下放置这个文件,以便于新用户创建主目录时自动将这个文件复制到自己的目录下

( A )

A./etc/skel/
B./etc/default/
C./etc/defaults/
D./etc/profile.d/

15.关于Linux的用户账号,下面说法正确的( C )

A.用户的密码,是以密文形式存储在/etc/passwd 文件中的
B.用户的密码,是以密文形式存储在/etc/passwd文件中的
C.用户的密码,是以密文形式存储在/etc/shadow文件中的
D.用户登录的时候,会把用户的密码明文与保存的密码做对比

16.普通用户的ID一般是( C )

A.>100
B.>500
C>>1000
D.>0

17.Linux的非root用户,在自己的目录中,不可以删除非空目录dirs的方法是( ACD )

A.rm dir dirs
B.rm -r dirs
C.mv dirs /dev/null
D.destroy dirs

18.改变文件所有者的命令为( A )

A.chmod
B.touch
C.chown
D.cat

19.关于建立系统用户的正确描述是( ABCD )

A.在Linux系统下建立用户使用adduser命令
B.每个系统用户分别在/etc/password和/etc/shadow文件中有一条记录
C.访问每个用户的工作目录使用命令“cd /home/用户名”
D.每个系统用户在默认状态下的工作目录在/home/用户名
E.每个系统用户在/etc/fstab文件中有一条记录

20.创建三个用户,分别是zls,oldboy,yourname这些用户都属于oldboyedu组的成员。这些用户的密码都是123

useradd zls -g oldboyedu;echo 123 |passwd --stdin zls
useradd oldboy -g oldboyedu;echo 123 |passwd --stdin oldboy
useradd hjx00 -g oldboyedu;echo 123 |passwd --stdin hjx00

思考一下问题

1.普通用户是否可以修改密码? 可以

2.修改密码,密码相关的文件是什么? /etc/shadow

3.密码相关文件的权限是什么? ----------

4.普通用户没有权限操作/etc/shadow文件,为什么还可以修改密码?

思维导图


posted @ 2022-04-10 17:00  hjx、贤  阅读(125)  评论(0)    收藏  举报