ファイルに対して `chmod 7` を実行した結果は何ですか?

ファイルに対して `chmod 7` を実行した結果は何ですか?

私はchmod 777許可することを知っています読む書く、 そして実行するのためにユーザーグループ、 そしてその他

でも、もし私がそれをやったらどうなるでしょうかchmod 7?

rwxそれはユーザー?

答え1

Ramesh さんの回答は完全に正確ですが、私も加わってファイル モードについてさらに詳しく説明したいと思いました。

や のような数字は特別で、ファイル モードにのみ意味があるように思われるかもしれませんが755777実際には非常に基本的な数字です。

これらの数値は実際には 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単なる数値であり、49310 進数の に相当します。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ファイルには読む許可グループそして読む書くそして実行する許可その他

関連情報