sudo で呼び出される Bash スクリプトでユーザーを識別する 質問する

sudo で呼び出される Bash スクリプトでユーザーを識別する 質問する

以下を含むスクリプトを作成した場合/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]何回呼び出されたかに関係なく動作します。susudo

おすすめ記事