Linuxにおけるアクセス権変更の見方とchmodコマンド

アクセス権を理解しようネットワーク

 

Linuxでアクセス権を表す r, w, x の意味よくわからん。

二進数で表記する方法についても知りたい。

今回はLinuxにおけるアクセス権変更の見方・表し方の詳細について分かりやすく解説です!

 

スポンサーリンク

アクセス権の概要

これからお話する内容を理解する上での基本事項を簡潔に書きますね。

 

まず、「アクセス権を与える対象」となるものは次の3つです。

  • ファイルの所有者
  • グループ
  • その他のユーザ

 

そして、「権限」は次の3つがあります。

  • 読み込み可能
  • 書き込み可能
  • 実行可能

 

基本的に、これらの権限はそれぞれ次のようにアルファベット一字で表されます。

読み込み可能r (read)
書き込み可能w (write)
実行可能x (execute)

 

実際に見てみる

-l オプションをつけて ls コマンドを実行すると、

  「アクセス権」「所有ユーザ」「所有グループ」「ファイルサイズ」「タイムスタンプ」「ファイル名」

 を表示してくれます。

 

<例> test.txt というファイルの情報を確認

ls -l test.txt
-  rw - r - - r - - masa users 0 4月8 14:00 test.txt

 

すると、行の最初の部分にアクセス権(パーミッション)の表示がされます。

 

次のように読みます。

 

  - rw - r – - r – –
①   ②  ③  ④

①の部分

「-」ならばファイル、「d」ならばディレクトリであることを意味します。つまり対象としているものがなんなのか?を表しています。

②の部分

「そのファイルの所有者」のアクセス権を表しています。

上の<例>では、test.txtの所有者である masa が、「読み込み(r)」と「書き込み(w)」をすることが可能という意味です。

③の部分

「所属グループ」のアクセス権を表します。

上の<例>では、users というグループに所属するユーザが、「読み込み(r)」だけ可能ですね。

④の部分

「その他のユーザ」のアクセス権を表します。

上の<例>では、その他のユーザは「読み込み(r)」だけ可能です。

rwxを数字で表そう

次の2つのstepで解説してゆきます。

  • step1.まずこれらのアルファベットを、1 と 0 のビット列で表現します。
  • step2.1 と 0 のビット列を、見やすい10進数表現にする

 

step1

これは非常に簡単です。

 

rwx の3文字について文字のある部分に 1 を、文字の無い部分に 0 を置きます

 

r- –100
-w-010
– -x001
rw-110
r-x101
rwx111
– – –000

 

step2

1 と 0 のみの”二進数表記”を”十進数表記”に変換します。

 

二進数 → 十進数の変換方法は次の通りです。

 

(二進数表記の一の位)× 1 +(二進数表記の十の位)× 2 +(二進数表記の百の位)× 4
例えば 110 ならば
0 × 1 + 1 × 2 + 1 × 4 = 6
となります。
この計算方法から

100 → 4

010 → 2

001 → 1

110 → 6

101 → 5

111 → 7

000 → 0

を得る。

 

「r : 読み込み可能」「w : 書き込み可能」「x : 実行可能」を思い出して、rwx を数値で表記したものをまとめると以下のようになります。

r- –4
-w-2
– -x1
rw-6
r-x5
rwx7
– – –0

 

rwxの三文字をたった一つの数字で表す

上記の変換により、我々は rwx の三文字を一つの数字で表現できるようになりました。

 

よく使われる権限の設定をまとめてみるとこんな感じです。分からないと思ったらもう一度上記の部分を読み返してみてください。そうすればわかると思います。

 

rwx rwx rwx7 7 7
rw- r- – r- –6 4 4
rw- r- - - – –6 4 0
rwx r-x r-x7 5 5
rw- - – - - – –6 0 0
r – - r – - - – –4 4 0

 

アクセス権限を変更するchmod

 

オプション

 

  • 
-R: 指定したディレクトリとその下にあるファイルのアクセス権限を全て変更する。
  • -f :アクセス権限を変更できない時だけエラーを表示する。
  • -c :アクセス権が変更された時にだけ冗長に表示する。
  • – -reference = ファイル名: 指定したファイのアクセス権変更

 

でも今回はアクセス権表記の見方が主眼なので、chmodのオプション自体にあまり深入りしません。

 

上で学んだrwxをchmodで使ってみる

 

ls -l test.txt
- rw - r - - r - - masa users 0 4月8 14:00 test.txt

 

usersというグループに属するユーザ、さらにその他のユーザもtest.txtを読み込むことが可能なようですね。

 

そこで、chmodを使って、ファイル所有者である “私以外には読み込み不可能”を設定してみましょう。

chmod 400 test.txt

 

もう一度、lsコマンドでtest.txtの情報を見てみると

 

ls -l text.txt
- r- - - - - - - - masa users 0 4月8 14:00 test.txt

 

次に、adduser.shというスクリプトに、実行権限(x)をつけてみるとこんな感じです。

chmod 755 adduser.sh

 

スクリプト…スクリプト言語(プログラミング言語の一種)で一連の処理手順を記述したもの

 

chmodとモードビット

 

モードビットは、今までのように数字を使わない表記の仕方です。次の書式を見てもらうと分かりますが確かに数字がありませんね。


augo +-= rwx
①        ②      ③

①の部分

誰を対象に設定するか?を表します。

a全員
uファイル所有ユーザ(user)
gグループ(group)
oその他のユーザ(other)

 

②の部分

+その権限を与える
その権限を無くす
=指定したアクセス権のみ変更する

 

③の部分

初めに解説したやつですね。

 

(例)

ls -l hoge.txt
- rw- - - - r - - masa users 0 4月8 14:00 hoge.txt

もしhoge.txtファイルのパーミッションがこんなんだったとします。

 

この時、グループ権限に「読み込み」と「実行」を可能にしてあげたい時は

chmod g+rx hoge.txt

のように書きます。

 

先ほどchmod 755 adduser.shで全員が実行権を得れるようにしましたが、ここでは文字一文字 “x” を使って次のように簡単にできます。

chmod a+x adduser.sh

「a」は所有ユーザ・グループ・その他のユーザ全員に対して設定することを表していますが、この「a」に限っては省略できますよ。

 

最後に

以上。ざっとLinuxのアクセス権限について解説しました。

私がこの解説をやろうと思ったのは、「ハッキングラボのつくりかた」に設定の場面でたびたび登場するからなんです。

それをやるたんびに「これなんだ?」ってなったんでまとめてみました。

少しでもお役に立てたら光栄です。

 

〜参考書籍〜

『Linuxコマンド ポケットリファレンス[改訂第3版]』著:沓名 亮典(技術評論社)

この書籍、あらゆるLinuxのコマンドが載っていて本当に助かります。”ポケットリファレンス”として常に持っているのはいいかもしれません。

 

p.9 の「よく使われる権限の設定」の表。下から2番目で、

rw- - – - - – –

に対する十進数表現が

400

になってますがたぶん誤植です。正しくは 600ですかね。

 

タイトルとURLをコピーしました