歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 詳解Linux切換用戶su指令誤區

詳解Linux切換用戶su指令誤區

日期:2017/2/28 14:23:19   编辑:Linux教程

1.背景
為了安全起見,通常在Linux環境下進行的一般作業建議使用一般賬號

這是因為root賬號的權限過於龐大,常常會因為不小心的誤操作導致系統錯誤,嚴重了還會致使系統癱瘓、崩潰。

因此建議只有在需要時才切換到root賬號下進行相關操作。

su是Linux環境下切換用戶的操作指令

2.su指令
很多朋友在使用該指令時,往往使用如下形式:

例:從一般賬號moonlit切換到root賬號

$ su

那麼這麼做有什麼不對的地方麼?

我們這就來觀察下賬號切換前後的數據對比。

[moonlit@host ~] $

切換前執行下列語句,查看環境中包含moonlit的變量:

$ env | grep 'moonlit'

屏幕顯示如下:

USER=moonlit
MAIL=/var/spool/mail/moonlit
PATH=/usr/java/jdk1.7.0_60/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/moonlit/bin
PWD=/home/moonlit
HOME=/home/moonlit
LOGNAME=moonlit

執行切換:

$ su

Password:

輸入密碼後屏幕轉換為:

[root@host ~] #

輸入#pwd查看當前路徑

/home/moonlit

咦,怎麼還是在moonlit賬號的家目錄下?

再輸入# env | grep 'moonlit'

屏幕輸出:

USER=moonlit
PATH=/usr/java/jdk1.7.0_60/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/moonlit/bin
MAIL=/var/spool/mail/moonlit
PWD=/home/moonlit
LOGNAME=moonlit

看到了吧?環境木有變啊。

因為沒有改變成root的環境,可能造成很多root指令錯誤或者無效哦。

想要完全轉換用戶到root可以用如下指令:

[moonlit@host ~]$ su -


鍵入root密碼後變為[root@host ~]#

#pwd一下:

/root


再# env | grep 'moonlit'一下:

神馬都沒有哦。

# env一下:

這時候屏幕會將變量全部顯示出來,比較多,不一一列舉了,可以看到當前的家目錄、PATH、MAIL等等已經全部卻換為root的變量了。

最後,你可以下達#exit來退出當前root用戶返回moonlit。

3.總結
其實沒有-的時候系統是按照non-login shell的方式切換用戶的,

而加上-時,系統是按照login shell切換的。

Copyright © Linux教程網 All Rights Reserved