Linuxにおけるファイルとユーザ権限の仕組み

Linuxのセキュリティモデルは、厳密なアクセス制御に基づいて構築されています。その中心となるのが「ユーザ」「グループ」「ファイル権限」の三要素です。これらが連携して、誰が何をどこで実行できるかを決定します。

シェル:ユーザとカーネルの仲介者

Linuxシステムは、カーネル(ハードウェア操作の核)、シェル(コマンドインタフェース)、およびユーティリティツールから成ります。シェル(例:bash)は単なる入力窓ではなく、以下の役割を担います:

  • コマンド解釈:ユーザが入力した文字列を解析し、カーネルに適切なシステムコールとして伝達
  • 結果整形:カーネルからの返答を人間が読みやすい形式に変換して表示
  • アクセスフィルタリング:不正または未実装の操作を事前に遮断し、カーネルへの不要な負荷やリスクを回避

ユーザ種別と特権管理

Linuxでは、ユーザは主に二つのカテゴリに分けられます:

  • rootユーザ:UID 0 の唯一の特権アカウント。全ファイル・デバイス・プロセスへの完全制御権を持つ
  • 一般ユーザ:通常UID 1000以上で作成され、自身のホームディレクトリと一時領域のみに限定されたアクセス権を持つ

ユーザ切り替えにはsuコマンドを使います:

su -l alice    # aliceユーザへログインシェルを起動して切り替え
su -c "ls /root" root  # rootで1回限りのコマンド実行

日常作業中は、sudoによる一時的特権昇格が推奨されます。対象ユーザは/etc/sudoersに登録済みである必要があります:

sudo systemctl restart nginx

ファイルの所有関係と権限構造

ls -l出力の先頭部分は、ファイルのタイプとアクセス権限を示します:

-rw-r--r-- 1 alice devteam 1024 Jan 15 10:30 config.yaml
  • 第1文字:ファイルタイプ(-=通常ファイル、d=ディレクトリ、l=シンボリックリンクなど)
  • 次3文字(rw-):所有者(owner)の権限
  • 次3文字(r--):所属グループ(group)の権限
  • 次3文字(r--):その他(others)の権限

各権限ビットの意味:

記号数値意味(ファイル)意味(ディレクトリ)
r4内容の読込可エントリ一覧表示可(ls
w2内容の編集可エントリの追加/削除可(touch, rm
x1実行可能(スクリプト/バイナリ)カレントディレクトリへの移動可(cd

権限の変更手法

権限設定は、数値表現(オクタル)または記号表現のいずれかで行えます。

オクタル表記による設定

各3ビットを8進数1桁で表現。例:755 = rwxr-xr-x

chmod 644 document.txt   # 所有者:rw-, グループ:r--, others:r--
chmod 750 script.sh        # 所有者:rwx, グループ:r-x, others:---

記号表記による微調整

既存権限を維持しつつ、特定の権限を追加・削除できます:

chmod u+x script.sh      # 所有者に実行権を付与
chmod go-w private.conf  # グループ・othersから書き込み権を剥奪
chmod a+r data.log       # 全ユーザ(all)に読み込み権を付与

所有者とグループの再割り当て

所有者の変更にはchown、グループの変更にはchgrpを使用します。これらの操作はrootまたはsudo権限が必要です:

chown bob:admins project/     # 所有者をbob、グループをadminsに
chown :developers file.txt     # グループのみ変更(所有者は不変)
chgrp engineering archive.tar.gz

タグ: linux permissions chmod chown Shell

8月4日 18:58 投稿