ユーザー名を記録せずに$ USERまたは$ SUDO_USERからスクリプトを実行できますか?

ユーザー名を記録せずに$ USERまたは$ SUDO_USERからスクリプトを実行できますか?

他のユーザーやログインしているユーザー以外のユーザーがBashスクリプトを実行できることを確認しようとしていますsudo -u otherusername

次の行を含むスクリプトがありますecho $USERecho $SUDO_USERこれにより、常にスクリプトを実行しているユーザーが表示されます。

~からこのQ&A特定のユーザーがを使用できることを収集しましたsudo。したがって、変数またはは、SUDO_USERログイン${SUDO_USER:-$USER}したユーザーが呼び出したかどうかを使用してBashスクリプトを呼び出したかどうかを示しますsudo

ログインしたユーザーを使用するかsudo。コマンドは「元の」ユーザー名を表示echo $USERしますか?echo ${SUDO_USER:-$USER}

つまり、スクリプトの実行中に$USERユーザー名を非表示にできますか?$SUDO_USER

インターネットで検索しましたが、「bash call script obfuscating username」という検索キーワードを使用して回答が見つかりませんでした。

おそらく答えは「いいえ」かもしれませんが、何でも可能です...

ベストアンサー1

sudoアクセス権がある限り、誰でもコマンドを実行できますsudo

$ cat ~/scripts/foo.sh
#!/bin/bash
echo $USER

$ ~/scripts/foo.sh
terdon

terdon@tpad ~ $ sudo -u bib ~/scripts/foo.sh
bib

したがって、ターゲットユーザーのユーザー名でsudo -u USERNAMEスクリプトを実行するだけです。USERNAME

変数SUDO_USERにはコマンドを実行しているユーザーのユーザー名がありますが、sudo変数USERはターゲットユーザーになります。

$ cat ~/scripts/foo.sh
#!/bin/bash
echo "sudo command was run by $SUDO_USER but I am actually $USER"


$ sudo -u bib ~/scripts/foo.sh
sudo command was run by terdon but I am actually bib

おすすめ記事