當前位置:學者齋 >

計算機 >作業系統 >

關於Linux下su命令的例項講解

關於Linux下su命令的例項講解

Linux下的su命令主要用於切換使用者,可將普通使用者與超級使用者相互切換,那麼su命令有哪些用途呢?使用su命令後,其他使用者是否還在呢?下面隨小編一起來看看Linux下su命令的例項講解吧。

關於Linux下su命令的例項講解

原問:linux中,我以root登入,和以其他使用者登入然後使用su命令切換至root使用者,有什麼不一樣,如果一樣的話,我執行su命令之後,其他的使用者還在不在系統中?本人在執行su後,試圖刪除其他使用者,linux提示,其他使用者logged in?why

回答:我來為你解釋吧! unix系統裡,當用戶登入時會為每個使用者建立一個shell程序,提供互動功能,如果你使用的是bash,那麼這個shell程序就是bash,使用的ksh,這個程序就是ksh,其他shell也是一樣。

而對於程序而言,在它的程序PCB(程序控制塊)裡,有實際使用者ID和有效使用者ID這兩個值,所謂實際使用者ID是指該程序是以什麼身份建立的,比如:我當前是root使用者,我建立的程序的實際使用者ID就是root的ID,一般為0。而有效使用者ID是指對該程序當前擁有使用許可權的使用者的ID,比如我有一輛車,我把它組出去了,這個車的擁有者是我,但是使用許可權卻不是我的。

一般情況下實際使用者ID和有效使用者ID都是相同的,su命令就是擁有這樣的功能,讓一個程序可以以命令擁有者的許可權執行,即可以使程序的`實際使用者ID和有效使用者ID不相同。你可以用ls -l去檢視su這個命令,在它的擁有者的x許可權位上寫的一定是個s(小s),passwd命令也是一樣,他們擁有相同的功能。這個s位的意思是 執行該命令的使用者可以以該命令的擁有者許可權來執行,如果你把這個s位取消了,也就只有su的擁有者可以su了。

現在來進一步解釋下吧,希望你能看的懂。

當我們以root執行su時,su命令會以當前shell程序為父程序來建立一個新的shell程序,這個shell程序是提供給我們所要su到的那個使用者使用的,而root的shell程序仍然存在,反過來也是一樣的,這就是你所問的問題的原因,因為之前那個使用者的shell程序還沒關閉,你可以使用exit退出一下,可以看到,並不是退出登入了,而是回到之前的那個使用者去了。因為它們是父子程序的關係,子程序的結束當然 不會影響到父程序的執行了。但是我們如果強行殺死父程序,那就直接退出了。

其實很多人並不瞭解,whoami和who am i的區別,他們的作用是不同的。

who am i 顯示當前shell程序的實際使用者ID。

whomai 顯示當前shell程序的有效使用者ID。

很多時候,這兩個輸出是一樣的,以至於我們以為這兩個命令的作用是相同的。

例項:root@yunhw-Aspire-4750G:~# who am i

root pts/0 2011-12-10 13:13 (:0.0)

root@yunhw-Aspire-4750G:~# whoami

root

root@yunhw-Aspire-4750G:~#ps -ef

root 2939 2935 0 13:18 pts/0 00:00:00 bash

root@yunhw-Aspire-4750G:~# su - yunhw

yunhw@yunhw-Aspire-4750G:~$ who am i

root pts/0 2011-12-10 13:13 (:0.0)

yunhw@yunhw-Aspire-4750G:~$ whoami

yunhw

root@yunhw-Aspire-4750G:~#ps -ef

root 2939 2935 0 13:18 pts/0 00:00:00 bash

yunhw 2958 2939 0 13:19 pts/0 00:00:00 su - yunhw

yunhw 2966 2958 7 13:19 pts/0 00:00:00 -su

root@yunhw-Aspire-4750G:~#sudo kill -9 2939

這條命令一執行,也就完全退出了。

上面就是Linux下su命令的用法介紹了,通過su命令使用問題的講解來給大家詳細介紹其具體的用法,也給遇到該問題的使用者做個參考,你學會了嗎?

  • 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-tw/jsj/caozuo/wmor6g.html