天天看點

linux系統之sudo用法

一、前言

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,如需轉載請自行聯系原作者

繼續閱讀