天天看點

runuser 指令詳解

runuser指令

runuser指令使用一個替代的使用者或者組ID運作一個Shell。這個指令僅在root使用者時有用。

僅以會話PAM鈎子運作,并且沒有密碼提示。如果用一個非root使用者,并且該使用者沒有權限設定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'

或者監察下nginx或lighttpd web伺服器限制:

# runuser -l nginx -c 'ulimit -SHa'

或 

# runuser -l lighttpd -c 'ulimit -SHa'

有時,root使用者由于權限(安全)問題不能浏覽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的系統:

# 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中并且不建立新的會話

-m: 不重置環境變量

     本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1904685,如需轉載請自行聯系原作者

繼續閱讀