iT邦幫忙

DAY 14
2

回應鐵人賽的文章變鐵人系列 第 14

[Reply] Linux中的sudoers檔案設定簡介

d740801 在 啟用系統管理員 Administrator 帳戶 裡,
提及在 windows 7/Vista 如何啟用最高權限帳號的作法,
也來提一下在Linux裡常會用到的sudo的設定議題。
在 Linux 常用 sudo 來做一些最高權限能做的事,
通常是依照著 /etc/sudoers 裡的規則來允許運作。


這幅簡筆漫畫蠻有趣,
甲:給我做個三明治。
乙:什麼?你自個兒做,老子可不管你。
甲:sudo 給我做個三明治。
乙:好的!馬上做個三明治。

簡單地說,甲對乙原來沒有什麼權限,
但藉著 sudo 就有那權限來執行。

用 sudo 的最大好處有二:
1.確認能執行的權限。
2.會記錄什麼使用者做了什麼動作。

為了要用 sudo 的指令,首先要設定 sudoers 這檔,
不要直接編輯此檔案
要編輯的話,要執行

visudo

然後最容易有機會看到像:

root ALL=(ALL) ALL

這行意思是,使用者root能從所有的終端機,
以任何所有使用者的身分,
來執行所有任何的指令。

所以第一部分是什麼使用者,
第二部分是使用者從哪個終端機能執行sudo,
第三部分是哪個使用者能執行,
最後部分是他能跑什麼指令。

上面的一堆ALL會搞不清楚,
用另個例子來看看:

operator ALL= /sbin/poweroff

這是指使用者 operator 能從任何終端機,
來執行 poweroff 的關機指令。
而這些各部分,也都可以用別名alias的方式來替帶,例如:

User_Alias OPERATORS = joe, mike, jude
Runas_Alias OP = root, operator
Host_Alias OFNET = 10.1.2.0/255.255.255.0
Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm

可看到別名OPERATORS是包含joe, mike, jude的使用者,
而別名OP是包括 root, operator。
別名OFNET是包括10.1.2.0的整個Class C來的範圍,
別名PRINTING是包括 lpc 及 lprm指令。

所以通常看sudoers的檔案,可能類似像這樣:

 User_Alias     OPERATORS = joe, mike, jude
Runas_Alias    OP = root, operator
Host_Alias     OFNET = 10.1.2.0/255.255.255.0
Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm

OPERATORS ALL=ALL
linus ALL=(OP) ALL
user2 OFNET=(ALL) ALL
user3 ALL= PRINTING
go2linux ALL=(ALL) ALL

如果執行sudo想要省掉輸入密碼的驗證動作的麻煩的話:

go2linux ALL=(ALL) ALL NO PASSWD: ALL

詳細的設定說明可參閱 手冊

而sudo用的是vi編輯器,
以下是怎麼操作vi的步驟:
1.變成root,執行visudo
2.找到 "root ALL=(ALL) ALL" 這一行,並將游標移到該行。
3.鍵入 o 可在該行下面插入新的一行。
4.輸入想要的規則,例如:username ALL=(ALL) ALL
5.按Esc鍵退出插入模式
6.鍵入 :x 儲存並退出。

本文簡譯自:http://www.go2linux.org/sudoers-man-page

系列文章


上一篇
[Reply] 以ruby來解析HTML的實用例子
下一篇
[Reply] 在 Linux 上轉 html 檔成 pdf
系列文
回應鐵人賽的文章變鐵人30

尚未有邦友留言

立即登入留言