sudoで実行しているときにシェルスクリプト内で$ USERを取得しますか?

StackOverflow https://stackoverflow.com/questions/1629605

質問

sudoでシェルスクリプトを実行する場合、正しい$ USERを取得するにはどうすればよいですか?

Macインストールパッケージでpostinstallスクリプトとして実行します。これらは自動的にsudo-edされますが、ユーザー名を使用する必要があります。

ただし、

$ HOMEは正しいです。洗練されていない方法は、ホームパスから名前を抽出することですが、これを行う自然な方法があるのでしょうか。

スクリプト内の自動呼び出しであるため、スクリプトの呼び出し方法に影響を与えることはできません。

役に立ちましたか?

解決

私のシステムでは、変数 $ SUDO_USER が呼び出し元のユーザー名に設定されています。

$ {HOME} 変数からユーザー名を直接抽出しないでください。構成中であり、計算されていません。ユーザー名を抽出するには、 / etc / passwd ファイルを確認できますが、これはシステムに大きく依存しています。 LDAPディレクトリを調べる必要がある場合や、NISを介してエントリが伝播される場合があります...

他のヒント

$(logname)を使用すると、現在sudoを実行している場合でもログイン名が返されます。

変数 SUDO_USER を調べます。

http://www.gratisoft.us/sudo/man/sudo。 html#environment

ユーザーを取得する別の方法は、 who コマンドを使用することです。これは、ユーザーがsudoを実行したかどうかを気にしない場合に便利です。

who -m | awk '{print $1;}'

SUDO_USER は移植できません。 Fedora 17では設定されていません。

$ USER および $ UID 変数は、sudoを呼び出すときに予測できません。一部のディストリビューションはsudoerを報告し、他のディストリビューションはrootユーザーを報告します。

完全ではありませんが、 test -w〜root&&を使用できます。 echo〜root への書き込みアクセス権があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top