簡體   English   中英

作為另一個用戶執行腳本而不是root用戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM