【Linuxコマンド】chmodでアクセス権限(パーミッション)を変更

Linuxコマンド「chmod」でファイルやディレクトリのアクセス権限(パーミッション)を変更する方法についてオプションと例題付きでまとめました。

スポンサーリンク

パーミッションの変更(chmodコマンド)

chmodコマンドは、ファイルやディレクトリのアクセス権限(パーミッション)を設定します。

chmod [オプション] [ファイル・ディレクトリ]
記号 意味
u 所有者の権限
g グループの権限
o その他のユーザーの権限
a すべての権限
+ 後に記述した権限を付加する
後に記述した権限を削除する
= 後に記述した権限にする
r 読み込み権限
w 書き込み権限
x 実行権限
s セットID
t スティッキ・ビット
-v コマンド実行結果を表示
-c 変更があった場合のみ、実行結果を表示
-R 再帰的に変更

実行例1

以下のコマンドを実行するとファイル「test.csv」のアクセス権限は以下のようになります。

chmod 755 test.csv
権限の区分 設定値 アクセス権限
所有者権限 7 「読込み」「書込み」「実行」すべて可。
グループ権限 5 「読込み」「実行」のみ可。
その他のユーザーの権限 5 「読込み」「実行」のみ可。

実行例2

# すべてのユーザーに実行権限を付与
chmod +x test.csv
# -rwxr-xr-x      test.csv

#グループに書き込み権限をその他のユーザーにはすべて禁止
chmod g+w,o= test.csv
# -rwxrwx---      test.csv

#ディレクトリとディレクトリ内のファイル全ての権限を(再帰的に)変更
chmod -R 766 test_dir

# 実行結果を表示させながら実行(vオプション)
chmod -vR 755 test_dir

# 結果が変わらない場合は実行結果の表示なし(cオプション)
chmod -cR 755 test_dir
スポンサーリンク

SUID

SUID(Set User ID) が設定されているコマンドやプログラムが実行すると、実行したユーザーではなく「ファイルの所有者の権限」で実行されます。

chmod コマンドでファイルのパーミッションを変更する際、ファイル所有者のアクセス権を設定する引数に「s」もしくは「4000」を指定すると、そのファイルにSUIDが設定されます。

$ chmod u+s file1
$ ls -l
$-rwSr--r-- 1 root root 0 11月 5 02:14 file1

なお、上記のように実行権限がない(ファイル644 など)にSUIDを設定した場合、大文字のSが表示されます。
実行権限を持ったファイルの場合、以下のように小文字のsが表示されます。

$ chmod u+s file1
$ ls -l
drwsr-xr-x 2 root root 4096 11月 5 02:15 file1

アクセス権が 755 のファイルに「4000」を指定してSUIDを設定する場合は以下のコマンドになります。

$ chmod 4755 file1
スポンサーリンク

SGID

SGID (Set Group ID)が設定されているコマンドやプログラムが実行されると、実行したユーザーやグループでなく、そのファイルの所有グループの権限で実行されます。
chmod コマンドでファイルのパーミッションを変更する際、ファイル所有者のアクセス権を設定する引数に「g」もしくは「2000」を指定すると、そのファイルにSGID が設定されます。

$ chmod g+s file1
$ ls -l
drwsr-sr-x 2 root root 4096 11月 5 12:34 file1
$ chmod 2755  file1
$ ls -l
drwxr-sr-x 2 root root 4096 11月 5 12:34  file1
スポンサーリンク

スティッキービット(stickybit)

テッキービットが設定されているディレクトリは、書き込み許可権限のあるファイルであっても、他のユーザーが所有しているものは削除できなくなります。
また、スティッキービットが設定されているディレクトリ内に作成したファイルやディレクトリは、所有者以外はファイルやディレクトリの名前変更と削除ができなくなります。
「/tmp」ディレクトリなどm他のユーザーに誤って削除されたくない一時ファイルを保護する場合などに使用します。

chmod コマンドでファイルのパーミッションを変更する際、ファイル所有者のアクセス権を設定する引数に「t」もしくは「1000」を指定すると、そのファイルにスティッキービットが設定されます。

$ chmod +t file1
$ ls -l
drwsr-sr-t 2 root root 4096 11月 5 02:14 file1
$ chmod 1755 file1
$ ls -l
drwxr-xr-t 2 root root 4096 11月 5 02:14 file1

スティッキービットの設定を解除(Off)するコマンドは以下のとおりです。

$ chmod -t file1
$ ls -l
drwsr-sr-x 2 root root 4096 11月 5 02:14 file1
スポンサーリンク

関連ページ

【Linuxコマンド入門】主なコマンドとサンプル集
Linuxコマンドの主な使い方とサンプル集について入門者向けにまとめました。
UNIX
スポンサーリンク

コメント