• Top
  • What's New
  • Command
  • Basic
  • Server
  • Security
  • Conf
  • tools
  • etc
  • blog
  • Link
  • サイトについて
  • Mail
INDEX /  シェル(bash) /  FHS /  パーミッション /  ランレベル /  RPM /  vi /  シンボリックリンク / 
最終更新日 2005/06/04  

パーミッション


パーミッションとは
パーミッションの表示
ファイルとディレクトリのパーミッション
パーミッションの設定(記号)
パーミッションの設定(数値)
特殊なパーミッション

パーミッションとは

パーミッションとは、ファイルやディレクトリに設定(する)されているアクセス権のことを言います。
アクセス権とは、どのユーザに対して、どのような操作を許可するかという情報のことです。
具体的には、GNU/Linuxシステムのユーザを「オーナー」「グループ」「その他のユーザ」の3種類に分けます。
そして、そのユーザに対して「読み込み権限」「書き込み権限」「実行権」の3つの操作を与えます。
例えば、ユーザには「読み」「書き」「実行」を与え、グループに対しては「読み」のみ、その他のユーザには何も与えないなどです。
パーミッションを与えることによって、ファイルやディレクトリを保護することができます。
ページトップへTop

パーミッションの表示

ファイルやディレクトリのパーミッションを表示するには、「ls -l」コマンドを使用します。

 

パーミッションの表示
# ls -l
合計 4
-rwxrwxrwx  1 root root    0  3月  4 11:27 file
-rw-r--r--  1 root root    0  3月  4 11:27 file2
lrwxrwxrwx  1 root root    4  3月  8 18:43 filelink -> file
drwxr-xr-x  2 root root 4096  3月  8 18:43 testdir

一番左の「rwxrwxrwx」の部分がパーミッションを表しています。rwxの3文字が3セットです。
左からの3つが「オーナー」に対してのアクセス権、真中が「グループ」に対して、次が「その他」に対してのアクセス権です。
「r」が読み込み権限、「w」が書き込み権限、「x」が実行権を表しています。
rwxが始まる前の「-」や「d」はパーミッションを表しているのではなく、ファイルの種類を表示しています。
「-」はファイル、「l」はシンボリックリンク、「d」はディレクトリをそれぞれ表しています。

ファイルとディレクトリのパーミッション

パーミッションは、「読み」「書き」「実行」の3つになります。
しかし、ファイルのパーミッションとディレクトリのパーミッションの意味合いは少し違います。
ファイルに対しては、「読み」「書き」「実行」の意味合いをそのまま当てはめてもらって構いません。
ディレクトリに若干違いますが、GNU/Linuxシステムではディレクトリもファイルの一種として扱うため、そのことを頭に入れて考えると 分かりやすくなります。

 

ファイルのパーミッション
パーミッション 意味
読み込み権限ファイルの内容を閲覧できる。lessなどのページャで開くことができるが、上書き編集はできない
書き込み権限ファイルを編集することができる。viなどのエディタで開いて編集し上書きすることができる
実行権スクリプトファイル(シェルスクリプトなど)を実行することができる

 

ディレクトリのパーミッション
パーミッション 意味
読み込み権限ディレクトリの一覧を表示することができる。ディレクトリ内でlsを実行することができる
書き込み権限ディレクトリ内でファイルを作成したり削除したりできる。
実行権ディレクトリ内にcdコマンドで移動することができる

ページトップへTop

パーミッションの設定(記号)

パーミッションの設定は、「chmod」コマンドを使用します。

 

書式: chmod <パーミッション> <ファイル又はディレクトリ>

書式のパーミッションの部分は数値による設定と、記号による設定のどちらかで設定が可能です。
記号によるパーミッション設定を行う場合は、ユーザ(u,g,o,a)オペレータ(+,-,+)アクセス権(r,w,x)の3つを使用します。

 

ユーザを表す記号
記号 説明
uファイルの所有者(オーナー)
gファイルの所有グループ
oその他のユーザ(アザー)
aすべてのユーザ(ugoで表すこともできる)

 

オペレータを表す記号
記号 説明
+アクセス権を追加する
-アクセス権を削除する
=アクセス権を設定する

 

アクセス権を表す記号
記号 説明
r読み込み権限
w書き込み権限
x実行権

 

記号による設定のパーミッション箇所は、<ユーザ><オペレータ><アクセス権>の形になります。
オーナーに対して書き込み件を与える場合は「u+w」、グループに対して実行権を削除する場合は「g-x」とします。
また、「uo+rx」などユーザ・アクセス権とも複数指定することもできます。

 

記号を用いた設定例
1: $ chmod u+x testfile
2: $ chmod g-w testfile
3: $ chmod u=rw testfile
4: $ chmod a+x testfile

  1. ユーザに対して実行権を追加
  2. グループに対して書き込み権を削除
  3. ユーザに対して読み込み権と書き込み権を設定
  4. すべて(オーナ・グループ・その他の人)に対して実行権を追加
