問題タブ [apparmor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flask - /tmp/# を作成している Flask/uWSGI の部分
ユーザーが管理に情報を送信できるシンプルな Flask アプリがあります。アプリは uWSGI と Apache2 プロキシを介して実行されています。
問題は、アプリが過去 24 時間にランダムに番号が付けられた一時ファイルを /tmp に定期的に作成していることです。
これは AppArmor をトリガーします。uwsgi は (私のプロファイルでは) 書き込みが許可されていないため/tmp
です (ただし、現在は苦情モードになっているため、機能しています。また、これらの名前は推測可能であり、ある種のシンボリックリンク競合攻撃で使用される可能性があります。
Flask のどの部分がそのようなファイルを作成しているかを調べるにはどうすればよいですか? また、Flask を構成して、割り当てられた一時ディレクトリをグローバル ディレクトリの代わりに使用する方法を教えてください。
コードベースを調べたり、グーグルで検索したりしても、まったく役に立ちませんでした。
一部の Flask 拡張機能/ライブラリが加害者である可能性があるため、インポートのリスト:
linux - NoNewPrivileges=no の場合、AppArmor は「新しい権限なし」で実行を拒否します
Python アプリケーションを制限しようとした後、これらの AppArmor メッセージが表示されました
このプロファイルを使用 (aa-logprog によって生成)
Api
systemd サービスです。この投稿を読んだ後、私はそれapi.service
が本当に設定されていることに気付きましたNoNewPrivileges=yes
. だから私はそれを変更しましたNoNewPrivileges=no
(そしてサービスをリロードしました)が、それは物事を変えませんでした. 動作はまったく同じです。
はい、タスクが新しい特権の下にないと、そのプロファイルを変更することは許可されず、潜在的にその特権を増やすことはできません。制限のない状態という例外が 1 つあります。これは、プロファイルの遷移はすべて特権の削減であるためです。したがって、現時点で ix (現在の制限を継承) とスタッキングの 2 つの潜在的な遷移が残されます。スタッキングは、現在の制限を維持し、その上に追加の制限を追加するという点で、おそらくあなたが望むものではありません.
他に何が原因なのinfo="no new privs"
ですか?