用户身份切换
Linux系统中,有时候普通用户有些事情是没办法操作,除非是root管理员用户才能做到。这时就需要临时切换到root管理员身份来做事了。
如何在普通用户的情况下,完成日常工作? 1)su 切换用户,使用普通用户登录,然后使用su命令切换到root。 优点:简单,方便 缺点:需要知道root密码,不安全,切换到root没有日志审计功能
2)sudo 提权,当需要使用root权限时,进行提权,而无需切换至root用户。 优点:安全,方便 缺点:复杂
提权: root 超级管理员 sudo 可以将普通用户的权限提高至root权限
sudo执行流程: 1.普通用户执行sudo命令, 会检查/var/db/sudo是否存在时间戳缓存 2.如果存在则不需要输入密码, 否则需要输入用户与密码 3.输入密码会检测是否该用户是否拥有该权限 4.如果有则执行,否则报错退出
如何提权
提权:visudo(CentOS6要先安装yum install -y sudo)
# 单一用户提权
[root@web02 ~]# visudo
:100
用户名 所有主机 所有命令的执行权限
root ALL=(ALL) ALL
user ALL=(ALL) ALL (自主添加的)(user是想要提权的用户名)
## 提权完毕后
普通用户执行命令时要在前面要加 sudo
例:
[root@web02 ~]# su xiao (提权后第一次登录需要密码)
[xiao@web02 root]$ sudo ls -l
total 40
-rw-r--r-- 1 root root 30 Jul 7 11:36 11.txt
-rw-r--r-- 1 root root 1270 Aug 8 20:12 1.txt
-rw-------. 1 root root 1512 Apr 12 11:19 anaconda-ks.cfg
-rwxr-xr-x 1 root root 8440 Jun 30 07:59 hello.bin
## 普通用户免密(因为提权后第一次登录需要密码,所以可以把提权时最后一个ALL改为NOPASSWD:ALL)
[root@web02 ~]# visudo
:101
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xiao ALL=(ALL) NOPASSWD:ALL #免密
# 针对多个用户提权(且是免密的)
[root@web02 ~]# visudo
:111
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
取消%wheel ALL=(ALL) ALL前面的注释#
可以通过 usermod oldboy1 -G wheel将多个用户加入wheel组进行提权
例:
[root@web02 ~]# usermod xiaohong -G wheel
[root@web02 ~]# su xiaohong
[xiaohong@web02 root]$ sudo ls
11.txt 1.txt anaconda-ks.cfg hello.bin hello.c web.log yy.txt zz.txt
[root@web02 ~]# usermod xiaohei -G wheel
[root@web02 ~]# su xiaohei
[xiaohei@web02 root]$ sudo ls
11.txt 1.txt anaconda-ks.cfg hello.bin hello.c web.log yy.txt zz.txt
# sudo不认识系统别名,只能走系统命令 (如ll就是别名 只能用ls -l)
-主机别名
Host_Alias HOST = localhost web01 web02
-用户别名
User_Alias OLDBOY = oldboy3,oldboy4
-命令别名
Cmnd_Alias COM = /bin/cp,/bin/mv,/bin/cat
例:
[root@web02 ~]# visudo
:15
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
Host_Alias HOST = localhost web01 web02
:101
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xiao HOST ALL
OLDBOY ALL=(ALL) NOPASSWD:COM (既免密又只有规定的命令)
-------#意味着web01 web02机器上的xiao用户被提权#--------
# 提权时针对不同员工给不同命令(授权命令要写命令的绝对路径,不知道时可以用which+命令查看)
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xiao ALL=(ALL) /bin/cp,/bin/mv,/bin/cat