0

本でファイル作成マスクについて読んでいて、これに出くわしました:

たとえば、マスクの値が 04+02+01=07 の場合、これらの値によって通常示されるアクセス権は、ファイルが作成されるたびにオフになります。したがって、この値が有効な場合、次のステートメントで作成されたファイル:

fd open (" /tmp/newfile", O_CREAT, 0644); 

実際には 0640 のモードが与えられます。これは、ファイル所有者とファイルに関連付けられたグループのメンバーはファイルを使用できることを意味しますが、他のタイプのユーザーはアクセスをまったく拒否されます。

モードが 0644 から 0640 に変更される理由について、頭を悩ませることはできません。また、作成されるファイルの許可はどうなりますか?

4

1 に答える 1

1

に渡した値*open()( と呼びますmode) は、次のように変更されます。

perms = mode & ~umask;

つまり、設定されているすべてのビットはumask、設定されているかどうかに関係なく、結果のアクセス許可で対応するビットをオフにします。あなたの特定の例では:

0644       = 0b110100100
  07       = 0b000000111
 ~07       = 0b111111000
0644 & ~07 = 0b110100000 = 0640
于 2013-10-29T17:58:26.393 に答える