[Linux]su到底怎麼用?
從Tsung' Blog看到的,原文在此。
幫他異地備份一下^_______^
[參數概表]
su [-Kflm] [-c class] [login [args]] [-c command]
[使用說明]
su可以讓目前使用者的shell暫停,轉換成另一個user與group,並重新執行起一個新shell
感覺上就好像暫時變成了另外一個帳號,再執行exit時,就可變回本尊。
對於一般使用者而言
執行su login時,他會要求你輸入參數login的密碼,login必須是這個系統下的一個帳號
如果沒有參數login,login就等於是root,也就是su root
在FreeBSD下,你想要su成root是沒有這麼簡單的,你的gid必須是0
如果系統下都沒人gid=0,那任何人都可以su root
對於root而言,su成任何帳號都不會要求密碼的,懂這意思,root最大。
現在讓我們來看看su成功以後,系統會作什麼事
除了HOME,SHELL,USER這三個環境變數外,所有的環境變數都會保留原狀
HOME和SHELL會變成login目標的預設值
USER一般來說是變成login,不過如果你變成uid=0的帳號(通常是root)那USER就維持不變
當你su別的login時,你的資源限制仍然跟原來一樣,除非你變成uid=0的帳號,懂吧
看不懂沒關係 這跟你的login class有關,但我不會告訴你 你可以自己去查(login.conf(5))
還有一些參數
-K
我也不知道是幹麼的
-f
如果新shell是csh系列的話,這個參數讓新shell起來時不會讀取csh的設定檔(如.cshrc)
-l
模擬一個全新的login,所有的環境變數全部重新設定,除了HOME, SHELL, PATH, TERM, and USER
HOME,SHEEL就像上面解釋過的一樣去變化
USER不管目標login是不是uid=0,都一定會變成目標login
PATH會預設成這樣 "/bin:/usr/bin"
TERM則從你舊帳號的TERM copy過去
資源限制則是使用新帳號class的資源限制喔(請看login.conf(5))
-m
除了變成另一個帳號外,所有的環境都不變,目錄不變,環境變數也不變
單南啦 為了安全的因素 如果目標login的shell不是標準shell(getusershell(3))
而且 目標login的uid!=0 那你就su不過去啦
-c class
使用指定的login class的設定,限superuser喔
從以上的說明可以知道 -l與 -m 是水火不容的,後面指定的參數會蓋掉前面的
你還可以在su login後面接一些args,那是傳給新shell的參數
[使用範例]
su man -c catman
以man的身份執行catman指令(這裡的-c不是-c class而是傳給shell的參數喔)
su man -c 'catman /usr/share/man /usr/local/man /usr/X11R6/man'
以man的身份執行 '....'指令
su -c staff man -c 'catman /usr/share/man /usr/local/man /usr/X11R6/man'
跟上面指令一樣,只是資源限制是staff這個login class
su -l man
模擬man login
這篇屁話被收在分類:
哩哪係0 則引用
本篇屁話的引用連結 : http://thecrap.org/mt-tb.cgi/39
引用 [Linux]su到底怎麼用? 的文章如下 :

給我一點 tempo