[Nature's Linux Tech Portal]  
 
Google
WWW を検索 tech.n-linux.com を検索 Wiki検索

Tips ユーザーとグループ編 5 †


テクニカルライター chabi
2005/10/14
テクニカルノートコード:tcn00035


↑

はじめに †

 今回は Linux を扱う上でどうしても避けては通れない、パーミッションについて解説していきたいと思います。ユーザーとグループから若干離れますが大変関係があるものですので、解説します。



↑

概念の解説 †

↑

パーミッションとは †

、ファイルやディレクトリに対してユーザーや所属しているグループによってど のようなアクセスができるかを決めているものをパーミッションと呼んでいます。

 これからパーミッションに関わる、3種類の要素を説明します。

  • ユーザーとグループに関係するもの

    owner(所有者)、group(グループ)、other(その他のユーザ)、all(全てのユーザ)

  • アクセス許可の種類

    read (読み取り)、write (書き込み)、execute(実行)

  • 上記に含まれない特別なもの(setIDビット)

    setuid bit(owner権限での実行)、setgid bit(グループ権限での実行)、 sticky bit(ファイルやディレクトリの owner と root 以外ユーザのファイルの変更や削除の禁止)



↑

ファイルやディレクトリでの見方 †

 具体的にはどう表されているかかというと、

[VFS-root@nature usermod]# ls -l /bin/su
-rwsr-xr-x  1 root root 18300 Apr 26 16:48 /bin/su

ここに出てくるような、"-rwsr-xr-x" といった情報が、/bin/su というファイルのパーミッションになります。 以下の表のとおりの意味があります。

記号意味
先頭のハイフン"-"ファイルの種類
ハイフンの次の"rws"所有者(owner)に許可された権利
一つめの"r-x"グループ(group)に許可された権利
二つめの"r-x"所有者とグループ以外(others)に許可された権利

 さらに細かく見ていきましょう。

 ファイルの種類を表にすると以下のようになります。

記号意味
dディレクトリ
-ファイル
lシンボリックリンク

 それぞれのユーザに許可された権利は、rwxの順番で表示され、許可されてい ないものは-と表示されます。

 上記の例の意味はこうなります。

パーミッションの意味ls -l での表示意味
ファイルの種類-普通のファイル
ownerに許可された権利rwsread, write, s(後述)
groupに許可された権利r-xread,execute
othersに許可された権利r-xread,execute

 s は、execute の特別形であるのですが、ここでは x と同じとすると、 /bin/su というファイルは全てのユーザで読み、実行が許可されていることにな ります。



↑

グループに関するもの †

用語chmodコマンドでの表記説明
owner(所有者)uそのファイルや、ディレクトリを作成したユーザのことをいいます。
group(グループ)gそのファイルや、ディレクトリが所属しているグループのことをいいます。
other (その他のユーザ)oowner(所有者)でもなく、group(グループ)にも属していないその他のユーザをいいます。
all (全てのユーザ)a全てのユーザのことをいいます。



↑

アクセス許可の種類 †

パーミッションでの表示数値mode用語説明
r4+rreadファイル、ディレクトリに対しての読み取りを行う許可
w2+wwriteファイル、ディレクトリに対しての書き込みを行う許可
x1+xexecuteファイルを実行する許可

この表での mode はファイルに属性値を付加する場合を想定しています。 取り消す場合は、+ を - に変更してください。

↑

SetID bitとは †

上記のアクセス許可では不具合が出る場合につけることのできる特別なビット。

パーミッションでの表示数値mode用語説明現れる位置
s4u+sset user ID bitファイルのownerのように実行できるビットowner の x
S2g+sset group ID bitファイルが所属するgroupのように実行できるビットgroup の x
t1+tsticky bitディレクトリにつける属性で、ファイルのowner以外のユーザに変更や削除を禁止するビットothers の x

この表での mode はファイルやディレクトリに属性値を付加する場合を想定しています。 取り消す場合は、+ を - に変更してください。


 このようなビットは、上記のアクセス権では対処できない場合に使われます。 例えば、/bin/su に関しては、どのユーザであっても、owner である、root として実行することができるようになっています。これによって、各ユーザ間での権限の移譲ができるわけです。

 注意:これらのビットを設定することは、他のユーザへ owner 権限や、group 権限での実行を許可しますので、セキュリティを下げることにもなりますので、取り扱いにはご注意ください。

↑

コマンドでパーミッションの操作方法。 †

今回は以下のようなコマンドを利用して、パーミッションを触ってみます。

コマンド行う処理
chmodファイルやディレクトリの変更を行う。詳細は下にて
ls -lファイルやディレクトリの現在のパーミッションを表示する
↑

典型的な chmod でのパーミッション操作。 †

  • 使用方法
    chmod [OPTION]... MODE[,MODE]... FILE...
    chmod [OPTION]... OCTAL-MODE FILE...

 ファイルのパーミッションを変更するファイルを指定し、MODEか、数値で設定します。 属性値を付加する場合は + を、撤去する場合は - をつけます。

[VFS-root@nature usermod]# mkdir sticky
[VFS-root@nature usermod]# chmod +t sticky
[VFS-root@nature usermod]# ls -dl sticky
drwxr-xr-t  2 root root 4096 Jun 12 21:16 sticky
[VFS-root@nature usermod]# chmod -t sticky
[VFS-root@nature usermod]# ls -dl sticky
drwxr-xr-x  2 root root 4096 Jun 12 21:16 sticky

 数値で行う場合も同様です。上記の表からの各グループの合計値で指定します。

[VFS-root@nature usermod]# ls -l test
-rw-r--r--  1 root root 0 Jun 12 21:12 test

 この場合、owner は、r (4) + w (2) で 6、  group は、r (4)、others は、r(4) なので、 644 という数値で表すことができます。  ただし、setID bit が付加される場合は、各 bit の数値が先頭につき、4桁になります。

all(全てのユーザ)に r,w,x を指定するときの mode は、 a+rwx というように指定します。

[VFS-root@nature usermod]# chmod a+rwx test
[VFS-root@nature usermod]# ls -l test
-rwxrwxrwx  2 root  root 0 Jun 13 18:22 test

 では、先ほどの例のように、Sticky bit(1) を付加し、 owner はそのまま r,w,x(7)、group の人には、r,w (6)と、 others には、r (4) だけを付加してみましょう。

[VFS-root@nature usermod]# ls -ld sticky
drwxr-xr-x  2 root root 4096 Jun 12 21:16 sticky
[VFS-root@nature usermod]# chmod 1764 sticky
[VFS-root@nature usermod]# ls -ld sticky
drwxrw-r-T  2 root root 4096 Jun 12 21:16 sticky

注意:

  • Sticky bit の取り扱いについて。

    元々はディレクトリにつけるものではなく、プログラムなどのファイルに対して指定するビットでした。 しかし、時代の変遷とともにその意味合いが変化しました。 その後、Open Group の Single Unix Specification version 2 にて定義されてい ますが、POSIX 1003.2 では定義されていません。 もしファイルに対しての実装がされていたら、極端に異なる実装はされていません。 しかし、ディレクトリに対しての実装となると、OSによることになり、Debianや Nature's Linux などの /tmp ディレクトリのパーミッションなどで使用されていますが、 Linux は、System V系に倣って実装しているからということが理由だそうです。

  • jmanでの参考
  • JFでの説明
  • Open Group
  • シンボリックリンクファイルについて。

    chmod は、シンボリックリンクファイルそのもののパーミッションは変更しません。

↑

おわりに †

 今回はファイルやディレクトリに対する Nature's Linux でのパーミッションの取り扱いを記しました。  一部のビットは他の UNIX, Linux, では実装が異なる場合がありますので、確認されることをお勧めいたします。

↑

参考書籍 †

改訂版 Debian GNU/Linux 徹底入門 -Potato対応- 翔泳社 武藤健志著


↑

テクニカルライター紹介 †

テクニカルライター chabi

初めてインストールした Linux マシンが Alpha Processor 搭載で、 当時はliloが動かず途方にくれたさすらいの仕事人。 その経験をバネにして、FreeBSD や Linux を触り続ける毎日を過ごす。


↑

この文章について †

本文書に関する著作権の保有について

Nature's Linux関連の記事は、著作権者であるジグソー株式会社がすべての権利を保有しています。

Copyright (C) 2003-2009 JIG-SAW, Inc. All rights reserved.

本書に記載されている会社名、製品名は、各社の登録商標または商標です。

記載の内容は予告無く変更される可能性があります。

また、この文書は、 クリエイティブ・コモンズ・ライセンス の下でライセンスされています。


この記事はどうでしたか?
全く役に立たなかった 役に立たなかった 普通 役に立った とても役にたった 
 
 
 
 
 |  会社概要  |  企業ポリシー  |  お問い合わせ  |
Copyright (C) 2003-2009 JIG-SAW, Inc. All rights reserved.