[英]Execute Script as another user whilst not being root
情況:
我想直接從web-gui執行一個shellcript。 shellscript屬於用戶“tux”。 由於我的web服務器以apache身份運行,因此我無法執行tux的shellscript。 操作系統:CENTOS
我嘗試過的:
su -c "/opt/tomcat/bin/shutdown.sh" -s /bin/sh tux
我嘗試了不同的方法,提到的是當我以root用戶身份登錄時它是如何工作的。
題:
有沒有辦法在不成為root的情況下做同樣的事情? 類似命令,我可以傳遞用戶及其密碼來執行腳本。
我不能只改變腳本的所有權,因為它取決於tux的配置文件(其他文件,目錄)。
非常感謝您的幫助!
嘗試這個:
echo "$pass" | sudo -S -u $user script
$pass
是你的密碼, $user
是想要運行腳本的用戶。 (此用戶必須具有運行腳本的權限。)
如果您的user
沒有權限,請嘗試以組的形式運行:
echo "$pass" | sudo -S -g $group script
該組必須具有運行腳本的權限。
注意:像這樣傳遞密碼不是一個好主意。
如果您的用戶無法使用sudo:
如果您的用戶無法使用sudo,則無法通過使用sudo切換用戶來運行該腳本。 您應該考慮使用此非sudo用戶帳戶執行腳本。 為此,該用戶必須具有執行腳本的權限。
一種方法是將腳本的權限更改為755
(來自sudo用戶):
然后,您可以通過在終端中輸入路徑來執行腳本。 (如果您的腳本依賴於相對路徑,請確保在運行之前cd
到腳本的父目錄)
注意:這將允許任何用戶執行腳本(無需任何身份驗證)
另一種方法是將非sudo用戶添加到有權執行腳本的組中:
在這種情況下,權限如下:
chmod ug+rwx,o-x+r script
#read write xecute permission to user and group and readonly to others
和
chmod u+rwx,g+rx,o-x+r
#read write xecute to user and rx to group and readonly to others
等等,哪些組有權執行該文件就行了。 它比使用755
權限更安全。
完成此過程的步驟:
1.登錄具有sudo privillege的用戶帳戶。
2.更改腳本的權限,因為只允許用戶和組執行腳本。
例:
chmod u+rwx,g+rx,o-x path/to/the/script
3.將非sudo用戶添加到當前用戶組:
sudo usermod -g $USER non_sudo_user_name
#you don't need to edit $USER, only non_sudo_user_name
4.在非sudo用戶帳戶中進行新登錄。
現在您可以通過運行以下命令來執行腳本
/path/to/the/script
注意:如果腳本依賴於相對路徑,則可能需要在運行腳本之前cd
到腳本的父目錄。
您可以使用NOPASSWD
將用戶tux
添加到/etc/sudoers
,以允許它在沒有密碼提示的情況下運行sudo
。
例如,將它添加到/etc/sudoers
的末尾,以允許在沒有密碼的情況下提升任何命令的執行(注意,有一個特殊的工具 - visudo
):
tux ALL=(ALL) NOPASSWD: ALL
或者,更受限制的方式 - 僅允許您的腳本:
tux ALL = NOPASSWD: /opt/tomcat/bin/shutdown.sh
之后通過從終端運行任何命令檢查更改是否有效,例如:
sudo id
它不應該提示root密碼。
更新:
要使Apache運行屬於另一個用戶的腳本(例如tux
),請將此行添加到sudoers
:
www-data ALL=(ALL) NOPASSWD: /bin/bash /opt/tomcat/bin/shutdown.sh
然后你應該能夠在沒有密碼的情況下運行它,如下所示:
sudo -u tux /opt/tomcat/bin/shutdown.sh
另外,檢查這些:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.