web-dev-qa-db-ja.com

python pkexecで実行されるスクリプトからユーザー名を取得するにはどうすればよいですか?

pythonスクリプトをpkexecでルートとして実行しています。ユーザー名を取得するためにworking_dir = os.getenv('HOME')を使用していますが、常にtest1ではなくrootを返します。代わりにpkexecを実行したユーザーを取得するにはどうすればよいですか?

すでにprint os.environ["Sudo_USER"]を試しましたが、Sudoで直接実行されていないため失敗します。私は今信頼していますが、16.04でも同じように動作します。

1
answerSeeker

このように修正しました:

import pwd
import os

user = pwd.getpwuid(int(os.environ["PKEXEC_UID"])).pw_name
working_dir = '/home/{}'.format(user)
2
answerSeeker