Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171135
  • 博文数量: 65
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-16 08:59
文章分类

全部博文(65)

文章存档

2011年(3)

2010年(3)

2009年(43)

2008年(16)

我的朋友

分类: LINUX

2009-04-20 17:32:58

 sudo 的執行則僅需要自己的密碼即可! 甚至可以設定不需要密碼即可執行 sudo 呢!由於 sudo 可以讓你以其他用戶的身份執行指令 (通常是使用 root 的身份來執行指令),因此並非所有人都能夠執行 sudo , 而是僅有規範到 /etc/sudoers 內的用戶才能夠執行 sudo 這個指令喔!
  • sudo 的指令用法

建议首先看一下/etc/sudoers内的说明及举例

由於一開始系統預設僅有 root 可以執行 sudo ,因此底下的範例我們先以 root 的身份來執行,等到談到 visudo 時,再以一般使用者來討論其他 sudo 的用法吧!

[root@www ~]# sudo [-b] [-u 新使用者帳號] [-c 指令串 | 指令]
選項與參數:
-b  :將後續的指令放到背景中讓系統自行執行,而不與目前的 shell 產生影響
-u  :後面可以接欲切換的使用者,若無此項則代表切換身份為 root 。
-c  :若有一連續的指令 (&&, ||, ;) 欲執行,可用 -c "指令串" 處理。

範例一:你想要以 sshd 的身份在 /tmp 底下建立一個名為 mysshd 的檔案
[root@www ~]# sudo -u sshd touch /tmp/mysshd
[root@www ~]# ll /tmp/mysshd
-rw-r--r-- 1 sshd sshd 0 Feb 28 17:42 /tmp/mysshd
# 特別留意,這個檔案的權限是由 sshd 所建立的情況喔!

範例二:你想要以 vbird1 的身份建立 ~vbird/www 並於其中建立 index.html 檔案
[root@www ~]# sudo -u vbird1 sh -c "mkdir ~vbird1/www; cd ~vbird1/www; \
>  echo 'This is index.html file' > index.html"
[root@www ~]# ll -a ~vbird1/www
drwxr-xr-x 2 vbird1 vbird1 4096 Feb 28 17:51 .
drwx------ 5 vbird1 vbird1 4096 Feb 28 17:51 ..
-rw-r--r-- 1 vbird1 vbird1   24 Feb 28 17:51 index.html
# 要注意,建立者的身份是 vbird1 ,且我們使用 sh -c "一串指令" 來執行的!

sudo 可以讓你切換身份來進行某項任務,例如上面的兩個範例。範例一中,我們的 root 使用 sshd 的權限去進行某項任務! 要注意,因為我們無法使用『 su - sshd 』去切換系統帳號 (因為系統帳號的 shell 是 /sbin/nologin), 這個時候 sudo 真是他 X 的好用了!立刻以 sshd 的權限在 /tmp 底下建立檔案!查閱一下檔案權限你就瞭解意義啦! 至於範例二則更使用多重指令串 (透過分號 ; 來延續指令進行),使用 sh -c 的方法來執行一連串的指令, 如此真是好方便!

但是 sudo 預設僅有 root 能使用啊!為什麼呢?因為 sudo 的執行是這樣的流程:

  1. 當使用者執行 sudo 時,系統於 /etc/sudoers 檔案中搜尋該使用者是否有執行 sudo 的權限;
  2. 若使用者具有可執行 sudo 的權限後,便讓使用者『輸入使用者自己的密碼』來確認;
  3. 若密碼輸入成功,便開始進行 sudo 後續接的指令(但 root 執行 sudo 時,不需要輸入密碼);
  4. 若欲切換的身份與執行者身份相同,那也不需要輸入密碼。

visudo 與 /etc/sudoers

除了 root 之外的其他帳號,若想要使用 sudo 執行屬於 root 的權限指令,則 root 需要先使用 visudo 去修改 /etc/sudoers ,讓該帳號能夠使用全部或部分的 root 指令功能。為什麼要使用 visudo 呢?這是因為 /etc/sudoers 是有設定語法的,如果設定錯誤那會造成無法使用 sudo 指令的不良後果。因此才會使用 visudo 去修改, 並在結束離開修改畫面時,系統會去檢驗 /etc/sudoers 的語法就是了。
單一使用者可進行 root 所有指令,與 sudoers 檔案語法:

假如我們要讓 vbird1 這個帳號可以使用 root 的任何指令,那麼可以簡單的這樣進行修改即可:

[root@www ~]# visudo
....(前面省略)....
root    ALL=(ALL)       ALL  <==找到這一行,大約在 76 行左右
vbird1  ALL=(ALL)       ALL  <==這一行是你要新增的!
....(前面省略)....
有趣吧!其實 visudo 只是利用 vi 將 /etc/sudoers 檔案呼叫出來進行修改而已,所以這個檔案就是 /etc/sudoerds 啦! 這個檔案的設定其實很簡單,如上面所示,如果你找到 76 行 (有 root 設定的那行) 左右,看到的資料就是:
使用者帳號  登入者的來源主機名稱=(可切換的身份)  可下達的指令
root                         ALL=(ALL)           ALL   <==這是預設值
那個 ALL 是特殊的關鍵字,代表任何身份、主機或指令的意思。所以,我想讓 vbird1 可以進行任何身份的任何指令, 就如同上表特殊字體寫的那樣,其實就是複製上述預設值那一行,再將 root 改成 vbird1 即可啊! 此時『vbird1 不論來自哪部主機登入,他可以變換身份成為任何人,且可以進行系統上面的任何指令』之意。 修改完請儲存後離開 vi,並以 vbird1 登入系統後,進行如下的測試看看:
利用群組以及免密碼的功能處理 visudo
root@www ~]# visudo <==同樣的,請使用 root 先設定 ....(前面省略).... %wheel ALL=(ALL) ALL <==大約在 84 行左右,請將這行的 # 拿掉! # 在最左邊加上 % ,代表後面接的是一個『群組』之意!改完請儲存後離開 [root@www ~]# usermod -a -G wheel pro1 <==將 pro1 加入 wheel 的支援 這樣理解群組了吧?如果你想要讓 pro3 也支援這個 sudo 的話,不需要重新使用 visudo ,只要利用 去修改 pro3 的群組支援,讓 wheel 也支援 pro3 的話,那他就能夠進行 sudo 囉! 簡單吧!不過,既然我們都信任這些 sudo 的用戶了,能否提供『不需要密碼即可使用 sudo 』呢? 就透過如下的方式:
root@www ~]# visudo <==同樣的,請使用 root 先設定 ....(前面省略).... %wheel ALL=(ALL) NOPASSWD: ALL <==大約在 87 行左右,請將 # 拿掉! # 在最左邊加上 % ,代表後面接的是一個『群組』之意!改完請儲存後離開


  1. 有限制的指令操作

root@www ~]# visudo  <==注意是 root 身份
myuser1 ALL=(root)  /usr/bin/passwd
  <==最後指令務必用絕對路徑

@www ~]# visudo  <==注意是 root 身份
myuser1 ALL=(root)  !/usr/bin/passwd, /usr/bin/paswd [A-Za-z]*, \
                    !/usr/bin/passwd root

透過別名建置 visudo:
root@www ~]# visudo  <==注意是 root 身份
User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2
Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \
                      !/usr/bin/passwd root
ADMPW   ALL=(root)  ADMPWCOM



 

阅读(698) | 评论(0) | 转发(0) |
0

上一篇:linux帐号的几点说明

下一篇:RHEL5 DNS 配置

给主人留下些什么吧!~~