close

按此前往linux完整教學目錄

 

 

一般使用者變換成root身分,以執行某些命令:

Linux中,有些命令需要root身分才能執行。某些一般使用者被允許可以暫時變換為root來執行命令(執行命令前,需輸入本身的密碼),命令執行完後又馬上恢復原來身分。

(1) 其用法為:

sudo [-b] [-u 帳號] 命令

其中,中括號[]內的選項可寫可不寫,說明如下:

-b:表示將命令放到背景下執行,也就是說其執行過程不會顯示在螢幕上。此項若不寫,表示將放到前景下執行,也就是說其執行過程會顯示在螢幕上。

-u 帳號:表示變換為該帳號之身分來執行命令,而所有的權限也會變更為該帳號之身分的權限。通常用在需變換為系統帳號的身分時。此項若不寫,表示要變換為root身分。

(2) 並不是所有的使用者都被允許使用上述的sudo指令,畢竟這幾乎等於是獲得了root的身分與權限。被允許使用sudo指令的使用者,會被記錄在/etc/sudoers這個檔案中(當然,這檔案只有root才能更改)。這個檔案的紀錄格式,說明如下:

每一行中,若以井字號#為開頭,表示該行為註解。非註解的行,每行代表一個使用者,寫法為:

使用者帳號     使用者主機名稱=(可變換的使用者帳號)     指令句

使用者帳號:表示這個帳號可以使用sudo指令。若此項為%群組,表示該群組成員可使用sudo指令。

使用者主機名稱:若該使用者目前登入的主機是使用者主機名稱,那就允許其使用sudo指令。若此項為ALL,表示在任何主機登入都可使用sudo指令。

可變換的使用者帳號:表示可以用sudo變換的對象之帳號。若此項為ALL,表示可以變換為任何對象。

命令句:表示可以使用sudo來執行的命令。要注意,命令本身必須寫為該執行檔的絕對路徑(mkdir要寫為/bin/mkdir)。若此項為ALL,表示所有形式的命令句都可用sudo來執行。若此項以驚嘆號!為開頭,表示這是不允許使用sudo來執行的命令句之寫法。若此項只有寫命令執行檔的絕對路徑,表示任何以該命令開頭的命令句都可用sudo來執行。另外,此項的寫法可用正規表示法來寫。

/etc/sudoers中,通常預設有:

root  ALL=(ALL)  ALL   #表示root可以用sudo切換為任何人、執行任何指令

%sudo  ALL=(ALL)  ALL    #表示sudo這個群組的成員,可以用sudo切換為任何人、執行任何指令

%admin  ALL=(ALL)  ALL    #表示admin或是Administrator這個群組的成員,可以用sudo切換為任何人、執行任何指令

除了預設之外,其他在應用上的範例如:

kkk  ALL=(root)  /user/bin/passwd, !/user/bin/passwd root

表示使用者kkk可以在任何主機登入時用sudo切換為root,但是不能用sudo更改root本身的密碼,只能用sudo更改其他人的密碼。

※ 註:上述,/user/bin/passwd!/user/bin/passwd root這兩個子項用逗號,隔開,而這兩者是有衝突的。若兩者有衝突的話,寫在後面的子項,其效力就能蓋過其前面子項的效力。因此,若上述的範例寫成:

kkk  ALL=(root)  !/user/bin/passwd root, /user/bin/passwd

那就表示kkk可以用sudo來使用passwd開頭的一切命令句來更改任何人的密碼,自然包括root的密碼。因為/user/bin/passwd的效力把!/user/bin/passwd root覆蓋掉了!

(3) 要修改/etc/sudoers這個檔案的內容,可以輸入:visudo

(4) 使用者在使用sudo指令之後若有輸入本身密碼,則若要在5分鐘之內再次使用sudo指令,就不必再次輸入密碼,直接就可執行。

 

 

上一篇:linux 使用者身分變換

下一篇:linux 檔案管理

arrow
arrow
    文章標籤
    linux 教學 root user sudo
    全站熱搜

    埃伯 發表在 痞客邦 留言(0) 人氣()