在操作系统下,我们经常会遇到让普通用户拥有部分root权限的情况,那这个时候我们要怎么做呢?
方法一:知道root密码,然 su - root,切换到root用户下,来执行命令;方法二:将该用户加入到root组里,usermod -g root user01.然而这里两种方法非常不安全,会将root权限无限制的使用下去,在工作中这两种方法不可取,一般推荐使用sudo让普通用户来执行root命令。
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部root命令的工具。使用sudo普通用户不用知道root密码即可获得权限,首先root用户将普通用户的账号、可以执行的特定命令等信息登记在配置文件/etc/sudoers,即完成了对该普通用户的授权。
配置sudo:sudo的配置文件是/etc/sudoers,推荐使用visudo命令,它会帮助我们校验文件配置是否正确。
1、授权普通用户拥有root所有权限
[root@target ~]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL //这是系统的缺省配置,现在在下面增加一条授权ocean用户
ocean ALL=(ALL) ALL //这样普通用户ocean就能够执行root的所有权限了
ocean用户可以直接切换到root用户,而不用知道root密码,
[ocean@target ~]$ sudo su -
[root@target ~]#
2、授权普通用户拥有root部分权限
ocean为普通用户,需要修改系统时间,操作如下:
[ocean@target ~]$ date 022510082014
date: cannot set date: Operation not permitted //说明普通用户没有修改系统时间的权限,需要授权。
Tue Feb 25 10:08:00 PST 2014
配置sudo
[root@target ~]# visudo
ocean ALL=/bin/date //添加一行授予ocean用户执行/bin/date的权限
[ocean@target ~]$ sudo date 022511082014
[sudo] password for ocean: //输入ocean用户的密码来确认执行
Tue Feb 25 11:08:00 PST 2014 //时间修改成功
取消交互,不输入密码,命令直接执行:
[root@target ~]# visudo
ocean ALL=NOPASSWD:/bin/date
[ocean@target ~]$ sudo date 022512082014
Tue Feb 25 12:08:00 PST 2014 //时间直接修改了
3.授予普通用户kill进程、重启service的权限
1)查看kill、service命令的绝对路径
[root@target ~]# which kill
/bin/kill
[root@target ~]# which service
/sbin/service
2)配置sudo
[root@target ~]# visudo
ocean ALL=NOPASSWD:/bin/date,/bin/kill,/sbin/service
3)查看进程信息
[ocean@target ~]$ ps -ef
UID PID PPID C STIME TTY TIME CMD
oracle
9118 9117 0 12:25 pts/2 00:00:00 sqlplus as sysdba
执行kill
[ocean@target ~]$
sudo kill -9 9118
[ocean@target ~]$
执行结果
SQL> Killed
[oracle@target ~]$
4)重启网络服务
[ocean@target ~]$
sudo /sbin/service network restart //注意要使用命令的绝对路径
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
关于sudo的配置,还有好多知识点,在此先总结这些。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29457434/viewspace-1089081/
,如需转载,请注明出处,否则将追究法律责任。