京橋のバイオインフォマティシャンの日常

南国のビーチパラソルの下で、Rプログラムを打ってる日常を求めて、、Daily Life of Bioinformatician in Kyobashi of Osaka

【LINUX/Macの基本コマンド⑥】chmodコマンドで、ファイルモード(ファイル権限など)を変更する

はじめに

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--@の部分には、以下のような意味が含まれます。

アクセス権限の表記には、-rwxXなどがあって、それぞれ下表に示す意味があります。

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を使い始めた方の少しでも理解を助けられたら、嬉しいですね。。

参考資料

ja.wikipedia.org