Bash

如何執行必須由特定使用者和另一個沒有密碼的使用者執行的 bash

  • May 13, 2019

我有 2 個使用者。test1我創建它/sbin/nologin並且沒有密碼。test2sudo特權和密碼。

我有這個腳本:/data/tempWork/fazitst必須在test2. 現在我想執行這個腳本,test1但我希望它在test2.

我試過這個test1

/bin/su -c "/data/tempWork/fazitst " - test2

但它沒有用。我正在從應用程序執行此命令,因為我無法使用ssh我無法正確調試它。沒有日誌。我用root嘗試了這個命令,它奏效了。

但我想它需要密碼。那麼我如何在沒有密碼 的情況test1下執行我的腳本呢?test2

這正是sudo設計的目的。

首先,具有 root 訪問權限的人需要將這樣的配置行設置為/etc/sudoers(或者/etc/sudoers.d/*,如果您的作業系統版本支持):

test1 ALL=(test2) NOPASSWD: /data/tempWork/fazitst

這將授權使用者test1(在ALL使用該sudoers文件副本的主機上)以使用者身份執行test2,無需密碼請求,/data/tempWork/fazitst帶有任何命令行參數(或根本沒有)的命令。

然後,使用者test1可以使用以下命令執行它:

sudo -u test2 /data/tempWork/fazitst

如果$HOME環境變數在執行命令時需要指向使用者的主目錄test2,您可能需要也可能不需要將-H選項添加到sudo命令中,具體取決於sudo您的作業系統版本中的預設配置。在這種情況下,使用者test1執行的命令將是:

sudo -Hu test2 /data/tempWork/fazitst

如果環境設置與執行時完全相同很重要,su - test2則需要-i選項sudo

sudo -iu test2 /data/tempWork/fazitst

引用自:https://unix.stackexchange.com/questions/518630