zoukankan      html  css  js  c++  java
  • sudo详解

    sudo

    作用:定义某用户A以另外哪一个用户的身份通过哪些主机执行某命令,用户A执行命令时使用自己的密码,

    密码有效期5分种,过后再执行其他命令,需再次输入密码。

    sudo COMMAND     #以某用户的身份执行相关命令

    sudo的配置文件:/etc/sudoers  

    1)权限440

    2)每行定义了一个sudo条目,sudo条目格式:

    who   which_hosts=(runas)  TAG:command     #TAG为标签,如果TAG定义为NOPASSWD,则执行命令时,无需输入密码

          在哪些主机    以哪个用户身份 执行什么命令

    eg:  root     ALL=(ALL)    ALL

    3)sudo支持别名机制:类似定义的组

      User_Alias 对应who------用户别名

       Host_Alias对应which_hosts-----------主机别名

           Runas_Alias对应runas----------runas别名

      Cmnd_Alias对应command

    别名遵循EBNF语法,别名的名字只能使用大写英文字母

    用户别名:

         User_Alias  USERADMIN =  X,X,X,X 

        其中X可以是:用户名、uid,uid前需加#、组名:组名前需加%、其他用户别名

         备注:X前面加!表示取反,除了该X之外

    eg:

         User_Alias   FULLTIMERS = hodoop,%sysadmin

    主机别名:

        Host_Alias  HOST = X,X,X,X

        其中X可以是:主机名、IP、网络地址、其他主机别名

    eg:

         Host_Alias   CUNETS = 128.130.0.0/255.255.0.0

    runas别名:

         Runas_Alias  OP = X,X,X,X

        其中X可以是:用户名、#uid、%组名、其他Runas别名

    eg:

          Runas_Alias   OP = root,operator

    命令别名:

         最好使用命令的绝对路径

         其中X可以是命令执行路径、目录(此目录下的所有命令)、其他显示定义过的命令别名

          Cmnd_Alias REBOOT = /usr/sbin/reboot

    备注:别名必须先定义,而后才能使用。

    visudo命令

    用来编辑/etc/sudoers文件

    sudo命令

    sudo

         -l     #查看当前用户可执行的sudo命令

         -k    #让认证信息立即失效,下次使用sudo仍需输入密码

    eg:hadoop以管理员身份执行useradd,usermode命令

    管理员登陆:

    #useradd hadoop

    #passwd hadoop

    #visudo

    hadoop ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod  #增加一行,保存退出

    切换hadoop登陆

    #su - hadoop

    $sudo /usr/sbin/useradd tom   #以管理员命令执行添加用户tom操作

    [sudo]password for hadoop:输入hadoop密码

    5分钟内,执行sudo命令,不用认证密码。可以让认证信息失效,下次使用sudo仍需输入密码

    $sudo -k

    $sudo -l   #查看当前用户可以执行的sudo命令

    ###让hadoop输入useradd不需要输入密码,而输入usermod需要输入密码###

    #visudo

    hadoop ALL=(root)  NOPASSWD:/usr/sbin/useradd,PASSWD:/usr/sbin/usermod

    示例:让hadoop用户、hadoop组、useradmin组可以完成用户添加、修改、删除,密码修改权限(除修改管理员密码外)

    #visudo

    User_Alias USERADMIN = hadoop, %hadoop, %useradmin

    Cmnd_Alias USERADMINCMND = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd, !/usr/bin/passwd root

    USERADMIN ALL=(root) NOPASSWD: USERADMINCMND

    仍然存在漏洞:

          只是不能执行sudo /usr/bin/passwd root 命令,但是执行sudo /usr/bin/passwd是以管理员身份运行,改的是root的密码,所以还是可以修改管理

    员密码的

    解决方法:glob通配符

         Cmnd_Alias USERADMINCMND = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z]*, !/usr/bin/passwd root

     用户使用sudo执行命令时,会记录日志:/var/log/secure文件   权限660

    111
  • 相关阅读:
    判断设备类型是iPhone还是iPad
    robotium使用中的问题
    onTouchEvent()
    [ObjectC]@class的含义
    关于左外连接和内连接的区别
    web services = XML + HTTP
    c#中的变量
    C#捕捉异常
    ASP.NET中Visio图形的控制与数据的动态显示
    用存储过程在数据库中批量插入数据1w条
  • 原文地址:https://www.cnblogs.com/zmdsg/p/7281940.html
Copyright © 2011-2022 走看看