運行具有超級用戶權限的命令通常有兩種情況:(1)你同時擁有了一個超級用戶帳號(root帳號 啟用)和一個常規用戶帳號;(2)你不是一個常規用戶但是並沒有超級用戶的權限(這種情況經常發生在大型多用戶網絡中的初級和中高級系統管理員身上)。下 面我們分別來看下這兩種情況:
(1)su命令短暫的更改用戶身份
這種情況需要啟用超級用戶帳號(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
當你輸入上面的命令時,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
#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,包括了所有的特殊命令,也可以是所有命令的一個子集(不可被使用的 命令前會加上!)。