1. 程式人生 > >解析su,su -,sudo的區別

解析su,su -,sudo的區別

http://blog.warmcolor.net/2013/02/03/%E8%A7%A3%E6%9E%90susu-sudo%E7%9A%84%E5%8C%BA%E5%88%AB/

肯定有人不知道下面兩個命令的區別,

1 [[email protected] ~]$ su
1 [[email protected] ~]$ su - ##(有個減號)

那下面兩個命令的區別呢?

1 [[email protected] ~]$ su
1 [[email protected] ~]$ sudo su

首先,su,su -這兩個命令都能獲得root許可權,

但root的密碼是不能隨便交給別人的,這時就需要sudo命令了,

使用使用者自己的密碼,臨時賦予一般使用者root許可權,

sudo的執行過程是這樣的:

  1. 檢查使用者是否在/etc/sudoers的列表中,
  2. 如果在,以root許可權執行命令,
  3. 取消使用者的root

接著說說這三個命令的區別:

下面是su的過程:

01 02 03 04 05 06 07 08 09 10 11 [[email protected] ~]$ su 密碼: [[email protected] warmcolor]# pwd /home/warmcolor [[email protected] ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/warmcolor/bin

下面是su -的過程:

01 02 03 04 05 06 07 08 09 10 11 [[email protected] ~]$ su - 密碼: [[email protected] ~]# pwd /root [[email protected] ~]# echo $PATH /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin
:/usr/bin:/root/bin

下面是sudo的過程:

1 2 3 4 5 6 7 8 9 [[email protected] ~]$ sudo pwd [sudo] password for warmcolor: /home/warmcolor [[email protected] ~]$ sudo echo $PATH /usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/warmcolor/bin

可以看出su和sudo沒有切換工作目錄和環境變數,只是賦予使用者許可權,

而su -是真正切換到root登入,工作目錄切換到/root,環境變數也同時改變.

而網上還有一個說法,sudo 預設將原有的環境變數 reset,只保留一些對安全沒有影響設定.

至於上面第二個問題,答案其實很簡單,

同樣切換到root登入,

su使用root的密碼,而sudo su使用使用者密碼.

上述命令更為具體的描述請參見man手冊.