ファイル属性は、ファイル システム内のファイルやディレクトリの動作を記述し、変更するメタデータの一種です。一般的なファイル属性は、たとえば、ファイルが表示可能か、変更可能か、圧縮されているか、暗号化されているかを示すか指定します。ほとんどのファイル属性を使用できるかどうかは、属性データを他の制御構造とともに保存する必要がある基盤となるファイル システム ( FAT、NTFS、ext4など) のサポートに依存します。各属性には、設定済みとクリア済みの 2 つの状態があります。属性は、日付と時刻、ファイル名拡張子、ファイル システムのアクセス許可などの他のメタデータとは別のものとして扱われます。ファイルに加えて、フォルダー、ボリューム、その他のファイル システム オブジェクトにも属性を設定できます。
DOS と Windows
伝統的に、DOSとMicrosoft Windowsでは、ファイルとフォルダは4つの属性を受け入れていました: [1] [2] [3]
- アーカイブ(A): 設定されている場合、最後のバックアップ操作以降にホスト ファイルが変更されたことを示します。Windows のファイル システムは、変更されたすべてのファイルにこの属性を設定します。バックアップ ソフトウェアは、完全バックアップまたは増分バックアップ (差分バックアップではない) が成功すると、この属性をクリアする役割を担います。
- 隠しファイル(H):設定されている場合、ホストファイルが隠しファイルであることを示します。MS-DOSコマンドやファイルエクスプローラー
dirなどのWindowsアプリは、要求されない限り、デフォルトでは隠しファイルを表示しません。[4] - システム(S): 設定されている場合、ホスティング ファイルは、コンピューターが正常に動作するために必要な重要なシステム ファイルであることを示します。MS-DOS および Microsoft Windows は、重要なシステム ファイルをマークするためにこれを使用します。MS-DOS コマンド (など)
dirやファイル エクスプローラーなどの Windows アプリは、隠しファイルが表示されていても、要求されない限り、既定ではシステム ファイルを表示しません。 - 読み取り専用(R): 設定されている場合、ファイルは変更されるべきではないことを示します。ファイルを開くと、ファイル システムAPI は通常、アプリケーションが明示的に要求しない限り、要求元のアプリケーションに書き込み権限を付与しません。フォルダーの読み取り専用属性は通常無視され、別の目的で使用されます。[5] [6]
Windowsの新しいバージョンがリリースされるにつれて、MicrosoftはNTFSファイルシステムで利用可能な属性のインベントリに追加してきました 。[7]これには以下が含まれますが、これらに限定されません。[8]
- 圧縮(C): 設定されている場合、Windows は保存時にホスティング ファイルを圧縮します。詳細については、 「NTFS § ファイル圧縮」を参照してください。
- 暗号化(E): 設定されている場合、Windows は不正アクセスを防ぐために保存時にホスティング ファイルを暗号化します。詳細については、「NTFS § 暗号化」を参照してください。
- コンテンツ インデックスなし(I): これを設定すると、インデックス サービスまたはWindows Search は、ホスティング ファイルをインデックス作成操作に含めません。
Windowsエクスプローラー[7]の「属性」列に表示されるその他の属性には次のものがあります。
- ディレクトリ(D): エントリはサブディレクトリであり、独自のファイルとディレクトリのエントリが含まれています。
- 再解析ポイント(L): ファイルまたはディレクトリには関連付けられた再解析ポイントがあるか、シンボリック リンクです。
- オフライン(O): ファイル データは物理的にオフライン ストレージ (リモート ストレージ) に移動されます。
- スパース(P): ファイルはスパース ファイルです。つまり、その内容は部分的に空で、連続していません。
- 一時的(T): ファイルは一時的な保存に使用されます。
DOS、OS/2、Windowsでは、cmd.exeとcommand.comattribのコマンドを使用して、4つの従来のファイル属性を変更および表示できます。[3] [9] Windowsのファイルエクスプローラーでは、前述の7つの属性を表示できますが、システム属性を設定またはクリアすることはできません。[5] Windows 7以降のコンポーネントとなったWindows PowerShellには、属性の読み取りと書き込みができる2つのコマンドがあります:と。[10] Windows NTでファイルの属性を変更するには、ユーザーは属性の書き込みと拡張属性の書き込みと呼ばれる適切なファイルシステムのアクセス許可を持っている必要があります。[11] Get-ItemPropertySet-ItemProperty
Unix と POSIX
Unixおよび Unix ライクなシステム ( POSIX準拠システムを含む)では、各ファイルには、ファイルの所有者、グループ、および他のすべてのユーザーごとに読み取り、書き込み、実行権限を制御する 9 ビットのフラグを含む「モード」があります (詳細については、ファイルシステムの権限 §従来の Unix 権限を参照)。さらに、 setuidおよびsetgidビット フラグと「スティッキー」ビット フラグがあります。モードでは、ファイルの種類(通常のファイル、ディレクトリ、またはその他の特別な種類) も指定します。
4.4BSD および派生
4.4BSDと4.4BSD-Liteでは、ファイルとディレクトリ(フォルダ)は、ファイルの所有者またはスーパーユーザーが設定できる4つの属性(「ユーザー」属性)と、スーパーユーザーのみが設定できる2つの属性(「システム」属性)を受け入れました。[12]
- (ユーザー) No-dump : 設定されている場合、バックアップ操作中にファイルまたはディレクトリを保存しないことを示します。
- (ユーザーとシステム) 不変: 設定されている場合、ファイルまたはディレクトリを変更してはならないことを示します。書き込み用にファイルを開いたり、ディレクトリ内にファイルを作成したり、ディレクトリからファイルを削除したり、ディレクトリ内のファイルの名前を変更したり、ファイルまたはディレクトリの名前を変更したり、ファイルまたはディレクトリを削除したりしようとすると、権限エラーが発生して失敗します。
- (ユーザーおよびシステム) 追加のみ: 設定されている場合、ファイルは追加のみ可能であることを示します。
- (ユーザー) 不透明: ディレクトリに設定すると、ユニオン スタックを通して見たときにディレクトリが不透明であることを示します。
FreeBSDではいくつかの追加属性が追加され[13]、DragonFly BSDでもサポートされています: [14]
- (ユーザーおよびシステム) No-unlink : 設定されている場合、ファイルまたはディレクトリの名前を変更したり削除したりしてはならないことを示します。ファイルまたはディレクトリの名前を変更したり削除したりしようとすると、権限エラーが発生して失敗します。
FreeBSDは以下のものもサポートしています: [13]
- (システム) No-archive : 設定されている場合、ファイルまたはディレクトリをアーカイブしないことを示します。
- (システム) スナップショット: 設定されている場合、ファイルまたはディレクトリがスナップショット ファイルであることを示します。この属性はシステムによって管理され、スーパーユーザーであっても設定できません。
DragonFly BSDは以下をサポートしています: [14]
- (ユーザーおよびシステム) 履歴なし: 設定されている場合、ファイルまたはディレクトリの履歴を保持しないことを示します。
- (ユーザー) Swapcache : 設定されている場合、ファイルまたはディレクトリとそのディレクトリの下にあるすべてのもののクリーンなファイルシステム データが、ソリッド ステート ドライブのスワップ領域にキャッシュされることを示します。
- (システム) Swapcache : 設定されている場合、ファイルまたはディレクトリとそのディレクトリの下にあるすべてのもののクリーンなファイルシステム データが、ソリッド ステート ドライブのスワップ領域にキャッシュされないことを示します。
- (システム) アーカイブ済み: 設定されている場合、ファイルまたはディレクトリがアーカイブされる可能性があることを示します。
NetBSDは別の属性[15]を追加しましたが、 OpenBSDでもサポートされています: [16]
- (システム) アーカイブ済み: 設定されている場合、ファイルまたはディレクトリがアーカイブされていることを示します。
macOS では3 つの属性が追加されました:
- (ユーザー) 隠し: 設定されている場合、ファイルまたはディレクトリはデフォルトではGUIに表示されないことを示します。ただし、 lsはそれを表示します。[17]
- (システム) 制限: 設定されている場合、ファイルまたはディレクトリはシステム整合性保護によって保護されることを示します。
- (ユーザーとシステム) 圧縮: HFS+圧縮を使用して圧縮されたファイルの読み取り専用属性
これらのシステムでは、chflagsおよびlsコマンドを使用してファイル属性を変更および表示できます。4.4BSD 由来のオペレーティング システムでファイルの「ユーザー」属性を変更するには、ユーザーはファイルの所有者またはスーパーユーザーである必要があります。また、「システム」属性を変更するには、ユーザーはスーパーユーザーである必要があります。
リナックス
Linuxオペレーティングシステムは、コマンドによって一覧表示され、可能な場合はコマンドによって変更できる幅広いファイル属性をサポートできます。プログラムはioctl操作を使用して属性を調べたり変更したりできます。[18]lsattrchattr
多くの Linux ファイル システムは限られた属性セットのみをサポートしており、chattr変更可能なすべての属性をサポートしているファイル システムはありません。少なくともいくつかの属性をサポートするファイル システムには、ext4、XFS、btrfsなどがあります。
OpenSolaris とその派生製品
「システム属性」(一般的な拡張ファイル属性とは異なり、オペレーティングシステムが意味を定義する)のサポートは、CIFSサーバーをサポートするために2007年にOpenSolarisに追加されました。[19]そこから、 Oracle Solaris 11リリースとオープンソースのillumosプロジェクト の両方に引き継がれました。
chmodこの実装では、コマンド[20] [21]を介して広範囲の属性を設定し、コマンドによってリストすることができますls。[22] [23]getattratプログラムは関数と関数
を使用して属性を調べたり変更したりできますsetattrat。[24] [25]
現在、ZFSファイルシステムは定義されているすべての属性をサポートしており、Oracle Solaris 11.2以降ではtmpfsファイルシステムは属性のサブセットをサポートしています。[26]
参照
参考文献
- ^ 「ファイル属性の定義」。PC Magazine。Ziff Davis。2020年10月14日閲覧。
- ^ 「ファイル属性」。Computer Hope 。 2012年12月2日閲覧。
- ^ ab 「Windows のファイル属性とは何ですか。また、それを変更するにはどうすればよいですか。」ナレッジ ベース。インディアナ大学。2011 年 10 月 11 日。2012 年12 月 2 日に取得。
- ^ 「隠しファイルとは何ですか?」。Windows 7 ヘルプ。Microsoft。2012年12 月 2 日閲覧。
- ^ 「フォルダーの読み取り専用プロパティがなぜ奇妙なのか?」
- ^ ab 「ファイル 属性定数」。MSDN。Microsoft。2018年7月 17 日閲覧。
- ^ 「HOW TO: Windows 2000 でファイル属性管理スクリプト (Fileattributes.pl) を使用する方法」。Microsoft サポート。Microsoft。2012年12 月 2 日閲覧。
- ^ 「Definition of: DOS Attrib」。PC Magazine。Ziff Davis 。 2012年3月2日時点のオリジナルよりアーカイブ。 2012年12月2日閲覧。
- ^ 「PowerShell コマンドレットを使用してファイル属性を操作する」。Hey , Scripting Guy! ブログ。Microsoft。2011 年 1 月 26 日。2012年12 月 3 日に取得。
- ^ 「Windows XP でファイルとフォルダーの特別なアクセス許可を設定、表示、変更、または削除する方法」。Microsoftサポート。Microsoft。2007 年 5 月 7 日。2012年12 月 2 日に閲覧。
- ^ – BSDシステムコールマニュアル
- ^ ab – FreeBSDシステムコールマニュアル
- ^ ab – DragonFly BSDシステムコールとエラー番号マニュアル
- ^ – NetBSDシステムコールマニュアル
- ^ – OpenBSDシステムコールマニュアル
- ^ – DarwinとmacOSシステムコールマニュアル
- ^ – Linuxプログラマーズマニュアル– システムコール
- ^ Shellenbaum, Mark. 「Extensible Attribute Interfaces [PSARC/2007/315]」。OpenSolaris ARC 資料アーカイブ。illumos.org。2023年3 月 10 日に閲覧。
- ^ "chmod(1)". Oracle Solaris 11.4リファレンスライブラリ:マニュアルページセクション1:ユーザーコマンド。Oracle 。 2023年3月10日閲覧。
- ^ "chmod(1)". illumos manページ. illumos.org . 2023年3月10日閲覧。
- ^ "ls(1)". Oracle Solaris 11.4リファレンスライブラリ:マニュアルページセクション1:ユーザーコマンド。Oracle 。 2023年3月10日閲覧。
- ^ "ls(1)". illumos manページ. illumos.org . 2023年3月10日閲覧。
- ^ "getattrat(3c)/setattrat(3c)". Oracle Solaris 11.4リファレンスライブラリ:マニュアルページのセクション3:基本ライブラリ関数。Oracle 。 2023年3月10日閲覧。
- ^ "getattrat(3c)/setattrat(3c)". illumos manページ. illumos.org . 2023年3月10日閲覧。
- ^ "sysattr(7)". Oracle Solaris 11.4リファレンスライブラリ:マニュアルページセクション7。Oracle。2023年3月10日閲覧。
外部リンク
- 定義: DOS Attrib 2012-03-02 にPC MagazineのWayback Machineにアーカイブされました
- Wayback Machineの Unix 系オペレーティング システムの隠しファイル(2007 年 10 月 17 日アーカイブ)
- ファイル属性定数、C言語( -runtime-library )、Microsoft Learn、2022 年 10 月 26 日
- ファイル属性定数、( Win32 -) C++、Microsoft Learn、2023 年 6 月 9 日
