- はじめに
- lsコマンドで、現在のパーミッション設定を表示する
- ファイルのアクセス権限の見方について
- 全てのユーザーに実行権限(a+x)を追加する
- 他ユーザーの実行権限(o-x)を削除する
- 3つの数字列で、アクセス権限を与える
- ディレクトリ下のすべてのフォルダ・ファイルのパーミッションを変更する
- まとめ
- 参考資料
はじめに
chmod
コマンドは、change mode
に由来するコマンドで、
ファイルモード(ファイルのアクセス権限など)を変更できます。
アクセス権限のことを、単に、パーミッションと言うときもあります。
ファイルごとの権限表記の見方や、chmodコマンドを用いた権限変更の方法などを解説します。
実際、ファイルのアクセス権限やchmod
コマンドの使い方は詳しく知ってて損はないです。
lsコマンドで、現在のパーミッション設定を表示する
まず、lsコマンド用いて、ファイルのアクセス権限を表示します。
-lh
オプションを使用します。
l
は詳細表示、h
ではファイル容量に単位をつけます。
a
でディレクトリや隠しファイルを含めて表示します。
#ディレクトリ・ファイル権限の表示 ls -alh #drwxr-xr-x 7 sas staff 224B 1 17 21:24 . #drwx------@ 57 sas staff 1.8K 1 17 23:38 .. #-rw-r--r--@ 1 sas staff 6.0K 1 17 21:24 .DS_Store #-rw-r--r--@ 1 sas staff 3.6K 1 18 00:11 chmod.Rmd #-rw-r--r--@ 1 sas staff 8.8K 1 17 21:24 test1.txt #-rw-r--r--@ 1 sas staff 44K 1 17 21:24 test2.txt #-rw-r--r--@ 1 sas staff 316K 1 17 21:24 test3.txt
ここで、-rw-r--r--@
の部分がファイルのアクセス権限になります。。。
もうすでに、、この文字列の羅列は見たくない感じがしますね。
まずは、-rw-r--r--@ 1 sas staff 247B 1 17 21:10 chmod.Rmd
全体について、それぞれの要素を分解して、説明します。
記法 | 概要 |
---|---|
- | ファイル(-) or ディレクトリ(d) or シンボリックリンク(|) |
rw-r--r--@ | アクセス権限 |
@ | 拡張属性 |
1 | ハードリンクの数 |
sas | 所有者 |
staff | グループ名 |
247B | ファイルサイズ |
1 17 21:10 | 最終更新日時 |
chmod.Rmd | ファイル名 |
また、ファイルに付いてる属性が確認できる方法があります。 追加で、@マークを使用します。
#属性の表示 ls -lh@ #total 752 #-rw-r--r--@ 1 sas staff 672B 1 17 23:28 chmod.Rmd # com.apple.TextEncoding 15B # com.apple.lastuseddate#PS 16B # com.apple.macl 72B # com.apple.metadata:_kMDItemUserTags 42B #-rw-r--r--@ 1 sas staff 8.8K 1 17 21:24 test1.txt # com.apple.TextEncoding 15B # com.apple.lastuseddate#PS 16B # com.apple.macl 72B # com.apple.metadata:_kMDItemUserTags 42B # com.apple.metadata:kMDLabel_j7tdv3zsbybglfmys5p2yfq76m 89B #-rw-r--r--@ 1 sas staff 44K 1 17 21:24 test2.txt # com.apple.TextEncoding 15B # com.apple.lastuseddate#PS 16B # com.apple.macl 72B # com.apple.metadata:_kMDItemUserTags 42B #-rw-r--r--@ 1 sas staff 316K 1 17 21:24 test3.txt # com.apple.TextEncoding 15B # com.apple.lastuseddate#PS 16B # com.apple.macl 72B # com.apple.metadata:_kMDItemUserTags 42B
ファイルのアクセス権限の見方について
-rw-r--r--@
の部分には、以下のような意味が含まれます。
アクセス権限の表記には、-
、r
、w
、x
、X
などがあって、それぞれ下表に示す意味があります。
Mode | 名称 | 説明 |
---|---|---|
- | 権限無し | |
r | 読み込み/リード | ファイルを読み出し可能、ディレクトリを参照可能(一覧表示) |
w | 書き込み/ライト | ファイルやディレクトリに書き込み(新規作成、削除)可能 |
x | 実行権限 | ファイルを実行可能 or ディレクトリに移動可能 |
X | 特殊実行 | 現在の権限に関係なく実行権限を付与 |
また、所有者(u)、グループ(g)、他ユーザー(o)の順で、3文字ずつ、アクセス権限が記載されています。
全てのユーザーに実行権限(a+x)を追加する
権限追加の際には、+
を用います。
+
の前は全ユーザー(a)を指定して、+
の後は実行権限(x)を指定します。
#ファイル権限表示 ls -lh test1.txt #-rw-r--r--@ 1 sas staff 8.8K 1 17 21:24 test1.txt #実行権限の追加 chmod a+x test1.txt #ファイル権限表示 ls -lh test1.txt #-rwxr-xr-x@ 1 sas staff 8.8K 1 17 21:24 test1.txt
グループ(g)、他ユーザー(o)の箇所に、x
が追加されています。
他ユーザーの実行権限(o-x)を削除する
権限削除の際には、-
を用います。
-
の前は他ユーザー(o)を指定して、-
の後は実行権限(x)を指定します。
#ファイル権限表示 ls -lh test1.txt #-rwxr-xr-x@ 1 sas staff 8.8K 1 17 21:24 test1.txt #他ユーザーの実行権限の削除 chmod o-x test1.txt #ファイル権限表示 ls -lh test1.txt #-rwxr-xr--@ 1 sas staff 8.8K 1 17 21:24 test1.txt
よく見ると、他ユーザー(o)の箇所のx
が削除されました。
3つの数字列で、アクセス権限を与える
アクセス権限は、3つの数字の組み合わせでも変更できます。
下表の0, 1, 2, 3, 4, 5, 6, 7
の数値を使用します。
権限の数字 | 概要 |
---|---|
0 | すべて、不許可 |
1 | 実行権限 |
2 | 書き込み許可 |
3 | 書き込み許可、実行権限 |
4 | 読み込み許可 |
5 | 読み込み許可、実行権限 |
6 | 読み込み許可、書き込み許可 |
7 | 読み込み許可、書き込み許可、実行権限 |
3つの数字列は、 所有者(u)、グループ(g)、他ユーザー(o)の順で、 権限を記述します。
例えば、所有者(u)にすべての許可(7)、
グループ(g)と他ユーザー(o)に読み込み許可だけ(4)を与える場合
744
を指定します。意外と簡単ですね。。
ディレクトリ下のすべてのフォルダ・ファイルのパーミッションを変更する
chmod -R 777 [ディレクトリ]
-R
はディレクトリ全体への適用を意味します。
また、777
は、すべてのユーザーに読み込み・書き込み・実行の権限を与えます。
まとめ
著者もそうでしたが、 ファイルやディレクトリのアクセス権限は、LINUXを使い始めのときには難しい概念でした。。
この記事が、LINUXやMacを使い始めた方の少しでも理解を助けられたら、嬉しいですね。。