切换到git用户
[root@iZ2ze9twtxjrbirmldp9owZ ~]# su git
[git@iZ2ze9twtxjrbirmldp9owZ root]$ pwd
/root
[git@iZ2ze9twtxjrbirmldp9owZ root]$ exit
exit
[root@iZ2ze9twtxjrbirmldp9owZ ~]#
以下操作是使用haha用户登录客户端操作的
[haha@centos6-1 ~]$ su
Password:
[root@centos6-1 haha]# pwd
/home/haha
[root@centos6-1 haha]# exit
exit
[haha@centos6-1 ~]$ su -
Password:
[root@centos6-1 ~]# pwd
/root
[root@centos6-1 ~]#
sudo是为所有想使用root权限的普通用户设计的,可以让普通用户具有临时使用root权限的权利,只需输入自己账户的密码即可。当然这个普通用户必须在/etc/sudoers文件中有配置项才具有使用sudo的权利。
没有配置权限之前,普通用户无法进行 root 权限操作:
[haha@centos6-1 ~]$ pwd
/home/haha
[haha@centos6-1 ~]$ ll /root/
ls: cannot open directory /root/: Permission denied
[haha@centos6-1 ~]$
没有配置权限之前,不能使用sudo
[haha@centos6-1 ~]$ sudo ls /root/
[sudo] password for haha:
haha is not in the sudoers file. This incident will be reported.
[haha@centos6-1 ~]$
使用root用户登录配置haha用户的sudo权限,命令行输入 visudo,打开/etc/sudoers 文件。注意,官方不建议直接vi /etc/sudoers对其进行修改
## Allow root to run any commands anywhere
root ALL=(ALL) ALL //在文件中找到这一行
haha ALL=(ALL) ALL //并在其下面添加此行,这样haha就可以使用sudo执行root权限的命令了
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
用haha用户再次登录客户端操作,发现成功了
[haha@centos6-1 ~]$ sudo ls /root/
[sudo] password for haha:
anaconda-ks.cfg install.log install.log.syslog license notice
[haha@centos6-1 ~]$
sudo的工作过程如下:
1. 当用户执行 sudo 时,系统会主动寻找/etc/sudoers 文件,判断该用户是 否有执行 sudo 的权限
2. 确认用户具有可执行 sudo 的权限后,让用户输入用户自己的密码确认
3. 若密码输入成功,则开始执行 sudo 后续的命令
/etc/sudoers文件中配置的含义
haha ALL=(ALL) ALL
第一个 ALL 是指网络中的主机,我们可以指定主机名,这样 haha 只可以 在此主机上执行后面的命令。第二个括号里的 ALL 是指目标用户,也就是以谁的 身份去执行命令。最后一个 ALL 是指命令名了。
haha centos6-1=(zaomianbao)/bin/kill //只允许haha用户以zaomianbao用户的身份在centos6-1上执行kill命令
haha centos6-1=NOPASSWD:/bin/ls, /bin/cat //只允许haha用户以root身份在centos6-1上执行ls 、cat命令
我们修改haha为第二个形式haha centos6-1=NOPASSWD:/bin/ls, /bin/cat
[haha@centos6-1 ~]$ sudo ls /root/
anaconda-ks.cfg install.log install.log.syslog license notice
[haha@centos6-1 ~]$ sudo cat /root/anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
cdrom
[haha@centos6-1 ~]$ sudo vi /root/anaconda-ks.cfg
[sudo] password for haha:
Sorry, user haha is not allowed to execute '/bin/vi /root/anaconda-ks.cfg' as root on centos6-1.
[haha@centos6-1 ~]$
可以看到,haha用户具有ls和cat的权限,但是没有vi的权限