Unixのファイルパーミッションは、ほぼすべての人がどこかで困る。暗訳的な rwxr-xr-x で ls -la 出力、3桁の八進数、それぞれのセット間の違い chmod, chownと、 chgrp — すべてを頭に持つのは難しい。代わりに、このリファレンスをブックマークできる。
今すぐ値を計算したい場合は、 chmod カルクレーター — ビジュアルにパーミッションを選択して、正しい八進数またはシンボリックな表記を生成します。
パーミッションモデル
すべてのファイルおよびディレクトリは、3つのパーミッションセットを持っています。
- 所有者 (u) — ファイルを所有するユーザー
- グループ (g) — ファイルに割り当てられたグループのメンバー
- その他 (o) — その他すべての人
各セットには3ビットがあります。 読み取り (r = 4), 書き込み (w = 2), 実行 (x = 1). それらを足し合わせて、そのセットの八進数桁を得ます。したがって rwx = 4+2+1 = 7, r-x = 4+0+1 = 5, r-- = 4+0+0 = 4.
3桁の八進数のような 755 は、所有者が7 (rwx)、グループが5 (r-x)、その他が5 (r-x)を得ることを意味します。
ls -laの出力の読み方
-rwxr-xr-x 1 thien www-data 4096 Apr 10 10:00 deploy.sh
drwxr-x--- 2 thien www-data 4096 Apr 10 09:00 private/
最初の文字はファイルの種類です: - 通常のファイルの場合、 d ディレクトリの場合、 l シンボリックリンクの場合。次の9文字は、所有者、グループ、その他という順で3文字ずつパーミッションセットを表します。
一般的なchmod値
| 価値 | 所有者 | グループ | その他 | 一般的な使用 |
|---|---|---|---|---|
| 644 | rw- | r– | r– | ウェブファイル(HTML、CSS、PHP) |
| 755 | rwx | r-x | r-x | ディレクトリ、シェルスクリプト |
| 600 | rw- | — | — | SSHキー、プライベート設定ファイル |
| 640 | rw- | r– | — | 設定ファイル(グループ読み可) |
| 664 | rw- | rw- | r– | 共有プロジェクトファイル |
| 700 | rwx | — | — | プライベートスクリプト |
| 777 | rwx | rwx | rwx | 使用しない — すべてのユーザーにフルアクセスを与える |
なぜ777は間違っているか
chmod 777 は、よくある「あとで直す」ためのショートカットで、長期間残ることがあります。システム上のすべてのユーザー(ウェブコンテキストではPHPプロセスを含む)がファイルに書き込みアクセスを持つことになります。共有サーバではセキュリティ上の問題になります。VPSでは不適切です。実際の所有権の問題を解決するために chown その代わり。
chmod と chown と chgrp
| コマンド | 何が変わるか |
|---|---|
chmod | ファイルの読み取り/書き込み/実行権限 |
chown | どのユーザー(およびオプションでグループ)がファイルを所有しているか |
chgrp | どのグループがファイルを所有しているか |
chmod 644 index.php # Set permissions
chown www-data:www-data . # Change owner and group
chgrp developers config.yml # Change group only
Sticky Bit、setUID、setGID
これらは、4桁の八進数(前付)またはシンボリック表記での文字置換で表されます。
- Sticky bit (1 / t) — ディレクトリでは、ファイルの所有者が自分のファイルを削除できる。ディレクトリで使用される。
/tmp. - setUID (4 / s で所有者 x) — ファイルは所有者のユーザーとして実行される。実行ユーザーではなく、実行されるファイルの所有者。これを使用する。
sudoとpasswd. - setGID (2 / s でグループ x) — ファイルでは、ファイルのグループで実行される。ディレクトリでは、新しいファイルはディレクトリのグループを継承し、共有プロジェクトディレクトリでは便利です。
chmod +t /shared/dir # Add sticky bit
chmod 1755 /shared/dir # Sticky bit + standard 755
chmod g+s /var/www/project/ # setGID on a directory
in ls -l 出力では、ディレクトリでのsetGIDは drwxrwsr-x; sticky bitは drwxrwxrwt.
再帰的パーミッション:-Rを使うときは注意
chmod -R ディレクトリおよびその中身すべてにパーミッションを適用します。一般的な誤りは、 755 を再帰的に実行すると、すべてのファイルに実行権限が与えられてしまうこと(必要な場合でも)です。より安全なアプローチは、ディレクトリとファイルを分けています。
# Apply 755 to directories, 644 to files
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
よくあるパーミッション問題の解決
# Web server can't read your files (403 Forbidden)
chown -R www-data:www-data /var/www/html
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
# SSH key refused (WARNING: UNPROTECTED PRIVATE KEY FILE)
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 700 ~/.ssh
# Script won't execute (Permission denied)
chmod +x deploy.sh
# PHP can't write to uploads directory
chown www-data:www-data wp-content/uploads
chmod 755 wp-content/uploads
脳内で計算をスキップ
頭の中で rwxr-x--- に 750 を計算するのは可能ですが、面倒です。その chmod カルクレーター(IO Tools) は、視覚的にパーミッションを切り替え、八進数値とシンボリック表記を即座に表示してくれます。これは、実行前に正確に確認するために非常に便利です。 chmod -R on プロダクションディレクトリで
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
