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,如需轉載請自行聯系原作者