sudo

给不同的用户分配不同的权限: 

      

          某个用户能够以另外一个用户的身份通过某主机执行某命令


           为了避免别人冒充,在执行某命令的时候需要输入密码

   

     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用户有一样的权限

你可能感兴趣的:(sudo)