[Linux]su到底怎麼用?

| | 迴響 (0) | 引用 (0)

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

About

這篇屁話是由 Alvin Wu 發表於 March 11, 2005 6:41 AM

上一篇是 [Linux]Apache 部份參數說明

下一篇是 [連結]這真的太好笑了~

首頁 可以找到最近的屁話,或是到 彙整 去看全部的屁話紀綠

Powered by Movable Type 5.13-en