広告が嫌いですか? 行く 広告なし 今日

chmod の簡単な英語解説 — 755 を書く人々がその意味を知らない理由

更新日

755、644、777 — これらは数十回も入力されています。これらが実際に意味するもの、なぜchmod 77-7が怠慢ではなく悪ではないのか、そしてそれぞれの値が実際に適切な場合について説明します。

chmodの英語での説明 — なぜ誰も755を書くのに意味を知らずにいるのか 1

キャリアの初期段階で、誰かが「走り続けろ」と言ったことがある。 chmod 755 ディレクトリまたは chmod 644 設定ファイルに対して。

それはうまくいった。あなたは進んでいった。そして、数年後、あなたはまだその正確な数字を筋肉記憶からタイプする。そして誰かが「755 って何を意味するの?」と尋ねたとき、あなたは漠然と画面を指差して「それは標準的な権限のことだ」と言う。 chmod 777 これは問題ないまではいいが、問題が生じるとき、デバッグが必要になる、新しいスクリプトを作成する必要がある、または若手開発者に「なぜ」がすべての問題の解決策ではないか説明する必要があるとき、筋肉記憶だけでは足りなくなる。

ここに、その数字が実際に意味する内容を示す。

ビット構造

Unixファイルの権限は、3つのセットのビットからなります。それだけです。各セットは、所有者、グループ、その他という1つのカテゴリのユーザーが行えることを制御し、各セット内のビットは読み取り、書き込み、実行にマッピングされます。

値は、読み取り=4、書き込み=2、実行=1です。各セットに対してそれらを足し合わせます。したがって 7 は読み取り+書き込み+実行(4+2+1)を意味します。 5 は読み取り+実行(4+1)を意味します。 4 は読み取りのみを意味します。

を分解 755:所有者は7(rwx)を得、グループは5(r-x)を得、その他は5(r-x)を得。二進法では:111 101 101。シンボリック表記では: rwxr-xr-x。あなたがずっとタイプしてきたデフォルトは、「所有者はすべての操作ができる、その他は読み取りと実行は可能だが書き込みはできない」というものです。

ls -laの出力の読み方

でWindows上で ls -la ディレクトリにおいては、あなたが得るものは次のようになります:

drwxr-xr-x  2 deploy www-data 4096 May 29 10:00 public_html
-rw-r--r--  1 deploy www-data 2341 May 29 09:45 config.php
-rwx------  1 deploy deploy    891 May 28 14:20 deploy.sh
-rw-------  1 deploy deploy    411 May 10 08:30 .env

最初の文字はファイルの種類です: d ディレクトリの場合、 - 通常のファイルの場合、 l シンボリックリンクの場合。その後に、所有者、グループ、その他という3つのグループの3文字が続きます。ダッシュは権限が存在しないことを意味します。

権限の後に出てくる数字はハードリンクの数です。その後に所有者名、グループ名、バイト単位のファイルサイズ、変更時刻、そして最後にファイル名が続きます。

したがって drwxr-xr-x 2 deploy www-data は、ディレクトリ、所有者(deploy)は読み取り・書き込み・実行が可能、グループ(www-data)は読み取りと移動が可能だが書き込みは不可、その他は読み取りと移動が可能だが書き込みは不可。2つのハードリンク。これは標準的なウェブディレクトリです。

一般的な権限値とその存在理由

ここに実際に使う値の分解、意味、そしてどのような状況で使うべきかを示します。

価値シンボリックバイナリ‘Access-Control-Allow-Origin’ヘッダーが存在しません使用するタイミング
755rwxr-xr-x111 101 101所有者:完全権限。グループ/その他:読み取り+実行ディレクトリ、公開実行可能ファイル、ウェブサーバーで提供されるスクリプト
644rw-r–r–110 100 100所有者:読み取り+書き込み。グループ/その他:読み取りのみ設定ファイル、静的アセット、HTML、PHPソースファイル
600rw——-110 000 000所有者:読み取り+書き込み。その他すべて:何もなしSSHプライベートキー(~/.ssh/id_rsa)、.envファイル
700rwx——111 000 000所有者:完全権限。その他すべて:何もなし秘密を含むスクリプト、プライベート実行ファイル
777rwxrwxrwx111 111 111すべてのユーザー:完全アクセス/tmp、コンテナのスクラッチディレクトリ — ほとんどどこにもない

ディレクトリが「実行」権限が必要な理由は、「実行」がディレクトリの場合、「移動」を意味するからです — ディレクトリに入ることとその中身をアクセスできる能力です。ディレクトリが r--r--r--の場合、ファイル名をリストできますが、実際にアクセスすることはできません。cd するかファイルを開くには「xビット」が必要です。そのためディレクトリには755ではなく744が使われます。

これらの値をインタラクティブに確認したい場合は、 IO Toolsのchmod計算機 個々のビットを切り替えて、八進法とシンボリック表記の値がリアルタイムで更新されるため、不慣れな権限値を作成する際に非常に便利です。

