Bash
如何執行必須由特定使用者和另一個沒有密碼的使用者執行的 bash
我有 2 個使用者。
test1
我創建它/sbin/nologin
並且沒有密碼。test2
有sudo
特權和密碼。我有這個腳本:
/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