12 私の問題:Pythonプログラムがあり、ユーザーはを使用してそれを起動しsudoます。時々私はユーザーの家を取得しなければならない、そしてそれは私がその名前を知っているだけでこれを行うことができる: import pwd pwd.getpwnam(username) それで、プログラムを起動したユーザーの名前を取得するにはどうすればよいですか? users sudo python — ルービック ソース 1 ほとんどの構成でsudoは、HOME環境変数をそのまま残します(これはコンパイル時または実行時にオーバーライドできます)。ただし、ユーザーが別の値を指定した場合にどうなるかによって、環境変数を使用できる場合とできない場合がありますHOME(bobが実行された場合はどうなりますHOME=/home/joe sudo your_scriptか?)。あなたは、おそらく必要があります呼び出し、ユーザーに自分のEUIDセット(によって与えられたがSUDO_UID(実際にあなたのスクリプトでroot権限を必要とするものは何でも離れてからの)任意のファイルシステムへのアクセスを行う前に)。 — Gilles「SO-邪悪なことをやめなさい」 アドバイスありがとう。OK、に設定euidしSUDO_UIDます。 — ルービック2011
22 sudoいくつかの環境変数を設定して何かを起動すると、具体的にはを探していると思いますSUDO_UID。これらは、環境変数にアクセスする通常のチャネルを介して実行するプログラムからアクセスできる必要があります。 シェルからこのようにカンニングすることで、他の設定を確認できます。 sudo env | grep SUDO — カレブ ソース 1 +1すごい!どうもありがとうございました!それがまさに私が探していたものです。私は私が使用すると思うSUDO_UIDとSUDO_USER。ありがとうございました。 — ルービック 1 SUDO_USERまさに私が探していたものでした。 — フェニックス
sudo
は、HOME
環境変数をそのまま残します(これはコンパイル時または実行時にオーバーライドできます)。ただし、ユーザーが別の値を指定した場合にどうなるかによって、環境変数を使用できる場合とできない場合がありますHOME
(bobが実行された場合はどうなりますHOME=/home/joe sudo your_script
か?)。あなたは、おそらく必要があります呼び出し、ユーザーに自分のEUIDセット(によって与えられたがSUDO_UID
(実際にあなたのスクリプトでroot権限を必要とするものは何でも離れてからの)任意のファイルシステムへのアクセスを行う前に)。