12

ほとんどの場所で、権限は。の形式の8進数として定義されます0777。しかし、UNIXのumaskコマンド(したがってos.umask())は、私の理解では、のパーミッション0o000ビットを生成する0o777必要があります。0o0220o755

なんらかの理由でUNIXが反転していると聞きましたがumask、その理由がわかりません。誰かがこの矛盾を説明してもらえますか?

4

1 に答える 1

12

umaskとの間の関係chmodは純粋に方程式で書き留めることができるため、実際の矛盾はありません。どうやら、umaskの反対を設定しchmod、それは昔このように作成されました。

例:(022デフォルトの通常umask)はを作成します755。それはこのように動作します:

  • 7 - 0 = 7最初のバイトになります
  • 7 - 2 = 52番目と3番目のバイトになります

この例を使用して、、がに等しいumask 777ファイルを作成します。私の知る限り、これは、ファイルの作成後にファイルに付与されないアクセス許可ビットを示すためにコマンドが最初に作成されたために発生しました(したがって、反転)。chmod 000umask 112chmod 664umask

煩わしいかもしれませんが、慣れるのはそれほど難しいことではありません。ファイルをどのように作成するかを考えchmod、から必要なバイトを引くと7、値が得られumaskます。または、IDEを使用しているときにコードを記述しているときは、を使用せずumaskに、ファイルを作成して(umaskもちろんデフォルトで)、os.chmod()代わりにPythonで使用します。

于 2012-07-02T13:05:57.473 に答える