「chmod u = rw、go = r、…」の代わりに「chmod 644」を使用するのはなぜですか?


38

私は数年前から* nixに取り組んでいますが、慣れていないものの1つはコードの8進数の許可です。行の長さよりも優先chmod 644 ...する他の理由がありchmod u=rw,go=r ...ますか?

PS:8進数の許可の説明は探していません。私はそれらがどのように機能するかを知っています、そしてそれはマニュアルでよく説明されます。私は、なぜ人間が読みやすい形式よりも8進数が好まれるのかを尋ねています。

回答:


40

8進コードを使用すると、考えられる2つの利点がありますが、どちらもそれほど大きなものではありません。

  1. それらは短く、入力しやすいです。
  2. いくつかのことはそれらを理解するだけであり、日常的にそれらを使用する場合、1つにぶつかっても頭を傷つけない(またはドキュメントを実行する)ことはありません。たとえば、chmodPerlまたはC では8進数を使用する必要があります。

時には非常に単純なユーティリティが「フレンドリー」バージョンを処理しないことがあります。特に非GNUユーザーランドで。

さらに、一部のユーティリティは8進数を吐き出します。たとえばumask、現在のumaskを確認するために実行すると、8進数で吐き出されます(bash umask -Sではシンボリックになります)。

だから、要するに、それらを好む唯一の理由は、より少ない文字を入力することですが、それらを使用しないことを選択した場合でも、実行した場合に8進数コードを把握できるようにそれらがどのようにマッピングされるかを知っておく必要があると言います8進数のみを行うものの1つに。ただし、5つのマップがrxにあることをすぐに知る必要はありません。


1
chmodPerlまたはCで8進数表現を使用する必要があると言っても、そもそも表現がすでに存在するため、実際には利点ではありません。
n0pe

@MaxMackie:それらを使用することの利点。明確にします。
derobert

18

私は長すぎて8進数を使用していると思います。

7はrwx(それで何かをする)、5はrx(実行するためにそれを読む必要があります)、6はwr(変更が必要なデータファイル)、4はr(これを見てみましょう)、および0は-(申し訳ありませんが、ここには何も表示されません)。そして、順序は私、私たち、みんなです。これらは基本的な組み合わせです。

755変更して実行できますが、他の誰もが実行できます。

644それを変更できます、他の誰もがそれを読むことができます。

444すべての人だけを読む、ここまでです。

500私はそれを実行することができますが、変更したくないので、他の人はみな引き渡します。

私にとって、それは短い、要点です。9文字とファイルの仕様が続きます。


まあ、8進数(8進数)、16進数(16進数)ではありません。
デロバート

うん、それ、ヘックスの半分。<にやにや笑い>
フィアスコLabsの

ここでは同じ、私はテキストバージョン...より読み進簡単に見つける
ブライアンKnoblauch

13

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

8
3の各セットにバイナリを使用するように学習したので、rw -------は(110)(000)(000)、つまり(6)(0)(0)になります。rwxr-xr-xは(111)(101)(101)なので、(7)(5)(5)になります。
ロブ

4
主なものは、元のUnix許可システムはC. 4 8進数(のための1777のような特別なものを、覚えてから、プログラムされていた方法ですので、進表現が存在する理由は、/tmpスティッキービットを含む)12ビットをとり、プラズマディスプレイパネル上の便利なサイズ、特にPDP-8。それらが16進数になった場合、16進数ごとに1つの許可セットの自然なマッピングには16ビット以上のワードマシンが必要でしたが、これはすべてのPDPがそうであったわけではありません。また、3ビットを無駄にしたり、それらのビットの使用を発明する必要があったりします。おそらく、本当のメリットはない複雑なUnixのパーマを持っているでしょう。
ウォーレンヤング

⁺¹は@Rob btwに移動します。確かに、バイナリ表現から実際の数を計算することは基本的な組み合わせ論で、最大数のために、あなたも「進」を持っていることについて覚えておく必要がないことをした後(つまり、111B)が 7を超えることはありません
のHi-エンジェル

この表はそれを非常に明確にします。それは素晴らしいことです!!!
リトルロイズ

6

その理由はやはり歴史だと思います。最初は、8進値のみが1つでした。象徴的なものは後で来ました。

シンボリックなものが好きです。特に、他の部分に触れずに既存の値を変更したい場合。

同様にchmod -R u=rwx,g-w+X,o=-8進数でそれを行います...


3

一部のシステムでは、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上記の例で)。


2

歴史は、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進数形式でuseror groupまたはothermaskを個別に調整することはできません。

つまり、メス(ニーモニック)と鋭い包丁(8進)を比較するようなものですが、他の理由で8進モードビットをまだ知っている必要があります:)

8進モードが依然として好ましい理由は、ニーモニック形式に関係するタイピングではなく、過度に保守的な管理者だと思います。そして、はい、2013年の呼び出し、それらの過度に保守的な管理者はまだ存在しており、しばらくの間ここにいます。


0

常にファイルのアクセス許可を変更する必要がある場合、3文字に感謝します。多くの時間は、私が使用+または-変更の権限のバージョンを。

たとえば、Apacheフォルダーに新しいPHP、Python、またはその他のスクリプトを作成します。 chmod a+xそれが実行できるように私がするすべてです。「すべてプラス実行」と読みました。これで動作することがわかったので、必要なのは3文字だけです。

また、644と755を自動的に使用する場合もあります。私はそれを644ファイル、755スクリプトを意味すると考えています。



0

1つの重要な理由は、8進数表現があなたが見ているものと密接に一致することですls -l(またはむしろ、あなたが精神的に8進数と2進数を変換するときに一致することです)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.