chmod パーミッション(権限)の設定・変更

by tamohiko

server-memo.net / 2017-07-25 13:23

  2017/07/25  

chmodの使い方

「chmod」コマンドを使用することでファイルやディレクトリのパーミッション(アクセス権限)を変更することが出来ます。

パーミッションについての詳しい説明はこちらのページを参照願います。

コマンド書式

chmod オプション パーミッション ファイルまたはディレクトリ  

使用例

パーミッションは数字で指定する方法と、シンボル(文字)で設定する方法があります。

$ chmod 777 test.txt   (数値で設定する場合)  $ chmod a=rwx test.txt  (シンボルで設定する場合)  

上記はどちらも「test.txt」ファイルのパーミッション「読み込み」「書き込み」「実行」を、すべてのユーザを対象に許可しています。

オプション

「chmod」コマンドで使用できるオプション一覧です。

オプション 説明
-R
–recursive
ディレクトリ内のデータもあわせてパーミッションの変更を行う
-c
–changes
パーミッションに変更があった場合のみ変更内容を表示
-f
–silent
–quite
エラーメッセージを表示しない
-v
–verbose
パーミッションの変更内容を表示
–reference=参照データ 指定したデータと同じパーミッションを設定
–no-preserve-root 「/」ディレクトリのパーミッションを変更させない(初期設定)
–preserve-root 「/」ディレクトリのパーミッションを変更する場合に使用(ほぼ使用する機会はないでしょう)

パーミッションの指定方法

「chmod」でパーミッションを指定する場合には「数値」を使用する方法と、「シンボル(文字)」を使用するという2種類の方法がありますので、それぞれの指定方法について説明をしていきます。

数値を使用

パーミッションを数値で指定する場合は、「所有ユーザ」「所有グループ」「その他のユーザ」ごとにパーミッションを指定する必要があるため、通常3桁の数値でパーミッションを指定することになります。

※「suid」「sgid」「sticky bit」などの特殊なパーミッションを設定する場合は4桁の数値で設定することになります。

パーミッションと数値の対応表

各パーミッションの値は下記の通りとなり、実際に指定する場合は有効とするパーミッションの数値を合計した値を指定します。

パーミッション 数値
読み込み許可 4
書き込み・変更(作成・削除)許可 2
実行許可 1
許可なし 0
パーミッションの組み合わせ一覧

パーミッションの組み合わせは下記の8通りとなります。

パーミッション内容 数値
「読み込み」「書き込み」「実行」のすべてを許可 7 (4 + 2 + 1)
「読み込み」「書き込み」を許可 6 (4 + 2 + 0)
「読み込み」「実行」を許可 5 (4 + 0 + 1)
「読み込み」のみ許可 4 (4 + 0 + 0 )
「書き込み」「実行」を許可 3 (0 + 2 + 1)
「書き込み」のみ許可 2 (0 + 2 + 0)
「実行」のみ許可 1 (0 + 0 + 1)
許可なし 0 (0 + 0 + 0)

設定例

パーミッションは左から「所有ユーザ」「所有グループ」「その他のユーザ」の設定となるので、それぞれに設定したい数値を指定していきます。

  • 所有ユーザ 「読み込み」「書き込み」「実行」のすべてを許可 (7)
  • 所有グループ 「読み込み」「実行」を許可 (5)
  • その他のユーザ 「読み込み」「実行」を許可 (5)

といったパーミッションを「test.sh」というファイルに設定する場合は、下記のように設定を行います。

$ chmod 755 test.sh  

シンボル(文字)を使用

シンボルを使用してパーミッションを設定する場合は、以下の項目に対応するシンボルを組わせて設定を行っていきます。

  • 設定対象ユーザ (誰に)
  • パーミッション (どのパーミッションを)
  • 設定内容 (どのように設定するか)

設定対象ユーザ

パーミッションを設定する対象を「所有ユーザ」「所有グループ」「その他のユーザ」「全てのユーザ」から指定します。

対象とシンボルの対応表

設定対象とシンボルの対応は下記の通りとなります。

シンボル 設定対象
u 所有ユーザ(user)
g 所有グループ(group)
o その他のユーザ(ohters)
a 全てが対象(all)
設定なし 何も設定指定しない場合は全てが対象となる

パーミッション

「読み込み」「書き込み」「実行」のパーミッションとシンボルの対応は下記のとおりとなります。

シンボル 設定対象
r 読み込み許可
w 書き込み・変更許可
x 実行許可
X フォルダのみに実行許可を追加

設定内容

パーミッションをどのように設定するかを「追加」「削除」「指定」といった動作で指定します。

シンボル 設定対象
削除
+ 追加
= 指定したパーミッションのみ有効

設定例

シンボルによるパーミッションの設定例をいくつかあげさせていただきます。

パーミッションの指定

「test.txt」というファイルの「所有ユーザ(u)」へ「読み込み(r)」「書き込み(w)」「実行(x)」の許可するというパーミッションを「指定(=)」してみます。

$ chmod u=rwx test.txt  

「所有ユーザ」のパーミッションが「rwx」と設定されていることが確認できました。

$ ls -l test.txt  -rwxrw-r-- 1 tamohiko tamohiko 0 Jul 24 17:09 test.txt  
パーミッションの削除

「所属グループ
(g)」から「書き込み(w)」許可のパーミッションを「削除(-)」してみます。

$ chmod g-w test.txt  

「所有グループ」の「書き込み」権限が削除されていることが確認できました。

$ ls -l test.txt  -rwxr--r-- 1 tamohiko tamohiko 0 Jul 24 17:09 test.txt  
パーミッションの追加

「その他のユーザ(o)」に「実行(x)」許可のパーミッションを「追加(+)」してみます。

$ chmod o+x test.txt  

「その他のユーザ」に「実行」権限が追加されていることが確認できました。

$ ls -l test.txt  -rwxr--r-x 1 tamohiko tamohiko 0 Jul 24 17:09 test.txt  
複数対象へのパーミッション設定

複数の対象へパーミッションを設定する場合は「,」(カンマ)で区切ることで、一度に複数の対象へパーミッションを設定することが出来ます。

「所有グループ(g)」と「その他のユーザ(o)」に対して「書き込み(w)」許可のパーミッションを「追加(+)」してみます。

$ chmod g+w,o+w test.txt  

「所有グループ」と「その他のユーザ」のパーミッションに書き込み権限が追加されていることが確認できました。

$ ls -l test.txt  -rwxrw-rwx 1 tamohiko tamohiko 0 Jul 24 17:09 test.txt  

シンボルと数値のパーミッション対応表

シンボルと数値によるパーミッション組み合わせ一覧です。

シンボル 数値 パーミッションの内容
rwx 7 (4 + 2 + 1) 「読み込み」「書き込み」「実行」のすべてを許可
rw- 6 (4 + 2 + 0) 「読み込み」「書き込み」を許可
r-x 5 (4 + 0 + 1) 「読み込み」「実行」を許可
r– 4 (4 + 0 + 0 ) 「読み込み」のみ許可
-wx 3 (0 + 2 + 1) 「書き込み」「実行」を許可
-w- 2 (0 + 2 + 0) 「書き込み」のみ許可
–x 1 (0 + 0 + 1) 「実行」のみ許可

chmod パーミッション(権限)の設定・変更

留下评论