1. 程式人生 > >Linux中su、sudo命令使用及區別介紹

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更改為其他人)執行的指令