※この記事は自分用の学習記録です。間違いがあれば後日追記します。
どのディストリでも動く基本コマンドに絞っています。
0. 実行環境(再現性メモ)
• 環境例:WSL2/Ubuntu 22.04(amd64)
• シェル:bash
• Mermaid:v11.3
1. Linuxの権限モデルを超圧縮で
1.1 所有者・グループ・その他(u/g/o)
ls -l の先頭10文字が権限です。
ls -l /bin/ls
例:-rwxr-xr-x 1 root root ... /bin/ls
• 1文字目:-(ファイル)/d(ディレクトリ)
• 次の9文字:rwx × 3セット(user/group/others)
• r=読める、w=書ける、x=実行できる(ディレクトリでは x=中に入れる/検索できる)
1.2 数字で覚える(644/755 など)
| 記号 | 意味 | 数値 |
|---|---|---|
r |
読む | 4 |
w |
書く | 2 |
x |
実行(ディレクトリは探索) | 1 |
和で表現:rwx=7、rw-=6、r-x=5…
• 例:-rw-r--r-- → 644(u=6, g=4, o=4)
• 例:-rwxr-xr-x → 755(u=7, g=5, o=5)
2. chmod:権限を変える
2.1 記号で変える(読みやすい)
chmod u+x script.sh # 自分(u)に実行権を足す(+)
chmod go-w notes.txt # グループ/その他から書き込み権限を外す(-)
chmod a=r file.txt # すべて(a)を読み取り専用(=)
2.2 数字で変える(素早い)
chmod 644 file.txt # 一般的なテキスト
chmod 755 run.sh # 実行スクリプト/ディレクトリ
chmod -R 755 public/ # 再帰(-R)で一式
ポイント:ディレクトリに x がないと中に入れない。ls -ld dir でディレクトリ自体の権限も確認。
3. 所有者を変える:chown/chgrp
sudo chown user:group target # 所有者とグループを同時に
sudo chgrp webapp target # グループだけ変える
• 例:アプリ用ユーザーmyappにディレクトリを渡す
sudo mkdir -p /opt/myapp
sudo chown -R myapp:myapp /opt/myapp
4. よく使う「権限レシピ」5選(コピペ用)
# 1) .ssh のお作法(SSHで弾かれない)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/authorized_keys
# 2) Webルート(誰でも読める/実行は可、書き込みは不可)
chmod -R 755 /var/www/html
# 3) ログディレクトリ(アプリだけ書ける)
sudo chown -R myapp:myapp /var/log/myapp
chmod -R 750 /var/log/myapp
# 4) スクリプトを実行可能に
chmod u+x deploy.sh
# 5) 読み取り専用に固める(公開ファイル群など)
chmod -R a=r public-assets
find public-assets -type d -exec chmod a=rx {} \; # ディレクトリはxも必要
5. sudo:一時的に「管理者として実行」
• sudo :その1回だけ管理者権限
• sudo -u :別ユーザーとして実行
• sudo -s:rootシェル(必要なときだけ)
• sudoedit :安全に編集(推奨)
5.1 自分を「管理者グループ」に入れる(※ルート権限が必要)
• Debian/Ubuntu系:
sudo usermod -aG sudo <yourname>
• RHEL/CentOS系:
sudo usermod -aG wheel <yourname>
反映には再ログインが必要。id や groups で所属を確認。
6. “ディレクトリでの x は何か”を図で理解
つまりディレクトリの x がないと cd できない。r があっても中を一覧できないことがある(検索専用)。
7. よくあるエラー → 最短で直す
| 症状 | よくある原因 | まずやること |
|---|---|---|
Permission denied |
権限不足/所有者違い |
ls -l で権限と所有者を確認 → chmod/chown
|
Operation not permitted |
rootでも禁止(immutable等) |
lsattr file → sudo chattr -i file で解除 |
is not in the sudoers file |
sudoグループに未所属 | rootで usermod -aG sudo <user>(または wheel) |
| ポート80が開けない | 非rootで低番ポート | sudo setcap 'cap_net_bind_service=+ep' /path/to/bin |
immutable属性は特にハマる:chattr +i file が付いてると削除も変更も不可。外すには chattr -i file。
8. umask:デフォルト権限の下地
新規ファイルの権限は 基準値 − umask で決まる(通常:ファイル=666、ディレクトリ=777)。
umask # 例) 0022
• 0022 なら、ファイルは 644、ディレクトリは 755 で作られる
• 一時的に変えたい:umask 002(共同作業で group 書き込みを許すなど)
9. まとめ
• rwx は u/g/o の3セット。数字は r=4, w=2, x=1 の和で覚える
• ファイルとディレクトリで x の意味が違う(実行 vs 中に入れる)
• 実務は chmod(権限)+ chown(所有)+ sudo(昇格) の3点セットで回る