su與sudo

來源:互聯網
上載者:User

標籤:visudo   sudo   su   

sudo:

su: switch user

使用者切換兩種方式:

        (1) su -  user,  su -l  user

        (2) su user

       su   -c ‘COMMAND‘ 不用切換使用者的身份,執行命令

sudo:(如同window上以管理員身份運行) executea command as another user;以另外一個使用者的身份執行指定的;

命令

授權機制實現:

    授權檔案,/etc/sudoers

    授權檔案的使用協助:man sudoers

    兩類內容:

          (1)別名的定義,即為變數;

          (2)授權項,可使用別名進行授權;

    授權項(每行定義一個授權項):

           who     where=(whom)        commands

或者你可以這樣理解:

           users    hosts=(runas)  commands

    授權編輯:

           編輯/etc/sudoers時,不建議使用vim直接進行編輯,對於/etc/sudoers檔案具有一定的格式,因此需要visudo這個專門的編輯工具編輯該檔案,同時使用visodu編輯該檔案出現語法錯誤的時候,會有相應的禁告提示;

[[email protected] ~]# visudovisudo: /etc/sudoers.tmp unchanged

查看/etc/sudoers

~]# less /etc/soduers## Allow root to run any commands anywhereroot    ALL=(ALL)       ALL#這裡就可以看出root可以運行所有命令的原因## Allows people in group wheel to run all commands%wheel  ALL=(ALL)       ALL#表示在wheel組中可以運行所有的命令

注意:使用者通過sudo獲得的授權,只能以sudo命令來啟動;

sudo命令:

sudo [options]  COMMAND

              -u:username:以指定的使用者身份運行命令;

[[email protected] ~]# useradd centos[[email protected] ~]# sudo -u yixuan whoamiyixuan          #表示root以yixuan的身份運行whoami

              -l:列出使用者能以sudo方式執行的所有命令;

[[email protected]~]# usermod -aG wheel yixuan #添加使用者到wheel組[[email protected] ~]#id yixuanuid=1001(yixuan)gid=1001(yixuan) groups=1001(yixuan),10(wheel)[[email protected] ~]# su - yixuanLast login: Thu Apr 28 08:40:15 CST 2016 on pts/0[[email protected] ~]$ sudo -lMatching Defaults entries for yixuan on this host:    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR    LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/binUser yixuan may run the following commands on this host:    (ALL) ALL            #這裡看出在wheel組中可以執行所有的命令[[email protected] ~]$ sudo -u root useradd fedora[[email protected] ~]$ tail -n1 /etc/passwdfedora:x:1002:1002::/home/fedora:/bin/bash[[email protected] ~]$

              -k:清除此前緩衝的使用者認證成功的結果;

下面我們來解剖一下授權項中各項的意義:

who:

    username:單個使用者;

    #uid:單個使用者的ID號;

    %groupname:組內的所有使用者;

    %#gid:組內的所有使用者;

    user_alias:使用者別名;

where:

     ip或hostname:單個主機;

     NetAddr:網路地址;

     host_alias:主機別名;                           

          whom:

                username

                #uid

                runas_alias:表示以誰的身份運行     

commands:

      command:單個命令;

      directory:指定目錄內的所有應用程式;

      sudoedit:特殊許可權,可用於向其他使用者授予sudo許可權;

      cmnd_alias:命令別名;                

練習:為使用者fedora授權使用useradd,usermod兩個命令

[[email protected] ~]# visudo**************省略***************## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)#includedir /etc/sudoers.d        #可以吧授權資訊卸載/etc/sudoers.d目錄下fedora ALL=(root)       /usr/sbin/useradd,/usr/sbin/usermod[[email protected] ~]# su - fedoraLast login: Thu Apr 28 09:09:12 CST 2016 on pts/0[[email protected] ~]$ sudo -l[sudo] password for fedora:                     #這裡是驗證fedora,只驗證一次Matching Defaults entries for fedora on this host:    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR    LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/binUser fedora may run the following commands on this host:    (root) /usr/sbin/useradd, (root) /usr/sbin/usermod        #授權項

定義別名的方法:

     ALIAS_TYPE  NAME=item1, item2, ...                   

            ALIAS_TYPE:

                 User_Alias

                 Host_Alias

                 Runas_Alias

                 Cmnd_Alias

 NAME:別名的名稱字元,必須使用全大寫字母;

樣本:利用定義別名的方式,為tom和jerry授權root身份使用userdel,useradd,passwd命令

[[email protected] sudoers.d]# useradd tom[[email protected] sudoers.d]# useradd jerry[[email protected] sudoers.d]# echo test | passwd --stdin tomChanging password for user tom.passwd: all authentication tokens updated successfully.[[email protected] sudoers.d]# echo test | passwd --stdin jerryChanging password for user jerry.passwd: all authentication tokens updated successfully.[[email protected] sudoers.d]# visudo#fedora ALL=(root)      /usr/sbin/useradd,/usr/sbin/usermodUser_Alias USERADMINS=tom,jerryCmnd_Alias USERADMINCMNDS=/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwdUSERADMINS ALL=(root)   USERADMINCMNDS[[email protected] sudoers.d]# su - tom[[email protected] ~]$ sudo /usr/sbin/useradd nihaouseradd: warning: the home directory already exists.Not copying any file from skel directory into it.Creating mailbox file: File exists[[email protected] ~]$ test[[email protected] ~]$ tail -n1 /etc/passwdnihao:x:1006:1006::/home/nihao:/bin/bash[[email protected] ~]$

注意:上面的案例說明passwd也能修改root的密碼,對不對,因此為了系統安全,需要這樣做!!!

樣本:

#includedir /etc/sudoers.d#fedora ALL=(root)      /usr/sbin/useradd,/usr/sbin/usermodUser_Alias USERADMINS=tom,jerryCmnd_Alias USERADMINCMNDS=/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd [a-z]*,!/usr/bin/passwd root,/usr/sbin/userdelUSERADMINS ALL=(root)   USERADMINCMNDS[[email protected] ~]$ sudo -l[sudo] password for tom: Matching Defaults entries for tom on this host:    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR    LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/binUser tom may run the following commands on this host:    (root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd [a-z]*, !/usr/bin/passwd root, /usr/sbin/userdel[[email protected] ~]$ sudo /usr/bin/passwd rootSorry, user tom is not allowed to execute ‘/usr/bin/passwd root‘ as root on bogon.

!表示取反的意思,該授權就過濾了修改root密碼的許可權

【注意】在sudo命令使用的整個過程,我們都只是使用目前使用者的密碼進行身分識別驗證,但是如果切換到管理員root的身份,怎麼辦呢?

root超級管理員有密碼:直接exit

root超級管理員沒有密碼:就無法驗證切換root的身份,因此可以使用

[[email protected] ~]$ sudo -l[sudo] password for tom: Matching Defaults entries for tom on this host:    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR    LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/binUser tom may run the following commands on this host:    (root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd [a-z]*, !/usr/bin/passwd root, /usr/sbin/userdel,    /bin/su[[email protected] ~]$ sudo su - rootLast login: Thu Apr 28 08:07:45 CST 2016 from 192.168.1.108 on pts/0[[email protected] ~]# 或者"centos ALL=(root) ALL"

不過這些操作都會在/var/log/messages中記錄

 常用標籤:

        NOPASSWD:表示使用者使用sudo不使用密碼

        PASSWD:

樣本:

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


本文出自 “Touch Dream” 部落格,請務必保留此出處http://xuelong.blog.51cto.com/10573089/1768472

su與sudo

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.