ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

Linux chmod, ファイル・ディレクトリのパーミッション(権限)を変更する

programing image

ファイル・ディレクトリのパーミッション(アクセス権限)を変更するときはchmodコマンドを使います。

ひとつ注意点が。このコマンドはファイル・ディレクトリの所有者ユーザーかrootユーザーしかできません。

ファイルやディレクトリ情報の見方も解説します。

アクセス権限を変更するコマンド

ファイル・ディレクトリのアクセス権限のことを

パーミッション

といいます。

パーミッションを変更するchmodコマンドは次のように使います。

chmod 777 target

数字が3つのところは、

ログインユーザ

グループ

その他のユーザ

の権限を指定します。

値は0-7まで用意されていて次の表になります。

早見表

2進数記号意味
0000---すべての権限無し
1001--x実行
2010-w-書き込み
3011-wx書き込み・実行
4100r--読み込み
5101r-x読み込み・実行
6110rw-読み込み・書き込み
7111rwxすべての権限あり

たとえば、

ログインユーザ: 書き込み・読み込み・実行(すべて)

グループ: 読み込み・実行

その他のユーザ: 実行

の権限をsample.txtにつけたいときは、

sample.txtの権限変更
chmod 751 sample.txt

で設定します。

数値でない記号の指定方法もありますが、数値の方がまとめてできるうえに、3文字で設定するのでいちばん楽です。

ディレクトリの権限で、配下のファイル・ディレクトリをまとめて変更するときは、オプション-Rを指定します。

sampleディレクトリとその配下をまとめて変更
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つあります。

表にまとめました。

権限アルファベット数値
読み込みr4
書き込みw2
実行x1
なし-0
アルファベット指定

アルファベットの記号は、

  • read
  • write
  • execute

の略です。

数値指定

数値は、2進数を3桁で表したときの値です。

数値の並びが、

読み込み書き込み実行

なので、それぞれ1のフラグが立ったときの値になります。この表を覚えておくだけでOK。

100読み込み4
010書き込み2
001実行1
覚える表
複数パーミッションの数値指定

読み込みができて実行もできる

など、複数のパーミッションを与えたいときは足し算します。

そうなると、すべてのパーミッションは、

1 + 2 + 4 = 7

になるので、使う数値は0-7になります。

パーミッションの全パターン表

全パターンを表にまとめました。

0000---すべての権限なし
1001--x実行
2010-w-書き込み
3011-wx書き込み・実行
4100r--読み込み
5101r-x読み込み・実行
6110rw-読み込み・書き込み
7111rwxすべての権限あり

くり返しますが、この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以外にもオプションがありますが、あまり使うことはありません。その他の使い方もシンプルなので覚えるのはかんたんです。

最初に見た早見表を見ればよいので、必死で覚えることもないでしょう。

前の投稿
Linux chown, ファイル・ディレクトリの所有者を変更する
Linux tar, tar.gzファイルをアーカイブ・圧縮・解凍・展開する
次の投稿
コメントを残す

*