「sudo」を起動したユーザーの名前を取得する方法


12

私の問題:Pythonプログラムがあり、ユーザーはを使用してそれを起動しsudoます。時々私はユーザーの家を取得しなければならない、そしてそれは私がその名前を知っているだけでこれを行うことができる:

import pwd

pwd.getpwnam(username)

それで、プログラムを起動したユーザーの名前を取得するにはどうすればよいですか?


1
ほとんどの構成でsudoは、HOME環境変数をそのまま残します(これはコンパイル時または実行時にオーバーライドできます)。ただし、ユーザーが別の値を指定した場合にどうなるかによって、環境変数を使用できる場合とできない場合がありますHOME(bobが実行された場合はどうなりますHOME=/home/joe sudo your_scriptか?)。あなたは、おそらく必要があります呼び出し、ユーザーに自分のEUIDセット(によって与えられたがSUDO_UID(実際にあなたのスクリプトでroot権限を必要とするものは何でも離れてからの)任意のファイルシステムへのアクセスを行う前に)。
Gilles「SO-邪悪なことをやめなさい」

アドバイスありがとう。OK、に設定euidSUDO_UIDます。
ルービック2011

回答:


22

sudoいくつかの環境変数を設定して何かを起動すると、具体的にはを探していると思いますSUDO_UID。これらは、環境変数にアクセスする通常のチャネルを介して実行するプログラムからアクセスできる必要があります。

シェルからこのようにカンニングすることで、他の設定を確認できます。 sudo env | grep SUDO


1
+1すごい!どうもありがとうございました!それがまさに私が探していたものです。私は私が使用すると思うSUDO_UIDSUDO_USER。ありがとうございました。
ルービック

1
SUDO_USERまさに私が探していたものでした。
フェニックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.