回答:
8進コードを使用すると、考えられる2つの利点がありますが、どちらもそれほど大きなものではありません。
chmod
PerlまたはC では8進数を使用する必要があります。時には非常に単純なユーティリティが「フレンドリー」バージョンを処理しないことがあります。特に非GNUユーザーランドで。
さらに、一部のユーティリティは8進数を吐き出します。たとえばumask
、現在のumaskを確認するために実行すると、8進数で吐き出されます(bash umask -S
ではシンボリックになります)。
だから、要するに、それらを好む唯一の理由は、より少ない文字を入力することですが、それらを使用しないことを選択した場合でも、実行した場合に8進数コードを把握できるようにそれらがどのようにマッピングされるかを知っておく必要があると言います8進数のみを行うものの1つに。ただし、5つのマップがrx
にあることをすぐに知る必要はありません。
私は長すぎて8進数を使用していると思います。
7はrwx(それで何かをする)、5はrx(実行するためにそれを読む必要があります)、6はwr(変更が必要なデータファイル)、4はr(これを見てみましょう)、および0は-(申し訳ありませんが、ここには何も表示されません)。そして、順序は私、私たち、みんなです。これらは基本的な組み合わせです。
755変更して実行できますが、他の誰もが実行できます。
644それを変更できます、他の誰もがそれを読むことができます。
444すべての人だけを読む、ここまでです。
500私はそれを実行することができますが、変更したくないので、他の人はみな引き渡します。
私にとって、それは短い、要点です。9文字とファイルの仕様が続きます。
8進数表現を本当に楽しんだことは一度もありrwxr-xr-x
ません。私にとっては簡単に思えるので、常にまっすぐな表記法を採用しています。ただし、実際に覚えやすくするために、8進数表現を集めたものが存在します(その仕組みはわかりません)。
8進数がテーブルにもたらす唯一の他の可能な利点は、あいまいさの欠如です。8つの異なる許可ビット構成は、単一の異なる番号で表されます。これは、一部の人々が誤っw
て必要のない場所に配置するのに役立つと確信しています。
残念ながら、私はこの表を記憶しています:
# r w x
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
/tmp
スティッキービットを含む)12ビットをとり、プラズマディスプレイパネル上の便利なサイズ、特にPDP-8。それらが16進数になった場合、16進数ごとに1つの許可セットの自然なマッピングには16ビット以上のワードマシンが必要でしたが、これはすべてのPDPがそうであったわけではありません。また、3ビットを無駄にしたり、それらのビットの使用を発明する必要があったりします。おそらく、本当のメリットはない複雑なUnixのパーマを持っているでしょう。
一部のシステムでは、8進数モードによってsetuidビットとsetgidビットが削除される場合があることに注意してください。
Fedora 16:
$ mkdir dir
$ chmod 2775 dir
$ stat -c %a dir
2775
$ chmod 770 dir
$ stat -c %a dir
2770
(2
保存されます)
FreeBSD 9:
$ mkdir dir
$ chmod 2775 dir
$ stat -f %Mp%Lp dir
2775
$ chmod 770 dir
$ stat -f %Mp%Lp dir
0770
(に2
なりました0
)
ファイルまたはディレクトリのアクセス権を変更する場合は、変更するビットを指定するだけの方がよい場合があります(chmod o= dir
またはchmod o-rwx dir
上記の例で)。
歴史は、8進数モードが存在する理由を説明していますが、機能性がニーモニック形式が存在する理由だと思います。そして、8進モードのみを使用する他のツールに関するすべてのポイントは完全に有効であり、それらを学習し、知る必要があると思います。それにもかかわらず、保守的な管理者は、ニーモニック形式に由来する真のユーティリティを見ていません。
8進数形式は、特に再帰的に使用される場合、管理者に愚かなことを強いる傾向があります。むしろ、過失を追加すると、それは愚かになります。たくさんのテキストファイルとx
ビットセットを持ついくつかのフォルダーを実行するたびに、証拠があります。
誰かがそのx
ようなビットを設定するのはなぜですか?モードにニーモニック形式を使用しない限り、そうするのは難しいからです。アクセス許可をリセットし、/var/www
古いスタイルのCGIを実行しないことを考慮して、x
ビットを削除する必要があります。ただし、このx
ビットはディレクトリに対して別の目的を果たします。だからあなたは次のroot
ような何かをすることになります:
chmod -R 666 /var/www
find /var/www -type d -exec chmod 777 {} \;
ただし、ニーモニックフォームを使用している場合は、「レシピ」を与えることができます。
chmod -R a=rwX /var/www
これはchmod -R ugo=rwX /var/www
(同じ、しかし異なるパスを実現する:)の短い形式ですchmod -R a-x,a+rwX /var/www
。
しかし、8進数モードでは達成できない、もっと些細なこともあります。8進数形式でuser
or group
またはother
maskを個別に調整することはできません。
つまり、メス(ニーモニック)と鋭い包丁(8進)を比較するようなものですが、他の理由で8進モードビットをまだ知っている必要があります:)
8進モードが依然として好ましい理由は、ニーモニック形式に関係するタイピングではなく、過度に保守的な管理者だと思います。そして、はい、2013年の呼び出し、それらの過度に保守的な管理者はまだ存在しており、しばらくの間ここにいます。
chmod
PerlまたはCで8進数表現を使用する必要があると言っても、そもそも表現がすでに存在するため、実際には利点ではありません。