為什麼使用sudo?
通常生産伺服器會有多個使用者或者部門需要登入和操作,如運維部門和開發部門。是以一般不會使用root的賬号密碼來操作,因為如果大家都知道root的密碼非常不安全,萬一哪天誰更改了root密碼,就比較麻煩,但是呢,我們又必須給使用者執行權限。那麼我們必須用sodu來解決這一問題。
sudo: switch user do,
某個使用者能夠以另外一個使用者的身份通過某主機執行某指令,但是執行指令前必須輸入自己賬戶的密碼
-k:kill,讓此前輸入的認證資訊失效,并重新認證。預設情況下,當使用者執行sudo 指令後,5分鐘内不用再次輸入自己的密碼
-l:列出目前使用者可以使用的所有sodu指令
例如:
1
2
3
<code>[deploy@ZabbixServer ~]$ </code><code>sudo</code> <code>-l</code>
<code>User deploy may run the following commands on this host:</code>
<code> </code><code>(ALL) NOPASSWD: ALL, (ALL) !</code><code>/usr/bin/passwd</code> <code>root</code>
上面表示使用者deploy除了 更改root密碼外,其他指令都能操作。
sudo 指令使用方法:
sudo COMMAND:不用切換到某個使用者,就可以用該使用者來執行某個指令
<code>sudo</code> <code>useradd</code> <code>aaa</code>
sudo的配置檔案/etc/sudoers
該檔案權限為400
<code># ls -l /etc/sudoers</code>
<code>-r--r----- 1 root root 4059 Aug 24 07:53 </code><code>/etc/sudoers</code>
visudo :不用加任何參數,專門用來編輯/etc/sudoers這個檔案,隻有root使用者有權限
一個sudo條目的格式:
who which_host=(run as ) command
誰 從哪台主機遠端連上來 以誰的身份 執行什麼指令
上面的who也可以是組名,但是組名前需要加‘%’,例如%wheel
練習:
例如:允許deploy使用者以root身份執行所有指令,怎麼寫?
<code>deploy ALL=(ALL) ALL</code>
如果希望deploy使用者執行指令時不需要輸入密碼怎麼寫?
<code>deploy ALL=(ALL) NOPASSWD: ALL</code>
如果希望deploy使用者能執行所有指令,但是不能更改root密碼,不能切換到root使用者,怎麼寫?
<code>deploy ALL=(ALL) NOPASSWD: ALL,!</code><code>/usr/bin/passwd</code> <code>root,!</code><code>/bin/su</code>
sudo在生産環境中的用法:
生産環境中每個使用者都有自己的登入賬号,例如:user1、user2等。我們允許wheel組的使用者能執行所有指令,而deploy使用者屬于這個組。然後我們隻需要賦予user1、user2 切換到deploy使用者的權限即可。
過程如下: 建立deploy使用者,并加入wheel組
<code>#useradd deploy</code>
<code>#usermod -a -G wheel deploy</code>
編輯/etc/sudoers檔案,賦予wheel組使用者執行所有指令的權限
<code>%wheel ALL=(ALL) NOPASSWD: ALL</code>
最好是禁止wheel組使用者切換到root使用者、更改root密碼、執行visudo指令的權限,是以可以這樣設定
<code>%wheel ALL=(ALL) NOPASSWD: ALL,!</code><code>/usr/bin/passwd</code> <code>root,!</code><code>/bin/su</code><code>,!</code><code>/usr/sbin/visudo</code>
然後賦予使用者user1切換到deploy使用者的權限
在/etc/sudoers.d目錄下,建立一個檔案,檔案名可以是使用者名,在該檔案中寫入以下内容
<code># cat /etc/sudoers.d/user1 </code>
<code>user1 ALL=NOPASSWD:</code><code>/bin/su</code> <code>- deploy</code>
設定該檔案權限為440
本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1842926,如需轉載請自行聯系原作者