web-dev-qa-db-ja.com

なぜ `chmod u = rw、go = r、...`の代わりに `chmod 644`を使うのですか?

私はここ数年* nixに取り組んできましたが、私が慣れていないことの1つは、コード内の8進数のアクセス許可です。行の長さ以外にchmod 644 ...以上chmod u=rw,go=r ...

PS:私は8進数のアクセス許可の説明を探していません。それらがどのように機能するかを知っており、マニュアルで詳しく説明されています。人間が読める形式よりも8進数の方が好ましいと思われる理由を尋ねています。

39
l0b0

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

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

時々本当にシンプルなユーティリティは「フレンドリーな」バージョンを処理しません。特に非GNUユーザーランドで。

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

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

41
derobert

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

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

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

644変更できます。他の人はそれを読むことができます。

444誰もが読めるようになりました。

500私はそれを実行できますが、変更したくないので、他の人は誰もが引き継ぎます。

私にとっては、要するに短いです。 9文字とファイルスペックで次に進みます。

18
Fiasco Labs

8進数表現を本当に楽しんだことはありません。常にまっすぐに行ってきましたrwxr-xr-x表記の方が簡単なようです。しかし、私が実際に覚えやすくするために、私が収集したものから8進数表現が存在します(それがどのように機能するかはわかりません)。

8進法が表にもたらすと考えられる他の唯一の利点は、あいまいさの欠如です。 8つの異なる許可ビット構成は、1つの異なる番号で表されます。これは、一部の人々が誤って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
14
n0pe

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

私は象徴的なものを好む。特に、他の部分に触れずに既存の値を変更したい場合。

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

6
Nils

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

20になりました)

ファイルまたはディレクトリの権限を変更する場合は、変更するビットを指定することをお勧めします(上記の例ではchmod o= dirまたはchmod o-rwx dir)。

3
Mikel

歴史はなぜ8進モードexistなのかを説明していますが、機能がニーモニック形式が存在する理由だと思います。そして、8進モードのみを使用する他のツールに関するすべてのポイントは完全に有効であり、それらを学習して知ることはhaveと思います。それにもかかわらず、conservative管理者は、ニーモニック形式に由来する真のユーティリティを認識していません。

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進モードでは実現できない、もっと簡単な別のことがあります。 userまたはgroupまたはotherマスクを8進形式で個別に調整することはできません。

要するに:それはメス(ニーモニック)と鋭い包丁(8進)を比較するようなものです...しかし、他の理由で8進モードのビットを知る必要があります:)

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

2
0xC0000022L

重要な理由の1つは、8進数表現がls -lで表示されるものと厳密に一致することです(または、8進数と2進数を精神的に変換する場合にそうなります)。

0
Conor O'Neill

これは、通常8進数で(pamまたはfstabで)与えられるumask設定にうまく適合します。

0
Nikodemus RIP

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

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

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

0
Brigand