シンボリック表記:代替的に使うべきタイミング

八進法表記はすべての権限を一度に設定します。シンボリック表記は段階的に変更します。どちらも有効です — 使用するべきタイミングは、何をやっているかに依存します。

chmod u+x script.sh 所有者の実行権限を追加し、他の部分を変更しません。ファイルが現在 644の場合、これにより 744になります。八進法を使用して chmod 744 script.shと書くと、同じ結果を得ますが、現在の状態を最初に知る必要があります。

シンボリック操作子はシンプルです: + 権限を追加します。 - 権限を削除します。 = 権限を正確に設定します。ターゲットは u (所有者)、 g (グループ)、 o (その他)、 a (すべての3つ)。

chmod u+x deploy.sh          # add execute for owner
chmod g-w config.php         # remove write from group
chmod o=r public/index.html  # set others to read-only exactly
chmod a+r shared.txt         # add read for everyone

1つの権限を変更したい場合にシンボリック表記を使用し、完全にゼロから設定する場合や最終状態を完全に制御したい場合に八進法を使用します。

新しいファイルがデフォルトで666になる理由

テキストエディタや touch を使って新しいファイルを作成すると、 644が得られます。ディレクトリを作成すると、 755が得られます。これらのデフォルト値はどこから来ていますか?

ファイルは理論上の最大値 666 (実行権限はデフォルトでなし — それは明示的に設定しなければなりません)。ディレクトリは理論上の最大値 777。の umask から引かれます。

ほとんどのLinuxシステムでのデフォルトのumaskは 022です。ファイルに対しては666 – 022 = 644。ディレクトリに対しては777 – 022 = 755。これが644と755がデフォルトとして感じられる理由です — それは、機械的にそうなるからです。

でWindows上で umask を実行して現在の値を確認できます。必要であればシェルプロファイルで変更できます — umask 027 はファイルが640、ディレクトリが750になるため、その他すべての権限を削除し、グループのみが読み取りを許可します。

chmod 777:悪ではない、ただ無駄にしているだけ

ここに chmod 777についての真実な見解を示します。すべての状況でセキュリティ災害とは言えず、生産環境ではほとんど正しい答えではありません。人々がそれを使うのは、権限エラーが消えるだけで、考えることを必要としないからです。

共有サーバーにおいて chmod 777 書き込み可能なディレクトリは、どのユーザーが実行しているプロセス — つまり、攻撃されたウェブアプリケーションを含む — すべてがそのディレクトリに書き込みできるようになります。これは現実の攻撃面です。また、これは「あとで直す」という理由で、生産環境に永遠に残ってしまうようなものです。

777を使う適切なケース:

  • /tmp に一時的なコンテナ内 — 何も保存されず、何も意味がないので、進んでください
  • 開発中の権限問題のデバッグ — 権限が問題であることを確認し、正しい値を設定する
  • 信頼できる、単一ユーザーのマシン上の共有スクラッチディレクトリ — あなたが唯一のユーザーであれば、「その他」の権限は理論的に存在しません

診断プロセスは:権限拒否エラーが発生したとき、一時的に777を適用して、それが権限の問題か何か別の問題かを確認し、その後、正しい権限を決定してそれを設定する。 chmod 777 診断ツールとして chmod 777 デプロイスクリプトで誰も見直さない場合に、こういったことが発生します。

理解すべき値

すべての組み合わせを暗記する必要はありません。これら4つは実際のケースの約95%をカバーしています:

  • 755 — 公開アクセスが必要なディレクトリおよび実行ファイル
  • 644 — すべてのユーザーが読み取り可能だが、所有者だけが書き込み可能なファイル
  • 600 — センスファイル:SSHキー、認証情報、.envファイル。SSHは、600またはそれ以上の権限を持つプライベートキーを拒否します。
  • 700 — 内部に秘密を含むスクリプトで、誰もが実行しないようにすべきスクリプト

それらの範囲を超えた場合、ビット構造から始めます:所有者、グループ、その他がそれぞれ何を必要とするかを決定し、ビットを合計し、数字を書きます。必要であれば、 Chmod計算機 は、プレッシャー下で計算をしなくても役立ちます。

権限モデルは、Unixのもので、理解しなければ無意味に見えるものですが、それは単なる二進法の加算であることに気づくと、他の人のchmodコマンドを無駄にコピーするのではなく、意図的に権限を設定できるようになります — それが目的です。

広告なしで楽しみたいですか? 今すぐ広告なしで

拡張機能をインストールする

お気に入りのブラウザにIOツールを追加して、すぐにアクセスし、検索を高速化します。

に追加 Chrome拡張機能 に追加 エッジ拡張 に追加 Firefox 拡張機能 に追加 Opera 拡張機能

スコアボードが到着しました!

スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!

ニュースコーナー 技術ハイライト付き

参加する

価値ある無料ツールの提供を継続するためにご協力ください

コーヒーを買って