一、su命令
格式:su -l USERNAME(-l爲login,即登陸的簡寫,其中l可以省略)
如果不指定USERNAME(用戶名),默認即爲root,所以切換到root的身份的命令即爲:su -root或是直接 su -
使用su切換用戶時需知曉對應用戶的登陸密碼
su - 與su的區別:
-
su - USERNAME 切換用戶後,同時切換到新用戶的工作環境中
-
su USERNAME 切換用戶後,不改變原用戶的工作目錄,及其他環境變量目錄
二、sudo命令
sudo是一種權限管理機制,依賴於/etc/sudoers文件,其定義了授權給哪個用戶可以以管理員的身份能夠執行什麼樣的管理命令
格式:sudo -u USERNAME COMMAND
當普通用戶通過sudo以root用戶執行命令時,sudo後面的 -u USERNAME可省略,即sudo COMMAND 即意爲sudo以root用戶執行
sudo與su的區別:
- 使用su切換用戶時需知曉對應用戶的登陸密碼,即若切換成root用戶身份,需知道root用戶的登陸密碼。
- 作爲root用戶管理員,如何授權其他普通用戶,在不需要知曉root密碼的情況下,使用sudo,執行root權限的命令操作。
sudoers文件:
sudo的配置文件爲:/etc/sudoers。
sudoers文件中允許指定用戶在不需要知道root用戶的登陸密碼的情況下,可以以root用戶身份運行各種命令。此文件必須使用visudo命令編輯配置。(visudo命令可以提供basic sanitychecks和check for parse errors,即提供快速的正確性有效性檢查,以及語法檢查功能)
查看sudores文件,其中有一行如下圖,定義了允許root用戶從任何主機登陸,使用sudo可以切換成任何用戶的身份,執行所有命令。
sudo命令使用:
指令名稱:sudo
使用權限:在 /etc/sudoers 中有出現的使用者
使用方式:sudo -V
sudo -h
sudo -l
sudo -v
sudo -k
sudo -s
sudo -H
sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s
用法:sudo command
說明:以系統管理者的身份執行指令,也就是說,經由 sudo 所執行的指令就好像是 root 親自執行
參數:
-V 顯示版本編號
-h 會顯示版本編號及指令的使用方式說明
-l 顯示出自己(執行 sudo 的使用者)的權限
-v 因爲 sudo 在第一次執行時或是在 N 分鐘內沒有執行(N 預設爲五)會問密碼,這個參數是重新做一次確認,如果超過 N 分鐘,也會問密碼
-k 將會強迫使用者在下一次執行 sudo 時問密碼(不論有沒有超過 N 分鐘)
-b 將要執行的指令放在背景執行
-p prompt 可以更改問密碼的提示語,其中 %u 會代換爲使用者的帳號名稱, %h 會顯示主機名稱
-u username/#uid 不加此參數,代表要以 root 的身份執行指令,而加了此參數,可以以 username 的身份執行指令(#uid 爲該 username 的使用者號碼)
-s 執行環境變數中的 SHELL 所指定的 shell ,或是 /etc/passwd 裏所指定的 shell
-H 將環境變數中的 HOME (家目錄)指定爲要變更身份的使用者家目錄(如不加 -u 參數就是系統管理者 root )
command 要以系統管理者身份(或以 -u 更改爲其他人)執行的指令
範例:
sudo -l 列出目前的權限
sudo -V 列出 sudo 的版本資訊
指令名稱:sudoers(在fc5下顯示不能找到此命令,但用man可以查到其用法。)
用來顯示可以使用sudo的用戶