新しいファイル権限のためにumaskを照会する移植可能な方法は何ですか?

新しいファイル権限のためにumaskを照会する移植可能な方法は何ですか?

私はOSS-Securityに関するトピックに従います。vimスワップファイルのセキュリティリスク。編集者がファイル権限が多すぎる一時ファイルを間違った場所に作成したため、VimとEmacsはCVEをキャプチャしたようです。

Posixに1つあることを知っていますマスクマスクを設定する関数がありますが、実際にクエリする関数は見えません。私もいくつかのシェルサポートについて知っていますが、UMASK私が訪問したIEEEページには言及されていません。 (おそらく私が見逃した可能性があります。また参照してください。Linuxですべてのユーザーのumaskを見るには?)。

プログラムはどのようにumask値を移植可能な方法で照会できますか?

ベストアンサー1

パラメータのないシェル組み込み関数はumask現在の値を出力しますumask

システムumask()コールは以前の値を返すので、umask次のことができます。

umask = umask(0777);
umask(umask);

(またはumask(umask = umask(0777))一般的な慣用語で)。

これがumaskシェル内蔵機能がすることです。マルチスレッドプログラムでは、umask()2段階のプロセスは、他のスレッドが同時に呼び出すと問題を引き起こす可能性があります。しかし、一般的に言えば、プログラムは最初に持っていたumask()ものを見つけるために起動時にこれを行います。

他のプロセスに関する情報を入手するには、umask最新バージョンのLinux(4.7以上)、あなたはできます:

sed -ne 's/^Umask:[[:blank:]]*//p' < "/proc/$pid/status"

あなたが投稿したリンクに記載されているセキュリティ上の考慮事項は権限とは無関係であり、編集されたファイルの内容を含みますが、他の拡張子を持つswpファイル(.swp代わりに)に関連しています。.phpWebサーバーが隠しファイルを提供しないように構成されていない場合は、.swpこのファイルが提供されます。また、PHPファイルではないため、元の内容(解釈された結果ではなくPHPソースコード)が提供されるため、データベースパスワードなどの機密情報が公開されることがあります。

これがWebサーバーを構成するのが一般的な理由です。いいえ~一般的なエディタのバックアップまたは一時ファイル名パターンで終わるか、従う隠しファイルまたはファイルを提供します。

vimそのような場合であり、制限がumask非常に厳しい場合でも、1人のユーザーのみが関連付けられ、同じファイルが生成されたファイルを使用する一般的なケース(クラウドホスティングWebサーバーの展開など)はまだ役に立ちません。umask077.swp所有者編集中のファイルと同じです。

vimより良い解決策は、自分だけがアクセスできるディレクトリにファイルを作成するように指示することです。バラよりswpdirectory vim

:h swap-file

詳細についてはをvimご覧ください。

あるいは、より良い方法は、Webサーバーが提供する領域で直接ファイルを編集するのではなく、gitや他の作業コピーなどの別々のコピーからファイルを編集することです。一度満足すれば、Webサーバー。


厳密に言えば、権限に関して潜在的な問題もあります。vimそのファイルに対して編集されたファイルと同じ権限が使用されますが.swp(ここではumaskは含まれていません)、ACL(存在する場合)はコピーされません。ファイルにユーザーACLがあるということは、返された権限フィールドがファイルに対する追加stat()権限を持つものとして扱われることを意味します。グループ(ACL マスキングのため).swpこのような場合、ファイルにはグループと比較して広すぎる権限がある可能性があります。

おすすめ記事