私の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
最適なソリューション
PYTHONPATH
セキュリティを損なうことなく、設定でこのコマンドを実行できる必要があります。Sudo一般的な設定は、この制限が私のファイルsudoers
の他の項目に適用され続ける必要があることです。- 私に変えようとはしません。宇宙船ソースコード、つまり変更なしで上記で指定された正確なコマンドに対して機能する必要があります。
私が今まで試したこと:
/etc/sudoers.d/sshuttle
ファイルを読み取るように変更しましたが、username ALL=NOPASSWD: PYTHONPATH=/usr/lib/python3/dist-packages /usr/bin/python3 /usr/bin/sshuttle --method auto --firewall
これは有効な構文ではないようです。
メモ:
- 私は全体を実行したくない宇宙船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パッケージをオーバーライドし、その中にコードを入れて想像できるすべてのことを行うことができるので、定数を使用することもできます。