ほとんどの場所で、権限は。の形式の8進数として定義されます0777
。しかし、UNIXのumask
コマンド(したがってos.umask()
)は、私の理解では、のパーミッション0o000
ビットを生成する0o777
必要があります。0o022
0o755
なんらかの理由でUNIXが反転していると聞きましたがumask
、その理由がわかりません。誰かがこの矛盾を説明してもらえますか?
ほとんどの場所で、権限は。の形式の8進数として定義されます0777
。しかし、UNIXのumask
コマンド(したがってos.umask()
)は、私の理解では、のパーミッション0o000
ビットを生成する0o777
必要があります。0o022
0o755
なんらかの理由でUNIXが反転していると聞きましたがumask
、その理由がわかりません。誰かがこの矛盾を説明してもらえますか?
umask
との間の関係chmod
は純粋に方程式で書き留めることができるため、実際の矛盾はありません。どうやら、umask
の反対を設定しchmod
、それは昔このように作成されました。
例:(022
デフォルトの通常umask
)はを作成します755
。それはこのように動作します:
7 - 0 = 7
最初のバイトになります7 - 2 = 5
2番目と3番目のバイトになりますこの例を使用して、、がに等しいumask 777
ファイルを作成します。私の知る限り、これは、ファイルの作成後にファイルに付与されないアクセス許可ビットを示すためにコマンドが最初に作成されたために発生しました(したがって、反転)。chmod 000
umask 112
chmod 664
umask
煩わしいかもしれませんが、慣れるのはそれほど難しいことではありません。ファイルをどのように作成するかを考えchmod
、から必要なバイトを引くと7
、値が得られumask
ます。または、IDEを使用しているときにコードを記述しているときは、を使用せずumask
に、ファイルを作成して(umask
もちろんデフォルトで)、os.chmod()
代わりにPythonで使用します。