ファイル・ディレクトリのパーミッション(アクセス権限)を変更するときはchmodコマンドを使います。
ひとつ注意点が。このコマンドはファイル・ディレクトリの所有者ユーザーかrootユーザーしかできません。
ファイルやディレクトリ情報の見方も解説します。
アクセス権限を変更するコマンド
ファイル・ディレクトリのアクセス権限のことを
パーミッション
といいます。
パーミッションを変更するchmodコマンドは次のように使います。
chmod 777 target
数字が3つのところは、
ログインユーザ
グループ
その他のユーザ
の権限を指定します。
値は0-7まで用意されていて次の表になります。
早見表
値 | 2進数 | 記号 | 意味 |
---|---|---|---|
0 | 000 | --- | すべての権限無し |
1 | 001 | --x | 実行 |
2 | 010 | -w- | 書き込み |
3 | 011 | -wx | 書き込み・実行 |
4 | 100 | r-- | 読み込み |
5 | 101 | r-x | 読み込み・実行 |
6 | 110 | rw- | 読み込み・書き込み |
7 | 111 | rwx | すべての権限あり |
たとえば、
ログインユーザ: 書き込み・読み込み・実行(すべて)
グループ: 読み込み・実行
その他のユーザ: 実行
の権限をsample.txtにつけたいときは、
chmod 751 sample.txt
で設定します。
数値でない記号の指定方法もありますが、数値の方がまとめてできるうえに、3文字で設定するのでいちばん楽です。
ディレクトリの権限で、配下のファイル・ディレクトリをまとめて変更するときは、オプション-Rを指定します。
chmod -R 751 sample
Linuxのファイル・ディレクトリ情報の見方
chmodで権限を0-7の数値で指定しました。結果の表だけを見てもらいましたが、意味までは説明していません。
数値の意味は、Linuxでファイルやディレクトリがどのように表示されるかを見るとわかりやすいです。
まずそこから見てみましょう。
lsコマンドを実行すれば、ファイル・ディレクトリの内容が表示されます。
ls -l
-rw-rw-r-- 1 xxxxx yyyyy 1875611 Aug 16 23:57 zzzzzz
結果はこんな感じ。内容をひとつひとつ解説します。
ファイルタイプ
-rw-rw-r-- 1 xxxxx yyyyy 1875611 Aug 16 23:57 zzzzzz
最初の1文字目はファイルのタイプです。
- | ファイル |
d | ディレクトリ |
l | シンボリックリンク |
パーミッション(アクセス権限)
-rw-rw-r-- 1 xxxxx yyyyy 1875611 Aug 16 23:57 zzzzzz
次に、ファイルタイプから間をあけずに9文字の文字列がつづきます。
ファイルのアクセス権限です。アクセス権限には、
- だれが?
- なにをできるか?
が表示されます。
ファイルの所有者はだれか?
『だれが?』は、
所有者 | グループ | 所有者以外のユーザー |
〇〇〇 | ××× | △△△ |
で、9文字を3文字ずつ区切ります。
『所有者』はファイルを作成したユーザーで、ユーザーはなにかしらのグループに属します。
最後はファイル作成者以外のユーザーです。
所有権がないユーザーがなにをできるか?
を設定します。
ファイルに何ができるか?
『なにができるか?』は、
ファイルの読み込み | ファイルの書き込み | ファイルの実行 |
です。
3者のユーザーに、それぞれ3つのパーミッションを1文字ずつ指定します。
パーミッションの指定方法はアルファベットと数値の2つあります。
表にまとめました。
権限 | アルファベット | 数値 |
---|---|---|
読み込み | r | 4 |
書き込み | w | 2 |
実行 | x | 1 |
なし | - | 0 |
アルファベット指定
アルファベットの記号は、
- read
- write
- execute
の略です。
数値指定
数値は、2進数を3桁で表したときの値です。
数値の並びが、
読み込み | 書き込み | 実行 |
なので、それぞれ1のフラグが立ったときの値になります。この表を覚えておくだけでOK。
100 | 読み込み | 4 |
010 | 書き込み | 2 |
001 | 実行 | 1 |
複数パーミッションの数値指定
読み込みができて実行もできる
など、複数のパーミッションを与えたいときは足し算します。
そうなると、すべてのパーミッションは、
1 + 2 + 4 = 7
になるので、使う数値は0-7になります。
パーミッションの全パターン表
全パターンを表にまとめました。
0 | 000 | --- | すべての権限なし |
1 | 001 | --x | 実行 |
2 | 010 | -w- | 書き込み |
3 | 011 | -wx | 書き込み・実行 |
4 | 100 | r-- | 読み込み |
5 | 101 | r-x | 読み込み・実行 |
6 | 110 | rw- | 読み込み・書き込み |
7 | 111 | rwx | すべての権限あり |
くり返しますが、この3文字のパーミッションが所有者・グループ・その他のユーザーに割りあてられるので、
-rw-rw-r-- 1 xxxxx yyyyy 1875611 Aug 16 23:57 zzzzzz
赤: 所有者
緑: グループ
青: その他のユーザー
のパーミッションになります。
パーミッションエラー
パーミッションがないのにファイル・ディレクトリにたいして操作をすると、エラーが発生します。
Permission denied
ハードリンク数
-rw-rw-r-- 1 xxxxx yyyyy 1875611 Aug 16 23:57 zzzzzz
パーミッションの次は、1つ半角スペースであけて、ハードリンクの数です。
ここでは、くわしい話をすることはあまり意味がないので、
- ファイルなら1
- ディレクトリなら、配下のファイル・ディレクトリのだいたいの数
ぐらいでいいです。
Linuxでは、ディレクトリ直下に
. | カレントディレクトリ |
.. | 親(1階層上)のディレクトリ |
の2つのハードリンクがあり、カウントされます。
ハードリンクの数なので、シンボリックリンクは数に入りません。
その意味で、正確なファイル・ディレクトリの数になりません。
所有者名とグループ名
-rw-rw-r-- 1 xxxxx yyyyy 1875611 Aug 16 23:57 zzzzzz
ハードリンク数の次は、1つ半角スペースであけて、
ファイルの所有者名
ファイル所有者の所属グループ名
です。所有者とグループの間は1つ半角スペースであけます。
ファイルの所有者はファイルの作成者
ファイルサイズ
-rw-rw-r-- 1 xxxxx yyyyy 1875611 Aug 16 23:57 zzzzzz
所有者名・グループ名の次は、1つ半角スペースであけて、ファイルサイズです。
単位はbyteでディレクトリの場合は0になります。
更新日時
-rw-rw-r-- 1 xxxxx yyyyy 1875611 Aug 16 23:57 zzzzzz
ファイルサイズの次は、1つ半角スペースであけて、ファイルの更新日時です。
ディレクトリのとき、ディレクトリの構成が変わったときの更新日時になります。
新規作成の場合は作成日時です。
ファイル名・ディレクトリ名
-rw-rw-r-- 1 xxxxx yyyyy 1875611 Aug 16 23:57 zzzzzz
最後に、1つ半角スペースであけて、ファイル・ディレクトリ名です。
まとめ
chmodには、-R以外にもオプションがありますが、あまり使うことはありません。その他の使い方もシンプルなので覚えるのはかんたんです。
最初に見た早見表を見ればよいので、必死で覚えることもないでしょう。