
私はchmod 777
許可することを知っています読む、書く、 そして実行するのためにユーザー、グループ、 そしてその他
でも、もし私がそれをやったらどうなるでしょうかchmod 7
?
rwx
それはユーザー?
答え1
Ramesh さんの回答は完全に正確ですが、私も加わってファイル モードについてさらに詳しく説明したいと思いました。
や のような数字は特別で、ファイル モードにのみ意味があるように思われるかもしれませんが755
、777
実際には非常に基本的な数字です。
これらの数値は実際には 8 進数です。10 進数は 10 進数、16 進数は 16 進数、2 進数は 2 進数、8 進数は 8 進数です。つまり、数えていくと になります1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 ...
。したがって、数値 は007
単なる 8 進数 です7
。8 進数は755
単なる数値であり、493
10 進数の に相当します。8
進数を他の基数と区別する点は、8 進数の前に が付くことです0
。したがって、 が 8 進数であると言う場合は755
、実際には と参照する必要があります0755
。このchmod
コマンドは、入力された数値はすべて 8 進数であると想定します。これは、ファイル モードを参照する最も一般的な方法だからです。
さて、ファイル モードではなぜ 8 進数が使用されるのでしょうか。まず、モードは次のようなビットマスクにすぎないことを理解する必要があります。
111111111111 - 12 binary bits
============
1 - Other execute
1 - Other write
1 - Other read
1 - Group execute
1 - Group write
1 - Group read
1 - User execute
1 - User write
1 - User read
1 - Sticky bit
1 - Set group ID
1 - Set user ID
「その他」、「グループ」、「ユーザー」のそれぞれに 3 ビットがあることに注意してください。バイナリ111
は で7
、これは 1 桁の 8 進数値の最高値です。したがって、8 進数を使用すると、その他、グループ、ユーザーの権限のそれぞれに 1 桁が割り当てられ、さらに、sticky+setuid+setgid 用に 1 桁が追加されます。
これで、「 とは何ですかchmod 7
?」という最初の質問に戻ることができます
。さて、これが単なる 8 進数であり、単なるビットマスクであることがわかったので、これを理解できます。8 進数7
は 2 進数です111
。上記のビット位置を使用して、これが 3 つの「その他」ビットすべてを設定し、「その他」の実行、読み取り、および書き込みアクセスを許可することを判断できます。これは単なる数値であるため、他のすべてのビットは 0 であり、設定解除されます。
答え2
それは逆ですrwx
。その他。
touch samplefile
ls -l samplefile
-rw-rw-r-- 1 ramesh ramesh 0 Oct 16 22:29 samplefile
コマンドを実行すると、次のような出力が得られます。
chmod 7 samplefile
ls -l samplefile
-------rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile
のマニュアルページよりchmod
、
数値モードは、1 ~ 4 桁の 8 進数 (0 ~ 7) で、値 4、2、1 のビットを加算して導出されます。 省略された数字は先頭のゼロとみなされます。
さて、次のコマンドを実行して同じことを確認できます。
chmod 47 samplefile
ls -l samplefile
----r--rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile
ご覧のとおり、chmod 47
ファイルには読む許可グループそして読む、書くそして実行する許可その他。