Linux権限管理応用【応用編】
権限管理の基礎を身につけたら、次は応用技術をマスターしましょう。この応用編では、所有者変更、グループ管理の実践、デフォルト権限設定、特殊権限を詳しく解説します。実務で必須の高度な権限管理技術を習得できます。
1. chown/chgrp - 所有者の変更
chown - 所有者とグループの変更
所有者のみ変更
$ chown newuser file.txt
所有者とグループを同時に変更
$ chown newuser:newgroup file.txt
グループのみ変更
$ chown :newgroup file.txt
再帰的に変更
$ chown -R webuser:www-data /var/www/html/
chgrp - グループの変更
$ chgrp developers project/
🛠️ 実務でのchown活用例
Webサーバーのファイル所有者設定
目的: Apache/Nginxが正常にファイルを読み書きできるよう設定
# ファイルはwww-dataが所有、グループも同じ $ sudo chown -R www-data:www-data /var/www/html/ # 設定ファイルのみrootが所有 $ sudo chown root:root /etc/apache2/sites-available/*
ログファイルの権限設定
目的: アプリケーションログをサービスユーザーが書き込み、管理者が読み取り可能に
# ログファイルをアプリユーザーが所有、adminグループで管理 $ sudo chown app-user:admin /var/log/application.log $ sudo chmod 664 /var/log/application.log
バックアップスクリプトの権限
目的: バックアップユーザーのみが実行可能なスクリプト
# バックアップスクリプトをbackupユーザーのみ実行可能に $ sudo chown backup:backup /usr/local/bin/backup.sh $ sudo chmod 700 /usr/local/bin/backup.sh
⚠️ chown使用時の注意点
システムファイルの変更禁止
危険な例:
$ sudo chown user:user /etc/passwd # 絶対禁止! $ sudo chown user:user /bin/bash # システム破壊!
システムファイルの所有者を変更すると、システムが起動しなくなる可能性があります。
再帰的変更の注意
推奨パターン:
# まず対象を確認 $ ls -la /path/to/directory/ # 段階的に変更 $ sudo chown user:group /path/to/directory/ $ sudo chown -R user:group /path/to/directory/*
2. groups - グループ管理の実践
Linuxではユーザーをグループに分類してアクセス権限を効率的に管理できます。groupsコマンドでグループ情報を確認し、実際の権限管理に活用しましょう。
🔍 グループの基本概念
グループは複数のユーザーをまとめて管理するメカニズムです。ファイルやディレクトリに対して、個々のユーザーではなくグループ単位で権限を設定できます。
プライマリグループ
- ユーザーが作成するファイルのデフォルトグループ
- 通常はユーザー名と同じ名前
/etc/passwdで定義
セカンダリグループ
- ユーザーが追加で所属するグループ
- 複数のセカンダリグループに所属可能
/etc/groupで定義
📋 groupsコマンドの基本使用法
現在のユーザーのグループを確認
$ groups
alice alice sudo developers www-data
解説: alice(プライマリ)、sudo、developers、www-data(セカンダリ)に所属
特定ユーザーのグループを確認
$ groups username
bob : bob developers marketing
詳細なグループ情報を確認
$ id
uid=1001(alice) gid=1001(alice) groups=1001(alice),27(sudo),1002(developers),33(www-data)
解説: UID、プライマリGID、所属する全グループのGIDが表示
グループメンバーの確認
$ getent group developers
developers:x:1002:alice,bob,charlie
解説: developersグループのメンバー一覧が表示
🛠️ 実務でのグループ活用シナリオ
シナリオ1: Web開発チームの権限管理
課題: 開発者全員が/var/www/projectディレクトリで協力作業したい
✅ 解決手順
- 開発グループを作成
$ sudo groupadd webdevs
- ユーザーをグループに追加
$ sudo usermod -a -G webdevs alice $ sudo usermod -a -G webdevs bob $ sudo usermod -a -G webdevs charlie
- プロジェクトディレクトリの所有者を設定
$ sudo chown -R :webdevs /var/www/project $ sudo chmod -R 775 /var/www/project
- 新規ファイルのデフォルトグループを設定
$ sudo chmod g+s /var/www/project
(SGID設定で新規ファイルが自動的にwebdevsグループになる)
🎯 結果
- webdevsグループのメンバー全員が読み書き可能
- 新規作成ファイルも自動的にグループ権限が設定
- 他のユーザーは読み取り・実行のみ
シナリオ2: データベース管理者グループ
課題: MySQL設定ファイルをDBA(データベース管理者)のみがアクセス可能にしたい
✅ 解決手順
- DBAグループを作成
$ sudo groupadd dba
- DBAユーザーを追加
$ sudo usermod -a -G dba alice $ sudo usermod -a -G dba bob
- MySQL設定ファイルの権限を設定
$ sudo chown mysql:dba /etc/mysql/mysql.conf.d/ $ sudo chmod 750 /etc/mysql/mysql.conf.d/ $ sudo chmod 640 /etc/mysql/mysql.conf.d/*.cnf
🎯 結果
- DBAグループのメンバーのみ設定ファイルを編集可能
- MySQL プロセスは常にアクセス可能
- 他のユーザーはアクセス不可
💡 グループ管理のベストプラクティス
🎯 適切なグループ設計
- 役割ベース: developers, admins, users
- プロジェクトベース: project-a, project-b
- 機能ベース: www-data, mysql, ssh-users
目的を明確にしてグループを作成
🔒 セキュリティ考慮事項
- 最小権限の原則: 必要最小限のグループのみ追加
- 定期的な監査: 不要なグループメンバーシップを削除
- sudo権限の制限: sudoグループは慎重に管理
📋 運用上の注意点
- グループ変更後: ログアウト/ログインが必要
- 名前規則: 一貫したグループ命名規則を採用
- ドキュメント化: グループの目的と権限を文書化
🔧 よくあるグループ関連の問題と解決法
❌ 問題: グループに追加したのにアクセスできない
症状: usermod -a -G group user したのに権限エラーが発生
✅ 解決法
- 新しいグループ権限を反映するため再ログイン
- またはnewgrpコマンドを使用:
$ newgrp groupname
- 現在のグループを確認:
$ groups
❌ 問題: グループの削除ができない
症状: groupdel: cannot remove the primary group of user
✅ 解決法
- グループを使用しているユーザーを確認:
$ getent group groupname
- プライマリグループとして使用している場合は変更:
$ sudo usermod -g newgroup username
- セカンダリグループから削除:
$ sudo gpasswd -d username groupname
📚 グループ管理コマンドリファレンス
| コマンド | 用途 | 例 | 説明 |
|---|---|---|---|
groups [user] |
グループ確認 | groups alice |
ユーザーの所属グループを表示 |
id [user] |
詳細情報 | id alice |
UID、GID、グループ一覧を表示 |
getent group |
グループ情報 | getent group developers |
グループの詳細情報とメンバー |
newgrp group |
グループ切替 | newgrp developers |
一時的にプライマリグループを変更 |
groupadd group |
グループ作成 | sudo groupadd webdevs |
新しいグループを作成 |
usermod -a -G |
グループ追加 | sudo usermod -a -G group user |
ユーザーをグループに追加 |
gpasswd -d |
グループ削除 | sudo gpasswd -d user group |
グループからユーザーを削除 |
3. umask - デフォルト権限の設定
umaskは、新規作成されるファイルとディレクトリのデフォルト権限を制御します。
現在のumask値を確認
$ umask
0022
umaskの計算方法
デフォルト権限からumask値を引いた値が実際の権限になります:
- ファイル:666 - umask = 実際の権限
- ディレクトリ:777 - umask = 実際の権限
例:umask 022の場合
- ファイル:666 - 022 = 644 (rw-r--r--)
- ディレクトリ:777 - 022 = 755 (rwxr-xr-x)
umaskの変更
$ umask 077 # より制限的(ファイル600、ディレクトリ700)
🛠️ 実務でのumask活用
一般ユーザー向け(umask 022)
- ファイル: 644 (他者読み取り可)
- ディレクトリ: 755 (他者実行可)
- 用途: 一般的な作業環境
セキュアな環境(umask 077)
- ファイル: 600 (所有者のみアクセス)
- ディレクトリ: 700 (所有者のみアクセス)
- 用途: 機密データ、個人環境
グループ共有環境(umask 002)
- ファイル: 664 (グループ書き込み可)
- ディレクトリ: 775 (グループ書き込み可)
- 用途: チーム開発、共有プロジェクト
永続的なumask設定
# ~/.bashrcに追加 echo "umask 077" >> ~/.bashrc # システム全体での設定 sudo echo "umask 022" >> /etc/profile
4. 特殊な権限
通常の権限以外に、3つの特殊な権限ビットがあります。
🔍 特殊権限の実用例
SUID の活用例
passwd コマンド
$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 68208 Jan 11 10:00 /usr/bin/passwd
一般ユーザーでもroot権限でパスワード変更が可能
SGID の活用例
共有ディレクトリ
$ chmod g+s /shared/project/
新規作成ファイルが自動的にprojectグループに属する
Sticky Bit の活用例
/tmp ディレクトリ
$ ls -ld /tmp drwxrwxrwt 15 root root 4096 Jan 11 10:00 /tmp
誰でも書き込めるが、他人のファイルは削除できない
⚠️ 特殊権限のセキュリティ注意点
SUID の危険性
- 攻撃者がroot権限を取得する可能性
- 定期的な監査が必要
- 不要なSUIDファイルは削除
# SUID ファイルを検索 $ find / -perm -4000 -type f 2>/dev/null
適切な使用方針
- 必要最小限の場所でのみ使用
- 代替手段がないか検討
- セキュリティログの監視
🔐 権限管理シリーズ全体
当サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである「Amazonアソシエイト・プログラム」の参加者です。商品価格に影響はありません。
📚 権限管理・セキュリティ学習におすすめの書籍
Linux権限管理の応用技術を効率的にマスターするために、実際に役立つ書籍を厳選してご紹介します。chown、グループ管理、umask、特殊権限を深く学べます。
📚 新しいLinuxの教科書
対象レベル: 初級〜中級
権限管理の応用技術を含む総合的なLinux教科書。chown、グループ管理、umaskの基本から始めて、実務で使える権限設定を段階的に学べます。特殊権限(SUID・SGID・Sticky bit)の解説も充実しており、権限管理の全体像を理解したい方に最適な一冊です。
📚 Linuxセキュリティ標準教科書
対象レベル: 初級〜中級(セキュリティ基礎)
LPI公式のセキュリティ教科書。chown、グループ管理、特殊権限(SUID・SGID)のセキュリティ側面を網羅。この記事で学んだ「適切な所有者設定」「グループ権限の実践」などのセキュリティベストプラクティスを体系的に理解できます。初心者でも安心して学べる構成です。
📚 Linuxサーバーセキュリティ徹底入門
対象レベル: 中級〜上級(セキュリティ実践)
サーバーセキュリティの実践書。より詳細な権限設定、グループポリシー管理、セキュリティ監査まで深掘りできます。基本的なchown・umaskをマスターした後、実務レベルのセキュリティ対策と権限管理を学びたい方に強く推奨します。SUIDファイルの監査手法なども解説。
📚 ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版
対象レベル: 中級〜上級
権限管理を実務で活用する実践書。chown・umask・特殊権限をマスターした後、それらを実際のサーバー構築・運用でどう使うのかを体系的に学べます。Webサーバーの権限設定、ログファイルの権限管理、グループベースのアクセス制御など、実務で即戦力となる権限設定方法を知りたい方に最適です。
🎉 実践で権限管理をマスターしよう
書籍で応用知識を習得したら、Penguin Gym Linuxの実践課題で手を動かして学習を定着させましょう。chown、グループ管理、umask、特殊権限を実際に使うことで、確実にスキルアップできます。