天天看點

su和sudo

旨在闡述CentOS中 su和sudo指令的基本用法和差別

知識儲備

1.Linux中通常不建議以root身份直接登陸,太危險了!然而以普通使用者身份登陸,在某些時候又受到權限壓制,su和sudo就是良好的解決方案;

2.su通常用來臨時切換到某個使用者身份,來執行一些指令;切換方式有完全切換、不完全切換;

3.sudo通常用來以某個使用者身份來執行某些指令,執行完畢後登陸身份還是自身,即supper do!

Su指令精要

su切換方式:

(1) su -l root  完全切換:會重新讀取新身份的私人配置檔案,環境變量PATH等等;

(2) su root  不完全切換:不會重新讀取;

正常情況下,切換到新身份後,會一直保持該身份運作着,除非使用exit指令退出新身份;

幾個要點:

  1. 可以使用 su -c command root切換到root身份運作完指令command後自動退出root身份,這點和sudo有點類似哦,詳情man su;
  2. 普通使用者切換到任何使用者都需要輸入密碼,隻有root切換到普通使用者無需密碼;
  3. su -,su -l,su --login 都表示完全切換,會讀取私人的小配置!

sudo指令精要

sudo的功能大緻有:

(1)授權指定使用者在指定主機上運作指定的指令『who、where、do what』

(2)詳細記錄使用者基于sudo執行指令的相關日志資訊

(3)sudo具有時效性認證:即使用者第一次執行sudo會要求輸入密碼驗證身份,這個憑據會儲存一段時間,預設是5分鐘,5分鐘内不需要再次輸入密碼,“檢票系統”

sudo指令:

 被授權使用者應該以sudo指令來運作被授權運作的指令:

 su -  不加 預設是su到管理者,需要root密碼

 sudo [OPTIONS] COMMAND

 sudo su -  無需管理者密碼 哈哈,了解一下 挺有意思

   -l: 檢視目前使用者可執行的sudo指令;

   -k: 清除此前記憶下的“令牌”;

   -u USERNAME COMMAND:以指定使用者運作COMMAND指令;

sudo的配置檔案:/etc/sudoers

前面所說,sudo可以定義哪些使用者,在哪些主機上,做哪些指令。這些定義其實儲存在配置檔案/etc/sudoers上,建議使用專用的編輯器編輯,即visudo指令『有文法檢查等功能』

sudo配置檔案文法

sudoers配置檔案文法很簡單,如下

su和sudo

例如,指定普通使用者centos,允許在任何主機上以root身份執行fdisk指令

su和sudo

但是,如果要為多個使用者、不同組使用者指定授權,一條條添加是否顯得太過麻煩呢?尤其是當一個使用者可以通過sudo執行多條command指令的時候。其實可以使用 别名的方式 來授權,具體用法如下:

su和sudo

例如,指定允許使用者centos,使用者組apache,允許在任何主機上以root身份執行fdisk,useradd系統管理指令,和wget,ifconfig等網絡管理指令。那麼該如何定義呢?

su和sudo
  1. 别名的名字,必須而且一定是大寫字元串 
  2. 别名之間可以互相嵌套,比如說User_Alias A = apache,B 這裡的B是另外一個User_Alias
  3. 合理規劃好别名,合理嵌套好别名!
  4. 前面提到sudo有“檢票系統”,那麼一個授權的指令究竟是否需要檢票,是根據該指令的标簽來決定的,比如下面
su和sudo

這意味着centos這個使用者通過sudo 可以在任何主機上以root身份運作fdisk指令(需要檢票,出示一次票據後預設可以維持5分鐘哦),而運作wget是無需出示票據的

5. 請注意,授權的CMD1 CMD2 這些可sudo執行的指令,建議使用絕對路徑!

6. 使用visudo修改後配置檔案後,立即生效

練習:

1、授權centos使用者可以運作fdisk指令完成磁盤管理,以及使用mkfs或mke2fs實作檔案系統管理;

授權前:

su和sudo

修改sudo配置檔案:

#visudo
centos  ALL=(root) /sbin/fdisk, /sbin/mkfs.ext4      

授權後:

su和sudo
su和sudo

2、授權gentoo使用者可以運作邏輯卷管理的相關指令;

和邏輯卷相關的指令有

顯示相關pvs、vgs、lvs

掃描相關pvscan、vgscan、lvscan

建立相關pvcreate、vgcreate、lvcreate

編輯sudo配置檔案:

#visudo
Cmnd_Alias VGCMDS= /sbin/pvs, /sbin/vgs, /sbin/lvs, /sbin/pvscan, /sbin/vgscan, /sbin/lvscan, /sbin/pvcreate, /sbin/vgcreate, /sbin/lvcreate
centos ALL=(root) VGCMDS      
su和sudo

這裡遇到的一些問題:

繼續閱讀