若欲切換的身份與執行者身份相同,那也不需要輸入密碼。 要注意的是,使用者『輸入的是自己的密碼,而不是欲
切換成為他的那個身份的密碼!』 舉例來說,假設 dmtsai 具有執行 sudo 的權限,那麼當他以 sudo 執行 root 的工作時,
他需要輸入的是 dmtsai 自己的密碼,而不是 root 的密碼!嘿嘿!很棒吧! ^_^ 如此一來,大家可以使用自己的密碼執行 root
的工作,而不必知道 root 的密碼,安全多了。 此外,使用者能夠執行的指令是可以被限制的! 所以,我們可以設定 dmtsai 僅能進行 shutdown 的工作,或者是其他一些簡單的指令, 嘿嘿!是否很棒啊!
不過,由上面的說明當中,您也會瞭解,是否具有 sudo 的執行權限是很重要的, 而 sudo 的執行權限與 /etc/sudoers 這的檔案有關。在預設的情況下,只有 root 才能夠使用 sudo 呢!至於編輯 /etc/sudoers 則需要 visudo 這個指令。好了, 底下我們就來看一看 sudo 的語法先。
[root@linux ~]# [color="#0000ff"]sudo [-u [username|#uid]] command
[color="#ff6666"]參數:
-u :後面可以接使用者帳號名稱,或者是 UID。例如 UID 是 500 的身份,可以:
-u #500 來作為切換到 UID 為 500 的那位使用者。
範例:
[color="#bbbbbb"]範例一:一般身份使用者使用 sudo 在 /root 底下建立目錄:
[dmtsai@linux ~]$ [color="#0000ff"]sudo mkdir /root/testing
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
Password: [color="#777777"]
dmtsai is not in the sudoers file. This incident will be reported.
[color="#ff6666"]# 瞧!因為 dmtsai 不在 /etc/sudoers ,所以他就無法執行 sudo 喔!
[color="#bbbbbb"]範例二:假設 dmtsai 已經具有 sudo 的執行權限,如何在 /root 底下建立目錄?
[dmtsai@linux ~]$ [color="#0000ff"]sudo mkdir /root/testing
Password: [color="#777777"]
[color="#bbbbbb"]範例三:如何將 sudo 與 su 搭配使用?
[dmtsai@linux ~]$ [color="#0000ff"]sudo su -
[color="#bbbbbb"]範例四:dmtsai 想要切換身份成為 vbird 來進行 touch 時?
[dmtsai@linux ~]$ [color="#0000ff"]sudo -u vbird touch /home/vbird/test
上面我進行了四個範例,不過,要注意的是,若我是以 dmtsai 來進行的, 那麼除了第一次執行 sudo 需要輸入密碼,未來的時間內(在這次登入的狀況中)就不需要再重複輸入密碼了! 呼呼!真是很人性啊的設計啊~ ^_^
上面這四個範例我都是以 dmtsai 這個使用者來進行的,但是,在預設的情況中, 您的使用者應該是不能使用 sudo
的~這是因為我們上面提到的啊,還沒有去設定 /etc/sudoers 嘛! 所以囉,如果您要測試上面的範例之前,是需要將
/etc/sudoers 動動手腳的。 不過,因為 /etc/sudoers 需要一些比較特別的語法,因此,如果你直接以 vi 去編輯他時,
如果輸入的字句錯誤,可能會造成無法啟用 sudo 的困擾,因此,建議您一定要使用 visudo 去編輯 /etc/sudoers 喔!(註:
visudo 必須要使用 root 的身份來執行!)
[root@linux ~]# [color="#0000ff"]visudo
# sudoers file.
# This file MUST be edited with the 'visudo' command as root.
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL
[color="#0000ff"]dmtsai ALL=(ALL) ALL [color="#777777"]
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
使用 visudo 之後,其實就會出現一個 vi 的畫面啦!他就是以 vi 來開啟 /etc/sudoers ,
不過,當我們儲存離開時, visudo 會額外去檢查 /etc/sudoers 內部的語法,
以避免使用者輸入錯誤的資訊了。我上面只有加入一行,就是讓那個 dmtsai 成為可以隨意使用 sudo 的身份而已。基本上,
/etc/sudoers 的結構您可以使用 man sudoers 去查閱,
該說明內容說的很清楚,而且還有一些範例呢!鳥哥在這裡僅作一些簡單的說明就是了。 那一行『 dmtsai ALL=(ALL) ALL
』代表的意義是:
[color="#000088"]使用者帳號 登入的主機 = (可以變換的身份) 可以下達的指令因此,我上面這一行的意義是:『 dmtsai 這個使用者,不論來自何方, 他可以變換成任何 Linux 本機上面有的所有帳號,並執行所有的指令』的意思啦! 假如您的系統裡面,有個 Web 的軟體是以 www 這個使用者來進行編輯的, 您想要讓 vbird2 這個使用者可以用 www 這個帳號進行編輯,那麼就應該寫成: