パーミッションの操作 のバックアップ差分(No.1)


 UNIX系OSの大切な概念に,パーミッション(アクセス権限)というものがあります.これはファイルの「所有者」,「グループ」,「その他」という三つの属性のユーザごとに,「読み込み」,「書き込み」,「実行」をそれぞれ別々に指定するというものです.このように細かな設定ができることが,セキュリティの強化に一役かっています.
 
 パーミッションを変更するためのコマンドが,chmod(change mode)です.
 パーミッションの表記法
 
 最初に,パーミッションの表記法を知っておく必要があります.パーミッションはつぎのようにアルファベット1文字で表されます.
 意味	シンボル
 読み込み	r
 書き込み	w
 実行	x
 権限なし	-
 
 ファイルリストを表示するコマンドlsに「-l」オプションを付けて
 $ ls -l
 
 とすると,つぎのようにパーミッション情報が最初の10文字に表示されます.
 
 -rw-r--r--    1 foo      foo          8245 Sep  3 23:05 chmod.html
 -rw-r--r--    1 foo      foo          6832 Sep  3 22:39 compress.html
 -rw-r--r--    1 foo      foo          6276 Aug 10 00:25 file.html
 lrwxrwxrwx    1 foo      foo            13 Sep  4 00:08 index.html -> ../index.html
 -rw-r--r--    1 foo      foo          3436 Aug 10 00:25 nkf.html
 drwxr-xr-x    2 foo      foo          4096 Sep  3 23:58 src/
 
 ここで先頭の1文字はファイルの種類,続く9文字は3文字ごとに「所有者」,「グループ」,「その他」のユーザ別パーミッションを表しています.ファイルの種類とは「ファイル」,「ディレクトリ」,「シンボリックリンク」の3種類で,その表記は
 意味	シンボル
 ファイル	-
 ディレクトリ	d
 シンボリックリンク	l
 
 となっています.たとえば,上の出力の一行目のファイルchmod.htmlは
 ファイルの種類	所有者	グループ	その他
 -
 ファイル 	rw-
 読み込み,書き込み可能 	r--
 読み込み可能 	r--
 読み込み可能
 
 というパーミッションだと分かります.同様に一番下の行のsrcというやつは
 ファイルの種類	所有者	グループ	その他
 d
 ディレクトリ 	rwx
 読み込み,書き込み,実行可能 	r-x
 読み込み,実行可能 	r-x
 読み込み,実行可能
 
 であると読み取ることができます.ディレクトリにおいて「実行可能」とは,「そのディレクトリに移動できる」を意味します.
 数値での表記
 
 パーミッションは数値で表すこともできます. CGIを設置したことがある人なら,「なになにのパーミッションは755にしてください」などの説明を読んだことがあるでしょう.この3桁の数字がパーミッションを表しています.
 
 読み込み,書き込み,実行には以下の数値が割り当てられています.
 意味	シンボル	数値
 読み込み	r	4
 書き込み	w	2
 実行	x	1
 権限なし	-	0
 
 数値で表記する場合は,各ユーザごとにこれらの数値を足し合わせます.たとえば所有者の権限が rw- なら,4+2+0 で 6 となり,そして3桁の数字の3桁目が 6 と確定されます.2桁目はグループのパーミッション, 1桁目はその他のパーミッションです.したがって,
 所有者	グループ	その他
 rw-
 読み込み,書き込み可能 	r--
 読み込み可能 	r--
 読み込み可能
 

 所有者	グループ	その他
 rw- = 4+2+0 = 6
 読み込み,書き込み可能 	r-- = 4+0+0 = 4
 読み込み可能 	r-- = 4+0+0 = 4
 読み込み可能
 
 すなわち 644 という数値表記になります.
 パーミッションの変更
 数値による操作
 
 あるファイルのパーミッションを644に変更する場合,chmod コマンドは
 $ chmod 644 ファイル名
 
 のように使います.数値の部分でお好みのパーミッションを指定します.
 $ chmod 644 ファイル名1 ファイル名2
 
 のように複数のファイルを一度に指定することもできます.
 シンボルによる操作
 
 また,数値の代わりにシンボルを使うこともできます.ユーザのシンボルは
 意味	シンボル
 所有者	u
 グループ	g
 その他	o
 
 となっています.たとえば所有者(u)に実行権限(x)を付加する(+)場合は
 $ chmod u+x ファイル名
 
 などとし,所有者(u)に実行権限(x)を付加し,かつグループ(g)とその他(o)ユーザには全ての権限(rwx)を与えない(-)ようにするには
 $ chmod u+x,go-rwx ファイル名
 
 などとします.
 再帰的に適用
 
 chmodコマンドに「-R」オプションを付けると,あるディレクトリ(サブディレクトリ含む)にあるすべてのファイル,ディレクトリ,シンボリックリンクを対象に操作することができます.たとえば
 $ chmod -R 700 ディレクトリ名
 
 などのように使います.
 Windowsとの連携例
 
 Windowsにはパーミッションという概念がありません.ですから,Windowsのファイルシステムはパーミッションの情報を保持できません.いったんFATやNTFSなどのファイルシステムに Linuxでつくったファイルやディレクトリを保存してしまうと,再びLinux側に移してもパーミッション情報が失われ,すべて775になってしまいます.
 
 すべてのファイルに実行権限が付くことになり,これでは困ります.パーミッションの再設定を行うわけですが,一つずつchmodコマンドを打っていたのでは大変です.カレントディレクトリ以下のすべてのファイルのパーミッションを644に変更するには,つぎのようにfindと組み合わせてchmodを使います.
 $ find ./ -type f | xargs chmod 644
 
 これは,まず「find ./ -type f」でカレントディレクトリ以下のファイル名をすべて探し,その結果をパイプで「xargs」に渡して検索結果の一覧を作成し,「chmod 644」に渡して変更を適用させています.「chmod -R」を使わずに「-type f」でファイルに限定しているのは,「chmod -R」ではディレクトリまで644にしてしまい,そのディレクトリに移動できなくなるからです.
 
 また,ファイルが少ない場合や拡張子が限定されている場合は
 $ chmod 644 *.png *.html
 
 などのようにワイルドカードを利用するといいでしょう.
 
Valid XHTML 1.1! home >
トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Modified by 物理のかぎプロジェクト PukiWiki 1.4.5_1 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-jiPowered by PHP 5.3.29HTML convert time to 0.003 sec.