Ubuntu中的用戶管理(五)授予常規用戶系統管理員權限
相關鏈接:
Ubuntu中的用戶管理(一)用戶賬戶
http://www.2cto.com/os/201207/143927.html;
Ubuntu中的用戶管理(二)群組管理
http://www.2cto.com/os/201207/143929.html;
Ubuntu中的用戶管理(三)用戶管理
http://www.2cto.com/os/201207/143932.html;
Ubuntu中的用戶管理(四)密碼管理
http://www.2cto.com/os/201207/144448.html
運行具有超級用戶權限的命令通常有兩種情況:(1)你同時擁有了一個超級用戶帳號(root帳號啟用)和一個常規用戶帳號;(2)你不是一個常規用戶但是並沒有超級用戶的權限(這種情況經常發生在大型多用戶網絡中的初級和中高級系統管理員身上)。下面我們分別來看下這兩種情況:
(1)su命令短暫的更改用戶身份
www.2cto.com
這種情況需要啟用超級用戶帳號(Ubuntu系統中是默認禁用超級用戶帳號的)。啟用root賬號時,可使用sudo passwd命令。之後你就可以使用su命令進入root用戶。
su命令的使用格式如下:
su option username arguments
單獨使用su命令,你變成root用戶,但是仍然保留你原來的常規用戶的環境變量,你的當前目錄也不會變化。
你使用su -命令,你變成root用戶,並且繼承了root用戶的環境變量
想要變成其他用戶,需要在命令行中指定用戶名:su – other_user
如果要回到你原來的用戶身份,使用exit命令。
當你想要某些用戶能夠執行需要超級用戶權限的命令時,你告訴他們root用戶的密碼,他們就可以使用su命令進入root用戶,執行相應的命令。
(2)sudo命令授予超級用戶權限
sudo是和命令結合使用的。sudo命令的使用格式如下:
sudo command
www.2cto.com
當你輸入上面的命令時,sudo會檢查/etc/sudoers文件查看該用戶是否被授權可以獲得超級用戶權限。如果可以的話,該用戶會被提示輸入這個用戶的密碼,然後命令會被執行,就好像是root用戶執行命令一樣。Ubuntu的默認設置時,15分鐘內再使用sudo命令時,不要再次輸入密碼。如果一個沒有被授權的用戶使用sudo命令時,這個記錄會被保存在系統日志中,並通知給超級用戶。
有三個和sudo相關的man頁面:sudo,sudoers,visudo。第一個主要是關於sudo命令本身,第二個是關於/etc/sudoers文件,第三個是使用文本編輯器編輯/etc/sudoers文件。你需要使用特殊的編輯命令因為它會檢查文件的parse錯誤,並同時將文件鎖起來防止其他人編輯。visudo命令使用vi編輯器。
/etc/sudoers文件如下所示:
#
#This file MUST be edited with the 'visudo' command as root.
#
#Please consider adding local content in /etc/sudoers.d/ instead of
#directly modifying this file.
#
#See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$
#Host alias specification
#User alias specification
#Cmnd alias specification
#User privilege specification
root ALL=(ALL:ALL) ALL
www.2cto.com
#Members of the admin group may gain root privileges
%adminALL=(ALL) ALL
#Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
#See sudoers(5) for more information on "#include"directives:
#includedir/etc/sudoers.d
文件中一個sudoers行的基本形式如下:
user host_computer=command
這個user可以是單獨的一個用戶,也可以是一個群組(群組前面有%)。host_computer通常是ALL包括所有的主機,也可以是localhost只包括本地主機。sudoers行中的command可以是ALL,包括了所有的特殊命令,也可以是所有命令的一個子集(不可被使用的命令前會加上!)。
sudoers man page將給出詳細的信息,這裡只舉幾個簡單的例子:
如果我們添加行
%wheel ALL=(ALL) NOPASSWD:ALL
那麼任何添加到wheel群組的用戶將能夠執行任何命令,而且不需要輸入密碼。
假設我們想要給用戶sunny,在全網范圍內將用戶添加到圖形界面的權限,我們可以加入下面一行:
sunny ALL=/users-admin
或者我們只希望sunny在她個人的電腦上有這個權限:
sunny 192.168.1.45=/usr/bin/users-admin
如果我們想要授權editors群組在全網范圍內不需要密碼的刪除文件,那麼我們可以使用:
%editors ALL=NOPASSWD: /bin/rm
如果我們希望給每一個用戶權限在當前主機上不需要密碼的掛載CD光驅,可以使用:
www.2cto.com
ALL localhost=NOPASSWD: /sbin/mount /dev/scd0 /mnt/cdrom /sbin/umount/mnt/cdrom
下面的命令將會輸出當前用戶被授權使用的命令列表:
sudo -l
有人會誤以為su命令是super user的簡寫,實際上su是substitute user的所寫。還有一個重要的區別是命令su和命令su -的區別,前者你獲得了新用戶的身份但是卻保留你原有用戶的環境變量(例如path),後者你繼承了新用戶的環境變量。例如當你使用su命令變成超級用戶root時,你並沒有繼承超級用戶的環境變量/bin或者/sbin,所以你必須得輸入命令的全路徑才能執行,否則系統將找不到你要執行的命令。在Ubuntu中,第一個創建的用戶被分類為root,盡管真正的root用戶是默認禁用的。如果你希望其他用戶也可以通過sudo命令獲得root用戶的全權限,你可以將這個用戶加到admin群組即可。
作者 lqhbupt