Linux中su、sudo命令使用及區別介紹
原文地址:http://blog.csdn.net/crave_shy/article/details/23037787
一:兩者之間的區別
su用於使用者之間的切換。
sudo用於普通使用者可以使用root許可權來執行指定命令。
二:su、sudo命令介紹
1、su
a) su簡介
su用於使用者之間的切換。但是前面的使用者依然保持在登入狀態。這種切換如果超級許可權使用者root向普通或虛擬使用者切換不需要密碼,而普通使用者切換到其它任何使用者都需要密碼驗證。
b) su用法
su在不加任何引數,預設為切換到root使用者,但沒有轉到root使用者家目錄下,也就是說這時雖然是切換為root使用者了,但並沒有改變root登入環境;使用者預設的登入環境,可以在/etc/passwd 中查得到,包括家目錄,SHELL定義等;
su 加引數 - ,表示預設切換到root使用者,並且改變到root使用者的環境;
具體用法:
命令格式:su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER[ARG]]
命令引數說明:
-f , –fast:不必讀啟動檔案(如csh.cshrc 等),僅用於csh或tcsh兩種Shell。
-l , –login:加了這個引數之後,就好像是重新登陸一樣,大部分環境變數(例如HOME、SHELL和USER等)都是以該使用者(USER)為主,並且工作目錄也會改變。如果沒有指定USER,預設情況是root。
-m, -p ,–preserve-environment:執行su時不改變環境變數。
-c command:變更賬號為USER的使用者,並執行指令(command)後再變回原來使用者。
–help 顯示說明檔案
–version 顯示版本資訊
USER:欲變更的使用者賬號,
ARG: 傳入新的Shell引數。
b) su不足
i)不安全su工具在多人蔘與的系統管理中,並不是最好的選擇,su只適用於一兩個人蔘與管理的系統,畢竟su並不能讓普通使用者受限的使用;超級使用者root密碼應該掌握在少數使用者手中。
ii) 如果某個使用者需要使用root許可權、則必須要把root密碼告訴此使用者。
2、sudo
a) sudo簡介
是為所有想使用root許可權的普通使用者設計的。可以讓普通使用者具有臨時使用root許可權的權利。只需輸入自己賬戶的密碼即可。當然這個普通使用者必須在/etc/sudoers檔案中有配置項、才具有使用sudo的權利
b) sudo用法
i) 首先要為使用sudo命令的普通使用者在/etc/sudoers檔案中配置此普通使用者的使用權。
ii) 具體用法及引數說明:
命令格式:sudo[option]
普通使用者使用sudo執行root許可權用法:sudo command
說明:以系統管理者的身份執行指令,也就是說,經由sudo所執行的指令就好像是root親自執行一樣。這種命令貌似不能與下面的引數結合使用!
命令引數:
-V顯示版本編號
-h會顯示版本編號及指令的使用方式說明
-l顯示出自己(執行sudo的使用者)的許可權
-v因為sudo在第一次執行時或是在N分鐘內沒有執行(N預設為五)會問密碼,這個引數是重新做一次確認,如果超過N分鐘,也會問密碼
-k將會強迫使用者在下一次執行sudo時問密碼(不論有沒有超過N分鐘)
-b將要執行的指令放在背景執行
-pprompt可以更改問密碼的提示語,其中%u會代換為使用者的帳號名稱,%h會顯示主機名稱
-uusername/#uid不加此引數,代表要以root的身份執行指令,而加了此引數,可以以username的身份執行指令(#uid為該username的使用者號碼)
-s執行環境變數中的SHELL所指定的shell,或是/etc/passwd裡所指定的shell
-H將環境變數中的HOME(家目錄)指定為要變更身份的使用者家目錄(如不加-u引數就是系統管理者root)
command要以系統管理者身份(或以-u更改為其他人)執行的指令