[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

8. ファイル属性の変更

ファイルは,その内容,名前,そしてファイル形式(see section 特殊ファイルの形式)のみではありません.ファイルには,所有者(ユーザID),グループ(グルー プID),許可(所有者がファイルに行えること,グループの人ができること,そし て,その他誰でもできること),様々なタイムスタンプ,そしてその他の情報が あります.まとめて,これらをファイルの属性と呼びます.

これらのコマンドはファイルの属性を変更します.


8.1 chown: ファイルの所有者とグループの変更

chownは,与えられたそれぞれのfileのユーザと/やグループの所 有権を,new-ownerや,既存の参照ファイルのユーザとグループに変更し ます,構文は以下のとおりです.

 
chown [option]… {new-owner | --reference=ref_file} file

new-ownerが使用された場合,新しい所有者と/やグループを以下のように 指定します(空白は含みません).

 
[owner] [ [:] [group] ]

具体例です.

owner

owner (ユーザ名または数値的なユーザID)のみ与えられた場合,そのユー ザが与えられたそれぞれのファイルの所有者になり,ファイルのグループは変更 されません.

owner`:'group

ownerにコロンとgroup (グループ名または数値的なグループID)が, それら間にスペースを置かずに続く場合,ファイルのグループ所有権を (groupに)同様に変更します.

owner`:'

コロンはあるが,グループ名がownerに続かない場合,ユーザがファイル の所有者になり,ファイルのグループはownerのログイングループに変更 されます.

`:'group

コロンとそれに続くgroupが与えられているが所有者が省略された場合, ファイルのグループのみ変更されます.この場合,chownchgrp と同じ機能を果たします.

`:'セパレータの場所に`.'を使用することが可能です.これは古いス クリプトへの互換性のためのGNUの拡張です.GNU chownは, ownerが`.'文字を含む場合は失敗する可能性があるので,新しいス クリプトでは`.'の使用を避けるべきです.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -c'
` --changes'

所有権が実際に変更されるそれぞれのfileに対する動作を,冗長に記述し ます.

` -f'
` --silent'
` --quiet'

所有権を変更できないファイルについてのエラーメッセージを出力しません.

` --from=old-owner'

old-ownerで指定されている現在の属性がある場合,fileの所有権 を変更します.old-ownerは,上記のnew-ownerの記述と同じ形式で す.このオプションは,潜在的な悪習の窓をかなり狭めるという点で,セキュリ ティの立場から主に役に立ちます.例えば,以下のように,このオプションを使 用しないで,ユーザのファイルに対してUIDの変更を反映させるために, rootが実行したとします.

 
find / -owner OLDUSER -print0 | xargs -0 chown NEWUSER

しかし,findが既存のファイルの所有者をテストしたときと, chownが実際に事項したときの間が非常に長い可能性があるので,それは 危険です.ギャップを小さくするひとつの方法は,それぞれのファイルに対し見 つかったときにchownを呼び出すことです.

 
find / -owner OLDUSER -exec chown NEWUSER {} \;

しかし,影響されるファイルが多い場合は,それは非常に遅くなります.このオ プションを用いると,(ギャップを狭めたままで)完全ではありませんが,それは 安全になります.

 
chown -R --from=OLDUSER NEWUSER /
` --dereference'

シンボリックリンク自身に動作せず,それが示すものに動作します.

` -h'
` --no-dereference'

シンボリックリンクが示すものではなく,それ自身に動作します.これはデフォ ルトです.このモードはlchownシステムコールに依存します. lchownシステムコールが提供されていないシステムでは,コマンドライ ンで指定されるファイルがシンボリックリンクの時,chownは失敗します. デフォルトで,再帰的な処理の間に発見されるシンボリックリンクに対する診断 結果は発行されませんが,それについては`--verbose'は参照してください.

` --reference=ref_file'

それぞれのfileのユーザとグループを,ref_fileと同じになるよう に変更します.ref_fileがシンボリックリンクの場合,シンボリックリン クのユーザとグループではなく,それが参照するファイルのものを使用します.

` -v'
` --verbose'

処理された全てのファイルに対し,診断結果を出力します.lchownシス テムコールがないシステムで,再帰的な処理の間にシンボリックリンクが見つか り,`--no-dereference'の影響がある場合,シンボリックリンクもその参 照先も変更されないことを告げる診断結果を発行します.

` -R'
` --recursive'

ディレクトリとその内容の所有権を再帰的に変更します.


8.2 chgrp: グループの所有権の変更

chgrpは,それぞれの与えられたfileのグループ所有権を group(グループ名またはグループIDのどちらかで与えられるはずです), または,既存の参照ファイルのグループに変更します.構文は以下のとおりです.

 
chgrp [option]… {group | --reference=ref_file} file

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -c'
` --changes'

グループが実際に変更されているそれぞれのfileに対し,動作を冗長に記 述します.

` -f'
` --silent'
` --quiet'

グループを変更できなかったファイルに関するエラーメッセージを出力しません.

` --dereference'

シンボリックリンク自身に作用するのではなく,それが指し示すものに作用しま す.

` -h'
` --no-dereference'

シンボリックリンクを,それが指し示すものの代わりにそれ自身に動作します. これはデフォルトです.このモードはlchownシステムコールに依存しま す.コマンドラインで指定されているファイルがシンボリックリンクの時, chgrpは失敗します.デフォルトで,再帰的な変換の間に見つかったシン ボリックリンクに対し診断結果は発行されませんが,それについては `--verbose'を参照してください.

` --reference=ref_file'

それぞれのfileのグループを,ref_fileと同じになるように変更し ます.ref_fileがシンボリックリンクの場合,シンボリックリンクのグルー プではなく,それが参照するファイルのものを使用します.

` -v'
` --verbose'

処理した全てのファイルに対し,診断結果を出力します.lchownシステ ムコールがないシステムで,再帰的な変換の間にシンボリックリンクが見つかり, `--no-dereference'が有効でない場合,シンボリックリンクも参照するも のも変更されないことを告げる診断結果を発行します.

` -R'
` --recursive'

ディレクトリとその内容のグループ所有権を再帰的に変更します.


8.3 chmod: アクセス許可の変更

chmodは指名されたファイルのアクセス許可を変更します.構文は以下の とおりです.

 
chmod [option]… {mode | --reference=ref_file} file

chmodシステムコールはシンボリックリンクの許可を変更できないため, chmodはそれらのの許可を決して変更しません.シンボリックリンクの許 可は決して使用されないので,これは問題ではありません.しかし,コマンドラ インでリストアップされたそれぞれのシンボリックリンクに対し,chmod は指し示されたファイルの許可を変更します.そのかわり,再帰的にディレクト リを横断している間,chmodは,遭遇したシンボリックリンクを無視しま す.

modeが使用された場合,それは新しい許可を指定します.詳細は ファイルのパーミッション,のセクションを参照してください.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -c'
` --changes'

許可が実際に変更されているそれぞれのfileに対し,動作を冗長に記述し ます.

` -f'
` --silent'
` --quiet'

許可を変更できなかったファイルに関するエラーメッセージを出力しません.

` -v'
` --verbose'

与えられたすべてのfileに対し,動作,非動作の冗長な記述を行います.

` --reference=ref_file'

それぞれのfileのモードを,ref_fileと同じになるように変更しま す.See section ファイルのパーミッション. ref_fileがシンボリックリンクの場合, シンボリックリンクのモードではなく,それが参照するファイルのものを使用し ます.

` -R'
` --recursive'

ディレクトリとその内容の許可を再帰的に変更します.


8.4 touch: ファイルのタイプスタンプの変更

touchは,指定されたファイルのアクセスと/や編集された時間を変更し ます.構文は以下のとおりです.

 
touch [option]… file

最初のfileが`-t'オプションの有効な引数で,タイムスタンプが `-d',`-r'や,`-t'オプションで全く与えられておらず, `--'引数が与えられていない場合,その引数はその他のファイルに対する ファイル名としてではなく,時間として解釈されます.警告:この使用方法は時 代遅れで,POSIXの将来のバージョンではそれを取り消したサポートが要求 されるでしょう.代わりに`-t'を使用してください.

存在しないfileはすべて空として作成されます.

アクセスと編集の時間の両方を現在の時間に変更するとき,touchは実行 しているユーザがファイルの所有者で無いが,書き込み許可があるもののタイム スタンプを変更することができます.それ以外では,ユーザはそのファイルの所 有者である必要があります.

touchは,ファイルの2つの時間 - 最後のアクセスと編集 - を変更す るオプションを提供しますが,実際には3番目のinodeの変更時間も同じです.こ れはファイルのctimeとしてよく参照されます.inodeの変更時間は,ファ イルのメタ情報を最後に変更された時間を表現します.一般的な例の一つは,ファ イルの許可を変更したときです.許可の変更はファイルにアクセスしないので, atimeを変更しませんし,ファイルも編集しないので,mtimeも変更しません.依 然としてファイル自身の何かは変っていますが,これはどこかに記録する必要が あります.これはctimeフィールドの仕事です.例えば,バックアッププログラ ムが新しい許可値まで含めてファイルの新しいコピーを作成することを可能にす るために,これは必要です.他に影響しないようにファイルのctimeを編集する もう一つの処理は,名前の変更です.通常の処理では,ユーザがctimeフィール ドをユーザが指定した値に変更することは,いかなる場合でも不可能です.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 して下さい.

` -a'
` --time=atime'
` --time=access'
` --time=use'

アクセス時間のみ変更します.

` -c'
` --no-create'

存在していないファイルを作成しません.

` -d'
` --date=time'

現在の時間の代わりにtimeを指定します.それは,月名,タイムゾーン, `am'と`pm'等を含むことができます.See section 日付入力の書式.

` -f'

無視されます.BSD版のtouchの互換性のためです.

` -m'
` --time=mtime'
` --time=modify'

編集時間のみ変更します.

` -r file'
` --reference=file'

現在の時間の代わりに参照fileの時間を使用します.

` -t [[CC]YY]MMDDhhmm[.ss]'

現在の時間の代わりに引数(オプションの4桁または2桁の年,月,日,時間,分, オプションの秒)を使用します.年が2桁のみで指定された場合,CCは,0 … 68に対し20,69 … 99に対し19になります.年の数字が指定され ない場合,今年の日付として解釈されます.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Akihiro Sagawa on June, 15 2005 using texi2html 1.70.