chmod / chown / umask の基本をおさえ、ディレクトリ配下へ安全に一括適用する練習です。
想定時間:各3〜6分
1) ファイルの権限を数値(8進)で確認する
問題:app.log の権限を 数値表記(例:644) で表示してください。
ヒント:ls -l では文字列表記、数値は別のコマンド。
▶解答例
stat -c %a app.log
2) スクリプトを「自分だけ実行可」にする
問題:deploy.sh を 所有者のみ実行可能(読み書き実行)に設定してください。
ヒント:数値指定なら 700、記号指定なら u=rwx,go=。
▶解答例
chmod 700 deploy.sh
3) ディレクトリ配下の ディレクトリは755/ファイルは644 にそろえる
問題:webroot/ 配下で、ディレクトリは755・ファイルは644 に一括で整えてください(シンボリックリンクは除外)。
ヒント:find で -type d と -type f を分けて適用。
▶解答例
find webroot -type d -exec chmod 755 {} + && find webroot -type f -exec chmod 644 {} +
4) 所有権をユーザー:グループに再帰的変更する
問題:/var/www/example/ の所有者を www-data、グループを www-data に 再帰的 に変更してください(処理内容を表示)。
ヒント:-R(再帰)と -v(冗長表示)。
▶解答例
sudo chown -Rv www-data:www-data /var/www/example/
5) 一時的に umask を 027 にしてファイルを作る
問題:シェルで umask を 027 に設定し、その状態で tmp.txt を作成してください。
ヒント:umask は「新規作成時の引き算マスク」。027 ならファイルは 640 相当(実行ビットは通常付かない)。
▶解答例
umask 027 && touch tmp.txt
6) プロジェクトディレクトリで setgid を設定し、グループ継承させる
問題:project/ ディレクトリに setgid(g+s) を設定し、以後その配下で作られるファイル・ディレクトリのグループが devs に継承されるようにしてください。
ヒント:まずルートのグループを devs に、次に g+s。
▶解答例
chgrp -R devs project && chmod g+s project
安全に運用するコツ
- 破壊的操作の前に 対象を一覧表示:
find ... -print - 本番パスに対する
-Rは慎重に。まずはテストディレクトリで検証 - 数値と記号の両表現を行き来できるように練習する(例:
755 = u=rwx,go=rx)

