Umaskが機能しない

Umaskが機能しない

どのように活用するかを見てみましょう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)

マニュアルページumask(2))

touch明示的にプライベートとして知られているものや実行可能でなければならないものを作成しない場合(この場合はそれぞれまたはを0666使用する)、他のほとんどのアプリケーションで実行されているように、権限を使用してファイルを生成します。電子メールクライアントなどのものは、許可ビットを強制的に追加するために使用できる場合は問題になります。所有者だけがアクセスできるファイルを作成できません!06000777umaskssh-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/

おすすめ記事