sudo:コマンドで環境変数を設定できます。

sudo:コマンドで環境変数を設定できます。

私のDebian Stretchシステムでは

Defaults        env_reset

私のシステムでは/etc/sudoers。実行時にシステムを設定したいです。宇宙船、通話パスワードを入力する必要はありません

sudo PYTHONPATH=/usr/lib/python3/dist-packages -- /usr/bin/python3 \
                                                  /usr/bin/sshuttle --method auto --firewall

/etc/sudoers.d/sshuttleだから、内容のあるファイルを作成しました。

username    ALL=NOPASSWD: /usr/bin/python3 /usr/bin/sshuttle --method auto --firewall

ただし、エラーメッセージが表示されます。

sudo:申し訳ありません。次の環境変数は設定できません:PYTHONPATH

最適なソリューション

  1. PYTHONPATHセキュリティを損なうことなく、設定でこのコマンドを実行できる必要があります。Sudo一般的な設定は、この制限が私のファイルsudoersの他の項目に適用され続ける必要があることです。
  2. 私に変えようとはしません。宇宙船ソースコード、つまり変更なしで上記で指定された正確なコマンドに対して機能する必要があります。

私が今まで試したこと:

  1. /etc/sudoers.d/sshuttleファイルを読み取るように変更しましたが、username ALL=NOPASSWD: PYTHONPATH=/usr/lib/python3/dist-packages /usr/bin/python3 /usr/bin/sshuttle --method auto --firewallこれは有効な構文ではないようです。

メモ:

  1. 私は全体を実行したくない宇宙船sudo コマンドによる a)宇宙船ファイアウォール部分(この質問のコマンド)を除いて、ルートアクセスは必要ありません。 b)それから常にSSHキーのパスワードを入力する必要があるからです(通常は次のようにロック解除されます)。gpg - エージェント私のユーザーの場合は、rootユーザーの場合ではありません)

ベストアンサー1

PYTHONPATHを変更できないようにするには、次のものを使用できます/usr/bin/env(最も過小評価されたUnixツール...)。

username    ALL=NOPASSWD: /usr/bin/env PYTHONPATH=/usr/lib/python3/dist-packages /usr/bin/python3 /usr/bin/sshuttle --method auto --firewall

execまたは、Pythonスクリプトを呼び出す前に環境を設定する短いラッパースクリプトを作成してください。

PYTHONPATHが次の場合いいえusername ALL=NOPASSWD: ALLユーザーがsshuttleで使用するPythonパッケージをオーバーライドし、その中にコードを入れて想像できるすべてのことを行うことができるので、定数を使用することもできます。

おすすめ記事