chmod (Change Mode)とは?
chmod(チェンジモード)は、Linuxファイルシステムにおける「ファイルモードビット」を変更するためのコマンドです。最も一般的な用途は、ファイルのアクセス権限(パーミッション)の設定です。
基本的な使い方
権限の指定方法には「記号表記」と「数値表記」の2種類があります。
1. 記号表記(Symbolic Mode)
「誰に」「何を」「どうする」かを文字で指定する方法です。
u (user), g (group), o (others),
a (all) に対して、
+ (追加), - (削除), = (設定) で、
r (read), w (write), x (execute) を操作します。
- `chmod +x script.sh`: すべてのユーザーに実行権限を追加。
- `chmod u+w file.txt`: ファイルの所有者に書き込み権限を追加。
- `chmod go-rwx secret.dat`: グループと他人から全権限を剥奪。
2. 数値表記(Octal Mode)
権限を3桁(または4桁)の8進数で表します。
r=4, w=2, x=1 の足し算です。
- `chmod 755 app`: 所有者は全権限(7)、他は読み・実行のみ(5)。実行ファイルやディレクトリによく使われます。
- `chmod 644 document.txt`: 所有者は読み書き(6)、他は読み取りのみ(4)。一般的なファイルの設定です。
- `chmod 600 key.pem`: 所有者のみ読み書き可能。秘密鍵の必須設定です。
特殊な権限:SUID / SGID / Sticky Bit
`chmod` は特殊な属性も変更できます。
- SUID (4000): 実行時にファイルの所有者の権限で動作します(例: `passwd` コマンド)。`chmod u+s file`。
- SGID (2000): 実行時にファイルのグループ権限で動作します。ディレクトリに設定すると、その中に作られたファイルは親ディレクトリのグループを継承します(共有フォルダで有用)。`chmod g+s dir`。
- Sticky Bit (1000): ディレクトリ内のファイル削除を、ファイルの所有者だけに制限します(例: `/tmp` ディレクトリ)。`chmod +t dir`。
AI開発と権限管理
AI開発において、データのセキュリティは極めて重要です。学習データセットやトレーニング済みモデル(Weights)が格納されたディレクトリには、適切な権限設定が不可欠です。
例えば、チーム共有のモデル置き場では `chmod -R g+rwX models/` のようにしてグループメンバーがアクセスできるようにしつつ、外部への漏洩を防ぐため `o-rwx`
を徹底します。また、推論APIサーバーの起動スクリプトには `chmod 700` を設定し、管理者以外が実行できないようにするなどの対策を講じます。
よくあるトラブル
「Webサーバーで画像が表示されない(403 Forbidden)」というトラブルの多くは、パーミッション設定ミスが原因です。Webサーバーのプロセス(通常 `www-data` ユーザー)がファイルを読み取れるように、`chmod 644` やディレクトリへの `chmod 755` が必要です。
また、`chmod -R 777`(全権限付与)はトラブルシューティングで安易に使われがちですが、セキュリティリスクが非常に高いため、本番環境では絶対に行うべきではありません。