私はLinuxが初めてです。umask コマンドでいくつかの試行を行っています。umask を 001 に設定しましたが、ファイルを作成して長いリストを表示すると、新しいファイルに許可された実行許可が表示されません。なぜだろう?
3 に答える
umask は少し特殊です。少し設定すると、実際には許可を無効にしていることになります。その実装は次のとおりです。
(not umask) & filemode
ファイルモードは、ユーザーが作成したいものです。
したがって、実行ビットを無効にしました。
001 -> complement -> 110 -> rw-
試したいマスクは 110 (ビット) または 006 (8 進数) です :)
umask は、呼び出し時に指定されたモード ビットマスクから削除するビットをシステムに通知しcreat()
ます。r
umask は通常、各桁が 3 ビット ( =4、w
=2、x
=1)で構成される 8 進数で表されます。8 進数の 3 桁は、「ユーザー」、「グループ」、「その他」を表します。
creat
モード666
forrw-
または777
forで呼び出すかどうかはプログラム次第ですrwx
。この場合、明らかに666
が使用されます。(ファイルは、実行可能でない限り、通常は で作成され666
ます。この場合、777
が使用されます。これは、たとえばコンパイラの場合にカウントされます。)
非常に一般的なのumask
は022
(8 進数) です。( ) を( )に、666
( ) を( ) に変換します。これらはそれぞれ、最終的にファイルに適用されるファイル モードです。rw-rw-rw-
644
rw-r--r--
777
rwxrwxrwx
755
rwxr-xr-x
あなたの umaskは、「その他」グループ001
のビットをオフにするだけです。( ) になり、( ) のx
ままです。777
776
rwxrwxrw-
666
666
rw-rw-rw-
システム管理者が umask 例外を設定して、デフォルトで実行権限が発生しないようにしている可能性があります。詳細については、この記事を参照してください: http://boulderapps.co/on-create-a-new-file-why-are-the-execute-permissions-not-set-to-my-umask