Skip to content

Linux ファイル権限 解説

chmod の8進数モードとシンボリックモード、さらに setuid・setgid・スティッキービット。

すべてのファイルには所有者・グループ・その他の3つのクラスがあります。各クラスは3ビットの合計で表します。読み取りは4、書き込みは2、実行は1。3桁の8進数がモードを構成します。

リファレンステーブル · 42 項目
42 of 42 rows
数値(8進数)
所有者はフルアクセス。グループとその他は読み取りと実行のみ。chmod 755 script.sh
所有者は読み取りと書き込み。グループとその他は読み取りのみ。chmod 644 notes.txt
所有者のみ読み取りと書き込み。他はアクセス不可。chmod 600 ~/.ssh/id_rsa
所有者のみフルアクセス。他はアクセス不可。chmod 700 ~/.ssh
全員がフルアクセス。セキュリティリスク。chmod 777 shared/
全員が読み取りと書き込み。実行ビットは設定されない。chmod 666 log.txt
所有者はフルアクセス。グループは読み取りと実行。その他はなし。chmod 750 app/
全クラスに対して実行のみ。ディレクトリは横断できるが内容の一覧は不可。chmod 111 dir/
どのクラスもアクセス不可。root は引き続きファイルを読める。chmod 000 private.key
所有者とグループがフルアクセスに加えて setgid。共有チームディレクトリの定番パターン。chmod 2775 /srv/team
umask の結果
デフォルトのマスク。新規ファイルは 644、新規ディレクトリは 755 になる。umask 022
プライベートなマスク。新規ファイルは 600、新規ディレクトリは 700 になる。umask 077
シンボリック
所有者に実行権を追加。chmod u+x deploy.sh
グループから書き込み権を削除。chmod g-w config.yml
その他から読み取り権を削除。chmod o-r secret.env
全クラスを読み取り専用に設定。chmod a=r readme.md
全クラスにすべての権限を付与。chmod ugo+rwx public/
特殊ビット
setuid ビットを設定。バイナリはファイル所有者として実行される。chmod 4755 /usr/bin/passwd
setgid ビットを設定。新規ファイルとサブディレクトリはディレクトリのグループを継承する。chmod 2755 /shared
スティッキービットを設定。ファイル所有者のみ削除できる。chmod 1777 /tmp
通常ファイルへのスティッキービット。スワップ保持の名残であり、現代の Linux は無視する。chmod 1755 legacy.sh
コマンド
ファイルのモードビットを変更。chmod 755 file
ファイルの所有者とグループを変更。chown user:group file
ファイルの所有グループを変更。chgrp devs file
新規ファイルのデフォルト権限マスクを設定。umask 022
権限を含めてファイルを長い形式で一覧表示。ls -l /etc
ファイルの POSIX ACL エントリを表示。getfacl report.pdf
POSIX ACL エントリを設定・変更。setfacl -m u:alice:rw report.pdf
権限ビットがモードに一致するファイルを検索。find / -perm /4000
8進数モードを含むファイルのメタデータを出力。stat -c '%a %n' file
パスの各構成要素の権限を一覧表示。namei -l /var/www/index.html
immutable などのファイル属性を変更。chattr +i /etc/resolv.conf
ファイル属性を一覧表示。lsattr /etc/resolv.conf
ファイルに付与されたケイパビリティを表示。getcap /usr/bin/ping
setuid なしでファイルにケイパビリティを付与。setcap 'cap_net_raw=+ep' /usr/bin/ping
現在のシェルで有効なケイパビリティを一覧表示。capsh --print
ユーザーの UID・GID と所属グループを表示。id alice
ユーザーが所属するグループを一覧表示。groups alice
sudoers ポリシーの下で別ユーザーとしてコマンドを実行。sudo systemctl restart nginx
構文チェック付きで sudoers ファイルを編集。visudo
別のユーザーアカウントに切り替え。su - deploy
別のプライマリグループでシェルを開始。newgrp developers