用户组管理及用户提权
用户组管理及用户提权
用户组管理
组相关文件
- /etc/group
[root@localhost ~]# cat /etc/group
lx02:x:10010:lx04
# 1.组名字
# 2.组密码占位符
# 3.GID
# 4.显示该组的附加成员
- /etc/gshadow
[root@localhost ~]# cat /etc/gshadow
lx02:!::lx04
lx06:!::lx04
# 1.组名字
# 2.组密码(空和!是没有密码)
# 3.组管理员
# 4.显示该组的附加成员
- 相关命令
- 增加组
- 删除组
- 修改组
- 查看组
# 增加组
groupadd [选项] 组名
# 选项
-g:指定组的gid
-r:指定gid范围201-999之间的系统组
## 举例:
[root@localhost ~]# groupadd lx66
[root@localhost ~]# id lx66
id: lx66: no such user
[root@localhost ~]# tail -1 /etc/passwd
lx15:x:10017:10017::/home/lx15:/bin/bash
[root@localhost ~]# tail -1 /etc/group
lx66:x:10018:
# -g
[root@localhost ~]# groupadd lx67 -g 10020
[root@localhost ~]# tail -1 /etc/group
lx67:x:10020:
# -r
[root@localhost ~]# groupadd lx68 -r
[root@localhost ~]# tail -1 /etc/group
lx68:x:994:
# 删除组
groupdel 组名
举例:
[root@localhost ~]# groupdel lx68
[root@localhost ~]# tail -1 /etc/group
lx67:x:10020:
# 修改组
groupmod 选项 组名
# 选项
-g:修改组的gid
-n:修改组名字
# 示例:
# -g
[root@localhost ~]# tail -1 /etc/group
lx67:x:10020:
[root@localhost ~]# groupmod -g 10021 lx67
[root@localhost ~]# tail -1 /etc/group
lx67:x:10021:
# -n
[root@localhost ~]# tail -1 /etc/group
lx67:x:10021:
[root@localhost ~]# groupmod lx67 -n lx68
[root@localhost ~]# tail -1 /etc/group
lx68:x:10021:
# 查看组信息
[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
用户身份切换
- Linux系统中,有时候普通用户有些事情是没办法操作,除非是root管理员用户才能做到。这时就需要临时切换到
root管理员身份来做事了。那么在学习如何切换用户之前,我们先来了解下用户工作环境。
如何在普通用户的情况下,完成日常工作?
1)su 切换用户,使用普通用户登录,然后使用su命令切换到root。
优点:简单,方便
缺点:需要知道root密码,不安全,切换到root没有日志审计功能
2)sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户。
优点:安全,方便
缺点:复杂
su命令
# 切换用户命令:
su
# 用法:
su - [用户名]
不加用户名:
su - :表示切换到root用户
su命令前 解析:
-
shell的种类:
-
交互式shell
-
非交互式shell
-
登录shell
需要输入用户名和密码,才可以登录
-
非登陆shell
不需要输入用户名和密码,就可以登录
-
-
系统的环境变量文件
# 局部环境变量 ~/.bashrc ~/.bash_profile # 全局环境变量 /etc/profile /etc/profile.d/*.sh /etc/bashrc # 加载顺序 /etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc ## 正常修改profile全局环境变量文件通过/etc/profile.d/创建以*.sh结尾的的文件来修改全局环境变量,而不在/etc/profile直接修改避免误操作而导致系统问题。 # 举例:(修改命令提示符) 1)创建 mltsf.sh的文件 [Thu Apr 07 - zls root@localhost ~]$ vim /etc/profile.d/mltsf.sh [root@localhost ~]# ll /etc/profile.d/ total 64 -rw-r--r--. 1 root root 121 Jul 31 2015 less.sh -rw-r--r--. 1 root root 81 Oct 31 2018 sh.local -rw-r--r--. 1 root root 105 Dec 16 2020 vim.csh [root@localhost ~]# vim /etc/profile.d/mltsf.sh [root@localhost~]# vim /etc/profile.d/mltsf.sh 1 export PS1='[\[\e[35;1m\]\u\[\e[31;1m\]@\[\e[34;1m\]\h\[\e[33;1m\]\w]\[\e[36;1m\]# \[\e[0m\]' [root@localhost ~]# logout #虚拟机重连即可: [root@localhost~]# ll /etc/profile.d/ total 68 -rw-r--r--. 1 root root 121 Jul 31 2015 less.sh -rw-r--r-- 1 root root 94 Apr 10 15:36 mltsf.sh -rw-r--r--. 1 root root 81 Oct 31 2018 sh.local -rw-r--r--. 1 root root 105 Dec 16 2020 vim.csh
用户身份提权
sudo命令提权
- 什么是sudo
sudo就是普通用户可以提权,执行root用户可以执行的命令 - 为什么要用到sudo
如果在公司中,入职后,领导给运维的用户时普通用户,但是有些命令只能root执行
sudo如何使用
# 1.系统的超级管理员(root)需要做sudo的配置(发一个授权给指定的普通用户)
# 2.普通用户只需要在,执行的命令之前,加上sudo即可
sudo的配置(root发放授权的过程)
# 没有sudo命令,则需要安装
[root@localhost ~]# yum install -y sudo
# sudo的配置文件:/etc/sudoers
[root@localhost ~]# vim /etc/sudoers
# 用户名 所有主机=(所有角色) 所有命令的执行权限
root ALL=(ALL) ALL
# 普通用户也不需要输入自己的密码了
lx15 ALL=(ALL) NOPASSWD:ALL
#(只给CP命令授权)
lx15 ALL=(ALL) /bin/cp
# 推荐修改sudo的方式
[root@localhost ~]$ visudo
-c:检查sudoers文件的语法
## 免密切换到root用户,就算不免密,也是输入zls用户的密码,切换到root用户
[lx15@localhost ~]$ sudo su -
# sudo 只认系统命令 不认识别名
## 报错 示例:
[root@localhost ~]# sudo ll
sudo: ll: command not found
原因:ll是别名,不是系统命令,sudo不走别名,只认识系统命令
# 普通用户以root身份执行命令
1)普通用户无法进入root用户文件下:
[lx15@localhost~]# mkdir /root/test_sudo
mkdir: cannot create directory ‘/root/test_sudo’: Permission denied
2)root用户下授权 vidudo
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
101 lx68 ALL=(ALL) ALL
3) 切换lx15用户
[root@localhost~]# su - lx15
4)利用sudo创建命令:
[lx15@localhost~]# sudo mkdir /root/test_sudo
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 lx15:
[lx15@localhost~]# sudo ls -al /root
total 588
drwxr-xr-x 2 root root 6 Apr 10 16:36 test_sudo
# sudoers其他别名配置
## Host_Alias FILESERVERS = fs1, fs2
Host_Alias FILESERVERS = localhost, web01
## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
Cmnd_Alias JCLXCMD = /bin/cp,/bin/mv
Cmnd_Alias JCLXUNCMD =!/bin/rm,!/bin/su ## !表示命令不可用
Cmnd_Alias:命令别名
Host_Alias:主机别名
User_Alias:角色别名
# 给组发兵符
## Allows people in group wheel to run all commands
108 %wheel ALL=(ALL) ALL
%lx66 ALL=(ALL) NOPASSWD:ALL
所以总结:
# usermod 用户名 -G 提权组
# 1.会修改visudo,添加用户提权
# 2.给用户免密执行sudo的权限
# 3.自定义用户的可执行命令,和不可执行命令
# 4.给组分配提权的权限
# 5.提权不用修改visudo,只需要加入wheel组,即可
注意:除非企业中有要求,哪些命令需要用,哪些不能使用