他のユーザーやログインしているユーザー以外のユーザーがBashスクリプトを実行できることを確認しようとしていますsudo -u otherusername
。
次の行を含むスクリプトがありますecho $USER
。
echo $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