Linux系統SUDO的使用定義及設定

Linux系統SUDO的使用定義及設定

什麼是sudo?
Sudo是可以讓某個用户不需要擁有(管理員)的賬號密碼,可以執行管理員的權限的。
作為管理員可以指派某些用户可以執行某些 特定命令。

Sudo的特點
  它的特性主要有这样幾點:
  Sudo能够限制用户只在某台主機上運行某些命令
  Sudo提供了豐富的日志,詳细地記錄了每個用户幹了什麼。
    它能够將日記傳到中心主機或者日記服務器
  Sudo使用時間戳文件來執行類似的“檢票”系统。當用户調用 sudo并且输入它的密碼時,
    用户获得了一张存活期为5分钟的票 (这个值可以在编译的时候改变)
  Sudo的配置文件是sudoers文件,它允许系统管理员集中的管理 用户的使用权限和使用的主机。
    它所存放的位置默认是在 /etc/sudoers,属性为0440

    

    ##chmod 440 /etc/sudoers.d/sudo_user

    ##把這個文本檔的權限設定為440,是比較安全的動作。是只有(uid,gid==>r)權限

    

    配置文件:/etc/sudoers (sudo的配置文件定义很严格权 限为400)
    语法 who which_host=(whom) command

      user host=(runas) command
    编辑命令visudo

        or

        visudo -f /etc/sudoers.d/sudo_user

