用户身份切换

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