パスワードとしてsudoをパラメーターとして使用する[クローズ]


83

パスワードをパラメータとしてsudoを実行し、スクリプトで使用できるようにします。私は試した

sudo -S mypassword execute_command

しかし、成功しませんでした。助言がありますか?


2
スクリプトが「root」によって実行されているかどうかを確認する必要があります。パスワードをエコーするのは悪いことです、それは履歴にあります...
kbdjockey 2012

4
このsudoような汚いハッキングを避けるために、特定のプログラム/ユーザー/グループにパスワードを要求しないように適切に構成することをお勧めします。
2012

回答:


183

-Sスイッチは、sudoにSTDINからパスワードを読み取らせます。これはあなたができることを意味します

echo mypassword | sudo -S command

パスワードをsudoに渡す

ただし、ユーザーがrootであるかどうかの確認など、コマンドの一部としてパスワードを渡すことを伴わない他の人による提案は、セキュリティ上の理由からおそらくはるかに優れたアイデアです。


それはうまくいきました、どうもありがとう!
normalUser 2014年

私の日を救った、どうもありがとう!!!
AdrianES 2015

それとフォルダの両方に実行専用のアクセス許可を与える専用フォルダに配置するのはどうsudo chmod -R 0100 myScriptFolderですか?それはセキュリティの問題を解決しませんか(あなた以外の誰もあなたのコンピュータをルートとして使用しない場合)?
Brōtsyorfuzthrāx

または、特定の状況下で、ローカルネットワークの外部からのハッカーが、実行時にスクリプトテキストを何らかの形で見ることができますか?
Brōtsyorfuzthrāx

これは私のOSXボックスでのチャンピオンのように機能しました!ソリューションを共有していただきありがとうございます!
ウルフ2016年

51

sスクリプトのビットを設定して、sudorootとして実行する必要がないようにすることができます(スクリプトにrootパスワードを書き込む必要もありません)。

sudo chmod +s myscript

+1。これは、他の方法よりもはるかに優れています(そしてより安全です)。
Burkhard 2012

1
スティッキービットは悪い習慣ではありませんか?
kbdjockey 2012

@ kbdjockey- +ssetuidビットです。+tスティッキービットです。
Robᵩ

@ Rob-明確にしていただきありがとうございます
kbdjockey 2012

4
ほとんどのOSは、解釈されたスクリプトファイルに対してこのフラグを無視することに注意してください。これはバイナリでうまく機能します。
マグナー2018年

26
echo -e "YOURPASSWORD\n" | sudo -S yourcommand

コマンドに引数がある場合、これは機能しません。例えば。echo -e "YOURPASSWORD\n" | sudo -S "run -x"。それは言うsudo: run -x: command not found。これを回避する方法はありますか?

1
@Bhathiyaは、単に「引用符」を使用しないでください。例:echo -e "YOURPASSWORD \ n" | sudo -S ls -l / root
matteomattei 2017年

グレート、ありがとう...
ビー

3

1つのオプションは、-Aフラグを使用してsudoを実行することです。これにより、パスワードを要求するプログラムが実行されます。尋ねるのではなく、プログラムを続行できるようにパスワードを吐き出すだけのスクリプトを作成することもできます。


-3
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

4
これはOPの質問に答えません。
codeforester 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.