
第4回 ユーザーとパーミッションにみるLinuxの設計思想
関野史朗
2001/10/2
ファイルのパーミッション
|
ユーザーやその権限と切っても切れない関係にあるのが、ファイルのパーミッションです。Windows 9x+FATにはまったく存在しない概念ですが……。
■多彩かつ活用されていないWindows 2000
![]() |
| Windows 2000のアクセス権設定画面(NTFS使用時のみ)。サブフォルダ以下に対して設定を継承させることもできる |
Windows NT/2000は、NTFSを使えばかなり細かくファイルに対するセキュリティを設定できます。グループごとに、
- フルコントロール
- 変更
- 読み取りと実行
- フォルダの内容の一覧表示
- 読み取り
- 書き込み
の6種類のアクセス許可を個々に設定できます。できますが、これを活用しているというユーザーにはお目にかかったことがありません。企業の基幹業務で使うため、ガチガチに開発されたシステムならいざ知らず、パーソナル用途では大げさにすぎるのも確かです。
■シンプルかつ必要十分なLinux
Linuxにおけるパーミッションはシンプルで、読み取り(r)、書き込み(w)、実行(x)の3種類です。これを、
- ファイルの所有者
- ファイルの所有者が所属するグループ
- そのほか
の3グループに対して別々に設定できます。
$ ls -l |
を実行すると出てくる文字の並び(-rwxr--r--など)の左から2番目以降(rwxr--r--など)がパーミッションの状態を表しています。左から順に所有者、グループ、そのほかで、それぞれ上記3種類の属性を持っているので9文字となります。rwxr--r--を例にすると、所有者は読み・書き・実行ができて(rwx)、グループとそのほかは読み出すだけ(r--)、ということになります。
パーミッションを変更するには、chmodコマンドを使います。引数としては、変更するパーミッションの指定とファイル名を必要とします。また、パーミッションの指定には2通りあります。
まずシンボリックに行うには、
- 対象者をu(所有者)、g(グループ)、o(そのほか)、a(すべて)で指定
- +で追加、-で削除、=で「そのアクセス権だけ」を指定
- rで読み取り、wで書き込み、xで実行を指定
とするのが基本です。具体例を挙げると、
$ chmod o+r .bashrc |
でそのほかに対して読み出しを許可します。
$ chmod go-rwx .bashrc |
とすれば、所有者以外に対して読み・書き・実行を禁止します。ただし、ユーザー本人が読み・書き・実行できるかどうかの設定を行っているわけではないので注意が必要です。
もう1つ、数値で指定する方法もあります。rwxをフラグとすれば、3bitあれば表現できます。これを8進法で表記すればいいわけです。例えば、
$ chmod 700 .bashrc |
とすると、ls -lで表示したときrwx------になります。所有者には読み・書き・実行を許可し、それ以外には禁止しています。グループに対して読み出しを許可するなら、
$ chmod 740 .bashrc |
とします(rwxr-----になる)。
言い換えると、r=4、w=2、x=1として足し算した結果(0〜7)が指定すべき数字です。もちろん、所有者、グループ、そのほかをすべて一度に指定するので、3けたの数字になります。
ここで「ディレクトリに対してxのパーミッションは何の意味を持つのか」と疑問に思った方もいると思います。もちろん、ディレクトリを実行できるわけではありません。これは、そのディレクトリ以下に対するアクセス権を設定しています。これを禁止すると、そのディレクトリ以下がまとめて読み出せなくなります。
なお、グループの設定は/etc/groupの内容を書き換えることで行います。現在自分が所属しているグループを表示するには、groupsコマンドを使います。1人のユーザーが複数のグループに所属できるので、目的に応じてグループを分けておくといいでしょう。例えば、データのバックアップを取るためにテープデバイスにアクセスできるグループとを作っておくと、システムをバックアップするつもりでリストアしてしまうといったミスが防げます。
■気を付けたいset-user-id
もう1つ、便利な指定として「sパーミッション」があります。普通はあるコマンドを実行すると、そのプロセスは実行したユーザーのものになります。たいていはこれで問題ないのですが、たまにroot権限の必要なデバイスにアクセスするコマンドがあります(サウンド関係でよく見かけます)。こんなときにsパーミッションを指定しておくと、コマンドを実行したユーザーではなく、ファイルの所有者のプロセスとして起動します。コマンドをrootがインストールしてsパーミッションを設定しておけば、/dev/mixerなども自在にアクセスできるというわけです。
ただし、これはもろ刃の剣です。特に、だれが実行してもroot権限で動作するコマンドにセキュリティホールがあると深刻です。これを利用することで、第三者が簡単にroot権限を入手できるからです。セキュリティのことを考えると、root権限で動作するコマンドはなるべく少なくしておくべきです。例に挙げたサウンド関係なら、/dev/mixerはaudioグループに対して読み書きを許可しています。従って、サウンドを使うユーザーはaudioグループに追加しておけばいいわけです。こうすれば、サウンド関係のコマンドにsパーミッションを設定する必要がなくなります。
|
2/2
|
|
| Index | |
| Windowsユーザーに教えるLinuxの常識 | |
| OSの出自によって異なる「ユーザー」という概念 | |
| ユーザーの持つ「権限」 | |
| ファイルのパーミッション | |
| 連載 Windowsユーザーに教える Linuxの常識 |
| Linux Squareフォーラム Linux/システム学習関連記事 |
| 連載:Windowsユーザーに教えるLinuxの常識(全12回) Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授! |
|
| 連載:LFSで作って学ぶLinuxの仕組み(全4回) 管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する |
|
| 連載:Linux管理者への道(全8回) 「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう |
|
| Linux Squareフォーラム全記事インデックス |
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

