どのように活用するかを見てみましょうumask
。
私はumask 027
これにより、他の人ではなくグループに対するすべての権限、読み取り、および実行権限を取得すると予想しました。
デフォルト値の777 - 027 = 750に基づいています。
しかし、私が実行したとき:
umask 027
touch test
ls -l test
私は戻った:
-rw-r----- 1 philip philip 0 Jun 3 12:14 test
これは私が全く期待していたものではありません。
私の理解にどのような問題がありますかumask
?
ベストアンサー1
umaskは権限を追加できず、問題のファイルを生成したプロセスによって設定されたいくつかの権限ビットをマスクするためにのみ使用されます。
umaskは、新しく作成されたファイルまたはディレクトリの権限を変更するために、および他のファイル生成システムコール
open(2)
で使用されます。mkdir(2)
具体的には、umaskの権限はmodeパラメータでに変更されてオフになりopen(2)
ますmkdir(2)
。
touch
明示的にプライベートとして知られているものや実行可能でなければならないものを作成しない場合(この場合はそれぞれまたはを0666
使用する)、他のほとんどのアプリケーションで実行されているように、権限を使用してファイルを生成します。電子メールクライアントなどのものは、許可ビットを強制的に追加するために使用できる場合は問題になります。所有者だけがアクセスできるファイルを作成できません!0600
0777
umask
ssh-keygen
$ umask 027; rm xxx; strace -etrace=open touch xxx 2>&1 | grep xxx ; ls -l xxx
open("xxx", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
-rw-r----- 1 itvirta itvirta 0 Jun 3 20:40 xxx
より広い権限を持つファイルを生成する準備ができた場合、実行ビットも表示されます。
$ umask 027; rm yyy;
$ perl -MFcntl -e 'sysopen F, "yyy", O_WRONLY|O_CREAT, 0777'
$ ls -l yyy
-rwxr-x--- 1 itvirta itvirta 0 Jun 3 20:40 yyy*
同様にx
、ビット設定なしでディレクトリを作成できます。
$ perl -MFcntl -e 'mkdir "ddd", 0666'
$ ls -ld ddd
drw-r----- 2 itvirta itvirta 4096 Jun 3 20:45 ddd/