linux如何运行用户程序,Linux系统下,如何以其他用户身份运行程序
#1: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用戶下使用。
可用選項:
1. -l: 讓shell成為登錄shell,用 runuser -l PAM 文件替代默認的
2. -g:指定主要的組
3. -G 追加組
4. -c:命令,要傳到shell的單個命令
5. --session-command=COMMAND:使用-c傳遞單個命令道shell中并且不創建新的會話
6. -m: 不重置環境變量。
#2:su命令
su命令允許你成為一個超級用戶或者替代用戶(substitute user),欺騙用戶(spoof user),設置用戶(set user)或者切換用戶(switch user)。它允許一個Linxu用戶切換當前用戶到那些你知道密碼的目標用戶,切換包括與之關聯的運行中的控制臺(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密碼,會話的所有權(這里應該指當前控制臺的上下文——譯注)將改為root賬戶。輸入logout可以退出一個root登錄的shell,輸入?whoami或者id命令來驗證當前會話的所有者:
whoami
用root賬戶運行命令
語法是:
su?-?root?-c"command"
#?OR
su?-?-c?"command?arg1"
查看/root目錄下的內容,這些原本是普通用戶無法訪問的,運行:
su?-?root?-c"ls?-l?/root"
需要注意的是,Linix和一些Unix-like系統有一個wheel用戶組,并且只允許這個組內的用戶使用su切換到root。
使用su命令來讓其他用戶運行命令
下面這個命令是切換到oracle的賬戶,并且顯示限制清單:
$?su?-?oracle?-c'ulimit?-aHS'
同樣, 如果提供了正確的oracle密碼,會話所有權將會變成oracle賬戶。su命令的日志保存在系統日志中,一般是在/var/log/auth.log(Debian/Ubuntu)或者/var/log/secure(RHEL/CentOS)。
#3:sudo命令
sudo以另外的用戶來執行一個命令,但是它跟著一組關于那些用戶可以以那些其他用戶執行那些命令的規則(有點繞口——譯注)。這個規則在/etc/sudoers這個文件中被定義。不像su,sudo驗證用戶是靠用戶自己的密碼而不是那個要切換的用戶密碼。當提供一個審計跟蹤命令和他們的參數時(原文:...whileproviding an audit trail of the commands and their arguments——譯注)sudo允許一個系統管理員給某些用戶(或用戶組)委派以root或其他用戶來運行某些(或全部)命令的權限。這允許無需在用戶之間共享密碼就可以在指定宿主上將指定命令委派給指定用戶。語法如下:
sudo 其實還是挺方便的
在學習Linux操作系統中我們經常遇到一些問題,怎樣才能解決這些Linux操作系統問題,比如說讓普通用戶安全執行管理員程序。本文為你介紹。
在多人共用一臺電腦或管理局域網時,常常會遇到這種情況:普通用戶必須執行某個命令,比如關機。但普通用戶卻不具備足夠的權限,而出于隱私和安全的考慮我們又不希望把root密碼告訴別人。
有兩種方法可以解決這一問題。
第一種方法是設置命令文件的suid,可以使普通用戶以此文件的擁有者的身份運行該程序,具體命令為 chmod u+s file ,file為你想讓別人執行的文件。還可以設置guid,讓用戶以文件所屬組的身份運行程序,命令為 chmod g+s file。
第二種方法是使用sudo程序,它可以使某個用戶以特定的身份去運行程序,當然也能以root身份去運行,它相比第一種方法更安全也便于維護。在RedHat發行版的光盤里就有這個工具。使用方法為,在終端中輸入visudo編輯sudoers文件,在空白處添加以下四行:
Host_Alias MYHOST=localhost
User_Alias MYUSER=A的用戶名,B的用戶名
Cmnd_Alias MYFILE=A和B要運行的程序路徑
MYUSER MYHOST=NOPASSWD:MYFILE
注意大小寫,以后要增加新的程序或用戶時,直接更改前三行即可。如果要讓某個不知道root密碼的用戶具有全部權限,除了運行某些危險程序(如格式化),只需增加:
Cmnd_Alias DANGER=危險程序的路徑
C的用戶名 ALL=(ALL) NOPASSWD:ALL,!DANGER
設置完成后,和vi一樣保存退出,編輯器會自動檢查你的語法是否正確,如果出錯按 e 可以回去修改。然后該用戶即可以“sudo+空格+某命令”的格式運行具體命令了。
總結
以上是生活随笔為你收集整理的linux如何运行用户程序,Linux系统下,如何以其他用户身份运行程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10下linux子系统6,Wind
- 下一篇: 空服务器安装linux,debian服务