ページトップへTop

パーミッションの設定(数値)

数値による設定は、パーミッションを8進数の数字で表します。
パーミッション「rwxr-xr--」の場合に、2進数で許可があるところを「1」許可がないところを「0」で表すと「111101100」の9ビットで 表すことができます。これをユーザ(オーナー・グループ・その他)ごとに3ビットずつに分けます。
オーナは「rwx」で「111」、グループは「r-x」で「101」、その他は「r--」で「100」となります。
それぞれ、ユーザごとに2進数を8進数に変換すると、ユーザ「7」、グループ「5」、その他「4」となり、この数字を繋げて「754」となります。
つまり、それぞれのパーミッションを8進数で表した場合は、「r=4」「w=2」「x=1」となります。

 

パーミッションと2進数表記と8進数表記
パーミッション 2進数表記 8進数表記
rwx1117
rw-1106
r-x1015
r--1004
-wx0113
-w-0102
--x0011
---0000

 

数値による設定のパーミッション箇所は、8進数による全員のアクセス権という形になります。
オーナーに対しては、読み・書きを、グループに対して読みだけを、その他に対しては、なにも与えない場合は「640」とします。
記号を用いた設定例
1: $ chmod 777 testfile
2: $ chmod 755 testfile
3: $ chmod 600 testfile
4: $ chmod 000 testfile

  1. すべて(オーナ・グループ・その他の人)に対してフルアクセスを与える
  2. ユーザはフルアクセス、グループとその他の人は、読みと実行が可能
  3. ユーザは読み・書きができるが、ユーザ以外はなにもできない
  4. すべて(オーナ・グループ・その他の人)に対してアクセスを与えない(rootはパーミッションは関係ない)
ページトップへTop

特殊なパーミッション

ファイルのパーミッションには、特殊なフラグが存在します。「SUID」「SGID」「SICKY」の3つのモードです。
通常パーミッションは、9ビットで表現しますが正確にはこの上に3ビット追加した合計12ビットになります。

suidビット

通常コマンドを一般ユーザが実行すると、実行したユーザの権限で動作します。
指定したコマンドがrootの所有者だったとしても、実行したユーザの権限で動作しますので、root所有のファイルなどにはアクセスできません。
そこで、一般ユーザが実行した際にrootユーザの権限が必要になるコマンドにsuidがセットされています。
代表的なものは、passwdコマンドです。passwdコマンドは、誰でも実行することができます。
rootは、全ユーザのパスワードの変更を、一般ユーザは自分のパスワードを変更することが可能です。
パスワード変更する場合は、「/etc/shadow」ファイルを変更する必要があります。
「/etc/shadow」ファイルを変更するの変更には、当然rootユーザの権限が必要になってきます。
そこで、このpasswdコマンドには、suidがセットされています。
一般ユーザが実行するとroot権限で動作し、「/etc/shadow」ファイルを変更することが可能になります。
suidビットの表示は、「r-s--x--x 」のようにユーザのパーミッションの実行部分「x」の換わりに「s」になります。
設定方法は、数値で「4000」、記号では、「u+s」となります。

 

/usr/bin/passwdコマンド
# ll /usr/bin/passwd
-r-s--x--x  1 root root 19336  9月  7  2004 /usr/bin/passwd

 

sgidビット

sgidビットをファイルに設定した場合の動作は仕組みは、suidと変わりません。
所有ユーザではなく、所有グループの権限で動作することになります。
また、ディレクトリに設定した場合は、ディレクトリの下に作成されたファイルは、すべてディレクトリのグループと同じになります。
sgidビットの表示は、「rwxr-sr-x 」のようにグループのパーミッションの実行部分「x」の換わりに「s」になります。
設定方法は、数値で「2000」、記号では、「g+s」となります。

 

/sbin/netreportコマンド
# ll /sbin/netreport
-rwxr-sr-x  1 root root 10839 10月 28  2004 /sbin/netreport

 

sickyビット

通常のパーミッションを利用して、誰でも書き込む可能(フルアクセス)なディレクトリを作成したいとします。
その場合は、パーミッションの値を「rwxrwxrwx」「777」とすることによって実現できます。
しかし、この場合は誰でも書き込む可能ですので、誰でも削除も可能になります。
誰でも書き込むはできて、作成したファイルについては、作成者だけが削除可能なディレクトリを作成する場合に「sickyビット」と使用します。
sickyビットの表示は、「drwxrwxrwt」のようにその他のパーミッションの実行部分「x」の換わりに「t」になります。
設定方法は、数値で「1000」、記号では、「o+t」となります。

 

/tmpディレクトリ
# ll -d /tmp
drwxrwxrwt  4 root root 4096  6月  4 04:02 /tmp

ページトップへTop

 
Copyright (c) 2005 Mukuan All Rights Reserved.