sudo 授權使用的方法。
  ls -l /usr/bin/sudo
    sudo –i –u [centos | fedora | gentoo | etc...] 切换身份
      ##這個是要有授權之下才可以使用的(切換身份)。
      ##而平時的"su centos"方式切換身份,只要有密碼就可以切換身份。
      
    sudo [-u user] COMMAND
      -V 显示版本信息等配置信息
      -u user 默认为root
      -l,ll 列出用户在主机上可用的和被禁止的命令
        EX:sudo -l -u centos               ==>這是查看用戶centos,有什麼在sudo的授權權限。
        EX:sudo -l                    ==>這是default查看root,有什麼授權權限。因為現在是用root來工作
          or
        或者用gentoo登入後,使用sudo -level
        EX:sudo -l                    ==>這是default就是查看gentoo的sudo,有什麼授權權限。
        EX:sudo -ll                   ==>就是detail,只是多了一些細分的項目。

                               ##這個有一個好處,是在當自己登入系時,來查看一下自己有什麼sudo權限可以使用。
      -v 再延长密码有效期限5分钟,更新时间戳
        EX:sudo -v                   ==>以gentoo為一個例子,只要"sudo -v"一下,就會即時(擦新一下)登入時間,
                                 那麼,有效期限5分钟,就會以現在再開始計算。
      -k 清除时间戳(1970-01-01),下次需要重新输密码
      -K 与-k类似,还要删除时间戳文件
        EX:用戶在登出時,先用這個"sudo -K"一下,就可以把自己的時間戳記錄清除。
        注釋:時間戳的位置在"/var/run/sudo/ts"裡面,用戶不能看
      -b 在后台执行指令
        ##這個"-b"的使用是說,所執行的cmd,不會在當前的terminal上查看效果显示,但實際上面是在後台裡面工作。
        ##如果是一些在執行時間上面,是比較長。可以使用這個"-b,後台工作",這樣可以接著做其他項目。

      -p 改变询问密码的提示符号
      示例:-p ”password on %h for user %p:"
         ##在使用sudo時,系統會有一個提示句,要求用戶輸入,就是這個提示標句語。
         EX: sudo -p "”password on %h for user %p:" cat /etc/shadow
           ##這是結果效果: "password on centos7cn for user centos:"
         EX: sudo -p "”password on $(date) for user %p:" cat /etc/sdadow
           ##這是結果效果: "password on 2018年 11月 10日 星期六 15:53:53 CST for user centos:"

      ##sudoedit ==>"/usr/bin/sudoedit"            ==>這是一個給修改權限的功能,其效果等同root。
        EX:fedora ALL=(ALL) sudoedit  
        ##:在fedora登入之後。
          EX:sudoedit /etc/sudoers           ==>這就能修改裡面的權限和使用


  

  注釋:在使用visudo時,先在"/etc/profile.d/xxxxx"建立一個文本文檔,加入下面一包及即行執行一下就可以。

  *** >>export EDITOR=vim                               ##這個是想把vim裡面的特性效果,調出來使用。
      >>vim /etc/profile.d/"這是一個enrironment文"                  ##把這一句加入去裡面,再执行一下就可以,可以建立一個新文本(如果之前,己有設定environment本文,可以加入去。)
    ===================          ===================          ===================

  >>用戶 登入主機=(代表用戶) 命令

    ##user和runas的名字使用方     ==> username (EX:centos)
                       #uid (EX:#1001)
                       %group_name (EX:%fedora)
                       %#gid (EX:%#980)

    ##別名使用和設定
      ##user==User_Alias XXXX  ||  host==Host_Alias  ||  runas==Runas_Alias  ||  command==Cmnd_Alias
      >>User_Alias MBA1=centos,fedora,suse,redhat,debian,gentoo
      >>Cmnd_Alias CMD1=/usr/bin/mount,/usr/bin/yum,usr/sbin/fdisk
        ##之後就可以用來調用。
      >>MBA1 ALL=(root) CMD1                      ==>這使用別名,是方便使用和查看和修改

      ##Example:設定方式(使用別名方式)
      ==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --          -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
        User_Alias SYSADER=fedora,centos,%super          ##這個是一次設定多個用戶或者組的別名使用方法。
        User_Alias DISKADER=coffee                   ##這個是給一個用戶
        Host_Alias SERS=www.mycoffee.com,172.16.0.0/24         ##這個設定主機的位置
        Runas_Alias OP=root                      ##這個是授權出來的用戶
        Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod                                  ##這個是要使用的命令語和位置,使用(,)來分隔  
        Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk          ##這個是同上
          --  --  --  --  --  --            --  --  --  --  --  --
        SYSADER SERS= SYDCMD,DSKCMD              ==>這一個在runas是留空白,就代表是用default to root
        DISKADER SERS=(OP) DSKCMD                    ==>這個就是全部用上了別名的效果

          === === === === === === === === === === === === === === ===

      ==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --          -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
       User_Alias ADMINUSER = adminuser1,adminuser2
       Cmnd_Alias ADMINCMD = /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd [a-zA-Z]*, !/usr/bin/passwd root
                    ##在這一條cmd裡面的最後一個,是要注意,是說明只是(root)是不能修改。
          --  --  --  --  --  --            --  --  --  --  --  --
       ADMINUSER ALL=(root) NOPASSWD:ADMINCMD, PASSWD:/usr/sbin/userdel  
                    ##這一行在最後面是說明,在使用"userdel"用要密碼登入才可以。
          === === === === === === === === === === === === === === ===

      ==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --          -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
       Defaults:gentoo runas_default=fedora              ==>這是加一個default設定在用戶gentoo裡面。
       gentoo ALL=(fedora,centos) ALL                ==>這個是說在用戶gentoo登入使用時,用sudo時使用fedora是不用加上[-u user]
                                      EX:sudo mount /dev/sr0 /mnt/ ##這個就是default是用fedora的權限
                                      EX:sudo -u centos yum update ##而使用centos的權限就要用[-u user]指定使用。
          === === === === === === === === === === === === === === ===

      ==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --          -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
       gentoo 192.168.175.136,192.168.175.138=(root) /usr/sbin/,!/usr/sbin/useradd
          ##這裡有兩個host的IP位置,可以使用sudo的這一行的(權限分配/授權)
          ##command(第一個): 是說在這"/usr/sbin/"裡面的所有cmd都可以使用
          ##command(第二個): 是說在"!/usr/sbin/useradd"這一個command是不能用
          === === === === === === === === === === === === === === ===

      ==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --          -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
       gentoo ALL=(ALL) /bin/cat /var/log/messages*        ##這是不能使用的方式。

          ##這是漏洞所以不要用這個方式來授權。(問題在結尾,不要加*號,這是不小心的地方。)
           
      ==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --          -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      #Example: 
        >>%wheel ALL=(ALL) NOPASSWD:ALL                  ==>這一個的"NOPASSWD"加在command的前面,就是說,這(用戶或組)使用者,
                                            不需要輸入密碼,都可以執行。這個在(腳本script)裡面使用就會發揮作用。
      ==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --          -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      #Example
          >>visudo    or  visudo -f /etc/sudoers.d/sudo_user
          >>fedora 192.168.11.11=(root) /bin/mount /dev/sr0 /mnt/         ==>這個是指定了主機的使用

            or

          >>fedora ALL=(root) /bin/mount /dev/sr0 /mnt/            ==>這個是任何主機都可以使用

      ==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --          -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    #group ID方式的授權機制。
        ##%wheel ALL=(ALL) ALL              ==>這一行是說,當任何一個用戶是這個(group),就會有所有權限的工作。

        >>usermod -aG "wheel" fedora          ==>在sudoers裡面的group名是用"wheel",所以現在是加這個的group名資。
        >>sudo ....                    ==>這時就可以有root的全部使用權。
        >>gpasswd -d fedora wheel            ==>在這個group裡面的用戶清除出來。
        ##注釋:由於"wheel"這個組的權限過大,即是全部的權,所不要隨意把用戶加入這個組。及最在沒有用時把這個組前面加上"#、不生效"會好一點。

    #在/etc/sudoers裡面有一行是root ALL=(ALL) ALL
        ##這一行的意思是有一個特別的用法在裡面。
        ##當root賬戶的權限被移到,普通用戶時,就可以用sudo的功能把/etc/passwd的資料修改回去。
        >>sudo -u coffee vi /etc/passwd               ==>現在用戶coffee是有權限的用戶,引用回這個用戶去修改資料。
                                     ==>這樣root就可以通過這方法,在/etc/passwd改回自己的權限。
   

    #Example: (用戶 和 用戶)之間的使用權(交換或授權)的使用方法。
      例如: 用戶"centos"需要使用,用戶"fedora"的用戶權(身份)工作。

        >> centos ALL=(fedora) ALL                   ==>這樣centos可以用fedora的所有使用權的身份工作,即是用fedora的身份工作
 
    #Example: visudo or visudo -f /etc/sudoers.d/sudo_user 在這兩位置裡面,其中之一只要是加入一行

         >> centos ALL=(ALL) ALL ==>centos        ==>這時centos就會是root的權限,所以設置用戶時要小心。

猜你喜欢

转载自www.cnblogs.com/mycoffee/p/9943463.html