给不同的用户分配不同的权限:
某个用户能够以另外一个用户的身份通过某主机执行某命令
为了避免别人冒充,在执行某命令的时候需要输入密码
sudo的配置文件 /etc/sudoers 权限440 只有root和root组中的用户可以查看
一般不建议直接用vim 编辑 有专门编辑sudoers的命令:
vim visudo
在里面编辑一个sudo条目:
谁能够以谁的身份,在哪些主机上远程连进来运行什么命令!
who which_hosts=(runas) command
例: root ALL=(ALL) ALL
管理员可以在任意主机上执行任意命令
现在我想有三个用户有同样的权限: useradd、usermod、userdel、passwd
我们可以设置别名:
who=User_Alias
which_host=Host_Alias
runas=Runas_Alias
command=Cmnd_Alias
别名必须全部而且只能使用大写英文字母的组合
用户别名:
User_Alias USERADMIN =
用户的用户名
组名,使用%引导
主机别名:
Host_Alias
主机名
IP
网络地址
其他主机别名
Runas_Alias
用户名
%组名
其他runas别名
Cmd_Alias:
命令路径
路径(此目录中的所有命令)
其他事先定义过的命令别名
例:我们让hadoop能够以root用户的身份执行useradd usermod
正常情况下我们应该 sudo /usr/sbin/useradd tom 可能执行不了
执行visudo 添加一行
hadoop ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod
sudo
-l 列出当前用户可以使用的所有sudo类命令
-k 让认证信息失效
例:让hadoop执行对应命令不需要输入密码:
hadoop All=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/usermod
例:我们定义一个用户管理类命令
User_Alias USERADMIN = hadoop,%hadoop,%useradmin
Cmnd_Alias USERADMINCMD = /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/psswd, !/usr/bin/passwd root
USERADMIN ALL=(root) NOPASSWD: USERADMINCMD
注意:单独对root取反不能防范hadoop修改root密码 如:sudo /usr/bin/passwd 不跟用户名默认修改root的密码;那么我们应该如何防范呢
Cmnd_Alias USERADMINCMD = /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/psswd [A-Za-z]*, !/usr/bin/passwd root
我们可以查看所有其他用户通过root用户执行的命令
tail /var/log/secure
作业:能够修改eth0的网络属性,但不能修改eth1的
定义另外的用户跟root用户有一样的权限