以下を含むスクリプトを作成した場合/root/bin/whoami.sh
:
#!/bin/bash
whoami
このスクリプトが適切に設定されたsudoを持つユーザーによって呼び出されると、
root
スクリプトで実際のユーザーを素早く取得する方法はありますか、それともこのユーザー名を渡すパラメータに頼る必要がありますか?
ベストアンサー1
を使用している場合、$SUDO_USER は機能しませんsudo su -
。
また、 の場合は 、$USER == 'root'
の場合は という複数のチェックも必要です$SUDO_USER
。
コマンドの代わりにwhoami
を使用しますwho am i
。これにより、who
現在のセッション用にフィルタリングされたコマンドが実行されます。これにより、必要以上の情報が提供されます。したがって、ユーザーだけを取得するには、次のようにします。
who am i | awk '{print $1}'
代わりに (そしてよりシンプルに) を使用することもできますlogname
。これは上記のステートメントと同じことを行います。
これにより、セッションにログインしたユーザー名が提供されます。
sudo
これらは、またはに関係なく動作します。また、と がsudo su [whatever]
何回呼び出されたかに関係なく動作します。su
sudo