主頁 > 知識庫 > Linux系統(tǒng)中的切換用戶命令寶典

Linux系統(tǒng)中的切換用戶命令寶典

熱門標簽:服務器配置 外呼系統(tǒng) 百度競價點擊價格的計算公式 家政服務網(wǎng)絡 電話機器人搭建 美團 硅谷的囚徒呼叫中心 解決方案

#1:runuser命令
runuser命令使用一個替代的用戶或者組ID運行一個Shell。這個命令僅在root用戶時有用。

僅以會話PAM鉤子運行,并且沒有密碼提示。如果用一個非root用戶,并且該用戶沒有權(quán)限設置user ID,這個命令將會因為程序沒有setuid而失敗。因runuser不會運行認證和賬戶PAM鉤子,它比su更底層。

語法:


復制代碼
代碼如下:
runuser -l userNameHere -c 'command'
runuser -l userNameHere -c '/path/to/command arg1 arg2'

舉例來說,作為一個root用戶,你也許想檢查下oracle用戶下的shell資源限制,輸入:


復制代碼
代碼如下:
# runuser -l oracle -c 'ulimit -SHa'

或者監(jiān)察下nginx或lighttpd web服務器限制:


復制代碼
代碼如下:
# runuser -l nginx -c 'ulimit -SHa'



復制代碼
代碼如下:
# runuser -l lighttpd -c 'ulimit -SHa'

有時,root用戶由于權(quán)限(安全)問題不能瀏覽NFS掛載的共享:


復制代碼
代碼如下:
# ls -l /nfs/wwwroot/cyberciti.biz/http



復制代碼
代碼如下:
# cd /nfs/wwwroot/cyberciti.biz/http

可能的輸出:


復制代碼
代碼如下:
-bash: cd: /nfs/wwwroot/cyberciti.biz/http/: Permission denied

盡管如此,apache用戶被允許瀏覽或訪問掛載在/nfs/wwwroot/cyberciti.biz/http/下基于nfs的系統(tǒng):


復制代碼
代碼如下:
# runuser -l apache -c 'ls -l /nfs/wwwroot/cyberciti.biz/http/'



復制代碼
代碼如下:
# runuser -l apache -c 'cd /nfs/wwwroot/cyberciti.biz/http/; vi index.php'

使用runuser命令,無需使用密碼,并且,只能在root用戶下使用。

可用選項:

-l: 讓shell成為登錄shell,用 runuser -l PAM 文件替代默認的
-g:指定主要的組
-G 追加組
-c:命令,要傳到shell的單個命令
--session-command=COMMAND:使用-c傳遞單個命令道shell中并且不創(chuàng)建新的會話
-m: 不重置環(huán)境變量。


#2:su命令
su命令允許你成為一個超級用戶或者替代用戶(substitute user),欺騙用戶(spoof user),設置用戶(set user)或者切換用戶(switch user)。它允許一個Linxu用戶切換當前用戶到那些你知道密碼的目標用戶,切換包括與之關聯(lián)的運行中的控制臺(console)或者Shell,它的語法如下:


復制代碼
代碼如下:
su -
su - username

切換到root用戶
su命令會詢問目標用戶的密碼,在你的shell命令行中輸入 su - 來切換到root用戶(你必須知道root用戶的密碼):


復制代碼
代碼如下:
vivek@wks01:~$ su -



復制代碼
代碼如下:
vivek@wks01:~$ su - root

輸出示例:

Password:

復制代碼
代碼如下:
root@wks01:/root# logout
vivek@wks01:~$

如果輸入了正確的root密碼,會話的所有權(quán)(這里應該指當前控制臺的上下文——譯注)將改為root賬戶。輸入logout可以退出一個root登錄的shell,輸入 whoami或者id命令來驗證當前會話的所有者:

whoami

id
用root賬戶運行命令
語法是:


復制代碼
代碼如下:
su - root -c "command"



復制代碼
代碼如下:
su - -c "command arg1"

 查看/root目錄下的內(nèi)容,這些原本是普通用戶無法訪問的,運行:


復制代碼
代碼如下:
su - root -c "ls -l /root"

需要注意的是,Linix和一些Unix-like系統(tǒng)有一個wheel用戶組,并且只允許這個組內(nèi)的用戶使用su切換到root。

使用su命令來讓其他用戶運行命令
下面這個命令是切換到oracle的賬戶,并且顯示限制清單:


復制代碼
代碼如下:
$ su - oracle -c 'ulimit -aHS'

 同樣, 如果提供了正確的oracle密碼,會話所有權(quán)將會變成oracle賬戶。su命令的日志保存在系統(tǒng)日志中,一般是在/var/log/auth.log(Debian/Ubuntu)或者/var/log/secure(RHEL/CentOS)。

#3: sudo命令
sudo以另外的用戶來執(zhí)行一個命令,但是它跟著一組關于那些用戶可以以那些其他用戶執(zhí)行那些命令的規(guī)則(有點繞口——譯注)。這個規(guī)則在/etc/sudoers這個文件中被定義。不像su,sudo驗證用戶是靠用戶自己的密碼而不是那個要切換的用戶密碼。當提供一個審計跟蹤命令和他們的參數(shù)時(原文:...whileproviding an audit trail of the commands and their arguments——譯注)sudo允許一個系統(tǒng)管理員給某些用戶(或用戶組)委派以root或其他用戶來運行某些(或全部)命令的權(quán)限。這允許無需在用戶之間共享密碼就可以在指定宿主上將指定命令委派給指定用戶。語法如下:


復制代碼
代碼如下:
sudo command

GUI工具注意事項(su和sudo的前端GUI)
gksu 命令是su的前臺,gksudo 是sudo的前端。他們的主要用途是用來運行需要root權(quán)限但不需要運行一個X terminal emulator和使用直接使用su的圖形化命令。語法如下:


復制代碼
代碼如下:
gksu [-u user>] [options] command>
gksudo [-u user>] [options] command>

僅輸入gksu,將會顯示下面這個彈窗:

然后,你將會被要求輸入root用戶的密碼:


你也可以直接運行下面代碼:


復制代碼
代碼如下:
gksu -u root 'ls /root'

或,以oracle用戶運行命令:


復制代碼
代碼如下:
gksu -u oracle 'ulimit -aHS'

或作為root登錄:


復制代碼
代碼如下:
gksu -u root -l
 
總結(jié):runuser VS su VS sudo

標簽:北海 撫州 烏蘭察布 防城港 邢臺 韶關 臨沂 南昌

巨人網(wǎng)絡通訊聲明:本文標題《Linux系統(tǒng)中的切換用戶命令寶典》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266