一、前言
sudo 是linux系統管理指令,是允許系統管理者讓普通使用者執行一些或者全部的root指令的一個工具,如halt,reboot,su等等, 這樣不僅減少了root使用者的登陸和管理時間,同樣也提高了安全性,sudo不是對shell的代替,它是面向每一個指令的。sudo是可以讓某個使用者不需要擁有管理者的賬号密碼,可以執行管理者的權限的。
二、su與sudo的差別
su指令就是轉換使用者的工具,假如目前使用者沒有userdel權限,而隻有root有此權限,這時你就可以使用利用su切換到root使用者(你要知道root密碼才可以),操作完成後再切換回來。還有如果有多個使用者都要涉及root運作程式,那麼就要将root密碼告訴多個人,那麼,這麼多人當中就可以通過root權限能夠做任何事,這在一定程度上就對系統的安全造成了威協。是以說su隻适用于一兩個人參與管理的系統,畢竟su并不能讓普通使用者受限的使用;終極使用者root密碼應該掌控在少數使用者手中,這絕對是真理!su并不能做到對權限的下放,也不能做到約定其它使用者使用哪些指令來完成與其相關的工作;這樣也就有了suo,通過sudo,我們能把某些終極權限有針對性的下放,并且無需普通使用者知道root密碼,是以sudo 相對于權限無限制性的su來說,還是比較安全的,是以sudo 也能被稱為受限制的su ;另外sudo 是需要授權許可的,是以也被稱為授權許可的su;
二、sudo 授權工具
把有限的管理操作授權某普通使用者,并且還能限定其僅能夠在某些主機上執行此類指令,操作過程還會被記錄于日志中,以便于日後審計,作為管理者可以指派某些使用者可以執行某些特定的指令,類似于suid(僅在執行所用的權限上類似)
三、特點
sudo能夠限制使用者隻在某台主機上運作某些指令
sudo提供了豐富的日志,詳細地記錄了每個使用者幹了什麼,它能夠将日志傳到中心主機或日志伺服器
sudo使用時間戳檔案來執行類似的“檢票”的系統,當使用者調用sudo并且輸入它的密碼時,使用者獲得了一張存活期為5分鐘的票(這個值可以在編譯的時候改變)
四、配置檔案
Sudo的配置檔案是sudoers檔案,它允許系統管理者集中的管理使用者的使用權限和使用的主機,它所存放的位置預設是在/etc/sudoers,屬性為0440.
注:可以使用vim /etc/sudoers編輯配置檔案,也可以使用visudo(建議使用visudo)
1、指令參數
指令
參數
說明
sudo[klv]
-b
在背景執行指令
-h
顯示幫助
-H
将HOME環境變量設為新身份的HOME環境變量
-k
結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼
-l
列出目前使用者可執行的指令與不可執行的指令
-p
改變詢問密碼的提示符
-s
執行指定的shell
-u <user>
以指定的使用者作為新的身份。若不加上此參數,則預設以root作為新的身份。
-v
延長密碼有效期限5分鐘
-V
顯示版本資訊
2、配置檔案說明
⑴、文法
who which_host=(whom) command
who:授權的使用者(也可以使用 User_Alias定義一個或一組使用者)
which_host:對于那些主機(也可以使用Host_Alias定義一個或一組主機)
whom:以誰的身份(也可以使用Runas_Alias定義一個或一組使用者)
command:定義的指令(也可以使用Cmd_Alias來定義一個或一組指令)
其語義就是說,授權那一個使用者在那一個主機上以什麼樣的身分執行那些指令。
注:關于更多别名的用法請visudo自行檢視
⑵、标簽
NOPASSWD:如果在指令别名前加上NOPASSWD則表示這一組指令都不需要不密碼。
PASSWD:如果在指令别名前加上PASSWD則表示這一組指令在執行前都會提示輸入密碼
⑶、别名類别注解
注:
定義的别名必須要使用大寫字母
%表示本地系統組
!表示取反(不允許執行)
如,不允許你對某一使用者執行某一個指令
Cmnd_Alias USERADMIN = /usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd, !/usr/bin/passwd (root)
别名類别
User Aliases
樣例
User_Alias ADMINS = jsmith, mikem
注解
以ADMINS為别名(大寫)包含了兩個用,jsmith與mikem
Host Aliases
Host_Alias SPARC = bigtime,eclipse,moet,anchor
Host_Alias CUNETS = 192.168.0.0/255.255.255.0
Host_Alias CURNETS = 172.16.0.0/16
将主機分類,這些都是可以随便分,目的是為了更好的管理,可以使用主機名,也可使用ip/mask或ip/cidr
Runas Aliases
Runas_Alias SYSTEM = root,oracle
在這裡可以定義一組使用者
Command Aliases
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
定義指令是指令的路徑,指令一定要使用絕對路徑,避免其它目錄的同名指令被執行,造成安全隐患,是以使用的時候也是使用絕對路徑引用
五、執行個體
授權tom,hdoop使用者能夠以管理者的身份基于sudo執行useradd、passwd、usermod、userdel指令;後面三個指令在執行時需要輸入密碼,而前一個不需要。
編輯sudo配置檔案
$sudo visudo
1
2
3
4
5
6
7
<code>User_Alias USERADMIN=tom,hdoop</code>
<code>Host_Alias LOCAL=127.0.0.1,bogon</code>
<code>Runas_Alias SYSTEM=root</code>
<code>Cmnd_Alias USERADD=</code><code>/usr/sbin/useradd</code>
<code>Cmnd_Alias USERMOD=</code><code>/usr/bin/passwd</code><code>,</code><code>/usr/sbin/userdel</code><code>,</code><code>/usr/sbin/usermod</code>
<code>USERADMIN LOCAL=(SYSTEM) NOPASSWD:USERADD</code>
<code>USERADMIN LOCAL=(SYSTEM) PASSWD:USERMOD</code>
前提:
tom,hdoop必須事先存在,儲存後,使用su - hdoop
<a href="http://s3.51cto.com/wyfs02/M00/23/B2/wKiom1M-s0Wg-rJyAAKXMWtWegA361.jpg" target="_blank"></a>
=====================完====================
本文轉自 jinlinger 51CTO部落格,原文連結:http://blog.51cto.com/essun/1390792,如需轉載請自行聯系原作者