「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > os.FileMode はフラグを設定する前にどのようにアクセス許可を変換しますか?

os.FileMode はフラグを設定する前にどのようにアクセス許可を変換しますか?

2024 年 11 月 19 日に公開
ブラウズ:802

How Does os.FileMode Convert Permissions Before Setting Flags?

フラグを設定する前に os.FileMode でアクセス許可を変換する方法

元々の問題

os.FileMode 関数に 8 進数または 10 進数を指定すると、結果として得られるファイルのアクセス許可が予期される動作と必ずしも一致するとは限りません。具体的には、10 進数 (先頭のゼロなし) を渡すと、同等の 8 進数を渡す場合とは異なるファイル属性になります。

Conversion Logic

os.FileMode は入力として整数を受け入れます。内部的には 32 ビットの符号なし整数として表されます。最下位 9 ビットは Unix ファイルのアクセス許可に対応し、残りの 12 ビットは未使用です。 8 進数を整数に変換する場合、言語仕様では、先頭がゼロ (「0」) で始まる数値を基数 8 として解釈します。それ以外の場合は、数値を基数 10 として解釈します。

権限「rwx------」を表す 8 進数「0700」を考えてみましょう。

  • os.FileMode に「0700」を渡すと、正しいアクセス許可が得られます。 set.
  • 「700」(先頭のゼロなし) を os.FileMode に渡すと、正しい権限が設定されます。これは、数字で始まるため、言語仕様によって自動的に 8 進数として解釈されるためです。
  • os.FileMode に「1274」(「0700」の 10 進表現)を渡すと、不正なアクセス許可が設定されます。これは、言語仕様が「1274」を基数 10 の数値として解釈するためです。

補足

os.FileMode 表現内の未使用の 12 ビットは、次のことを示します。特殊なファイル機能。ただし、これらは基本的なファイル権限には関係ありません。

リリースステートメント この記事は、侵害がある場合は1729743262に再現されています。勉強[email protected]に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3