帳戶切換:su與sudo
1.
當普通用戶經過su切換到root是,其shell環境仍是切換前普通用戶的shell
[ila@www /]$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/ila/bin #切換前用戶的shell
[ila@www /]$ su
Password:
[root@www /]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/ila/bin #切換後
[root@www /]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#這個是直接root登陸的shell
不難看出切換後root並無獲得真正的root的shell環境,最重要的/sbin和/root/bin沒有獲得。所以切換後有許多系統關鍵命令沒法執行就不難理解了。
2. 若是想要切換後使用的是root的shell環境,那麼加
-參數便可(或者- root)。同理,若是root帳戶想要切換到其餘用戶的shell環境,使用-參數加上對應帳戶的名字,不用輸入密碼。
3. 注意切換後提示符的變化,#是root擁有的提示符,$是普通用戶擁有的提示符。
4. 若是隻是想利用root的權限執行一個命令,切換成root後再執行比較麻煩,能夠使用su - -c 「cmdxxx」便可。
5. 關於sudo
由於使用su命令時老是要輸入root密碼,這樣不安全。sudo命令不用輸入root密碼,但爲了安全起見,須要輸入本身的密碼,這樣就能夠使用root的身份或其餘身份去執行本身不能執行的命令。也就是說,這個命令不必定非要是root才能夠執行的。例如,若是咱們普通用戶能夠sudo vi這個命令,那麼普通用戶就能夠編輯任何文件,由於它是以root的身份去執行vi的。
命令爲sudo –u xxx cmdxxx。
6. 可否執行sudo命令取決於/etc/sudoers這個文件的配置。默認系統只容許root能夠使用。添加用戶方式很簡單。安全起見,編輯這個文件使用visudo命令。文件主要格式以下:
1.
test ALL=(ALL) ALL
這是徹底不作限制,默認狀況下root就是這種設置。若是有多個用戶的話能夠經過對羣組進行設置,而後用戶加入羣組就能夠相應的擁有sudo權限。
2.
%TEST ALL=(root) ALL 也就是隻要加入TEST羣組就能夠sudo到root,執行全部root的命令。固然這種設置是很危險的,還能夠修改root的密碼。
3.
通常狀況下只會給出一個或者幾個命令,不會使用ALL的方式,給出的命令必須使用絕對路徑。另外須要注意的是,給出的命令能夠是很精確的,也就是附上能夠使用的選項,例如
testuser localhost=/sbin/shutdown –h now #那麼用戶只能使用這個命令,別的參數都不行
testuser localhost=/bin/vi /etc/sysconfig/network #那麼sudu的使用只能用vi編輯network這個文件