ファイル属性は、 ファイルシステム 内のファイル やディレクトリの 動作を記述し、場合によっては変更するメタデータ の一種です。一般的なファイル属性では、たとえば、ファイルが表示されるか、変更可能か、圧縮されているか、暗号化されているかを示す、または指定することができます。ほとんどのファイル属性の利用可能性は、属性データが他の制御構造とともに格納される基盤となるファイルシステム(FAT 、NTFS 、ext4 など)のサポートに依存します。各属性は、設定済みとクリア済みの2つの状態のいずれかをとります。属性は、日付と時刻、ファイル名の拡張子 、ファイルシステムのアクセス許可 などの他のメタデータとは区別されます。ファイルに加えて、フォルダ 、ボリューム 、その他のファイルシステムオブジェクトにも属性が付与される場合があります。
UnixとPOSIX Unix およびPOSIX 準拠システムを含む Unix ライクなシステムでは、各ファイルには、ファイルの所有者、グループ、およびその他のすべてのユーザーに対する読み取り、書き込み、実行の権限を制御する 9 ビットのフラグを含む「モード」があります (詳細については、「ファイルシステムの権限 § 従来の Unix の権限」を参照)。さらに、 setuid およびsetgid ビットフラグと「スティッキー」ビットフラグ も含まれます。モードには、ファイルの種類 (通常のファイル、ディレクトリ、またはその他の特殊な種類) も指定されます。
4.4BSDおよび派生バージョン 4.4BSD および4.4BSD-Lite では、ファイルとディレクトリ (フォルダ) は、ファイルの所有者またはスーパーユーザー が設定できる 4 つの属性(「ユーザー」属性) と、スーパーユーザーのみが設定できる 2 つの属性 (「システム」属性) を受け入れました。[ 1 ]
(ユーザー)ダンプ禁止:この設定を有効にすると、 バックアップ 操作中にファイルまたはディレクトリを保存しないことを示します。(ユーザーおよびシステム)不変 :この設定では、ファイルまたはディレクトリを変更してはならないことを示します。書き込み用にファイルを開く、ディレクトリ内にファイルを作成する、ディレクトリからファイルを削除する、ディレクトリ内のファイルの名前を変更する、ファイルまたはディレクトリの名前を変更する、またはファイルまたはディレクトリを削除すると、権限エラーが発生して失敗します。(ユーザーおよびシステム)追記専用 :設定されている場合、ファイルには追記のみが許可されることを示します。(ユーザー)不透明:ディレクトリに設定すると、 ユニオンスタック を通して表示したときにディレクトリが不透明であることを示します。FreeBSD は いくつかの追加属性を追加しました。[ 2 ] DragonFly BSD もサポートしています。[ 3 ]
(ユーザーおよびシステム)No-unlink :この設定が有効になっている場合、ファイルまたはディレクトリの名前変更や削除はできません。ファイルまたはディレクトリの名前変更や削除を試みると、アクセス許可エラーが発生して失敗します。FreeBSD は以下もサポートしています: [ 2 ]
(システム)アーカイブしない :設定されている場合、ファイルまたはディレクトリをアーカイブしないことを示します。(システム)スナップショット :設定されている場合、ファイルまたはディレクトリがスナップショットファイルであることを示します。この属性はシステムによって管理され、スーパーユーザーであっても設定することはできません。一方、DragonFly BSDは以下をサポートしています。[ 3 ]
(ユーザーおよびシステム)履歴なし :設定すると、ファイルまたはディレクトリの履歴を保持しないことを示します。(ユーザー) スワップキャッシュ : 設定されている場合、ファイル、またはディレクトリとそのディレクトリの下のすべてのクリーンなファイルシステムデータがソリッドステートドライブ のスワップ領域にキャッシュされることを示します。(システム)スワップキャッシュ :設定されている場合、ファイル、またはディレクトリとそのディレクトリ以下のすべてのクリーンなファイルシステムデータは、ソリッドステートドライブのスワップ領域にキャッシュされないことを示します。 (システム)アーカイブ済み :設定されている場合、ファイルまたはディレクトリがアーカイブされる可能性があることを示します。NetBSD は 別の属性を追加しました。[ 4 ] OpenBSD もサポートしています。[ 5 ]
(システム)アーカイブ済み :設定されている場合、ファイルまたはディレクトリがアーカイブされていることを示します。macOSに 3つの属性が追加されました。
これらのシステムでは、chflags コマンドを使用してファイル属性を変更したり、ls コマンドを使用して属性を表示したりできます。4.4BSD 系のオペレーティングシステムでファイルの「user」属性を変更するには、ユーザーがファイルの所有者またはスーパーユーザーである必要があります。「system」属性を変更するには、ユーザーがスーパーユーザーである必要があります。
Linux Linuxオペレーティングシステムは、コマンドで一覧表示でき、可能な場合はコマンドで変更できる幅広いファイル属性 をサポートしています。プログラムは、ioctl 操作を使用して属性を調べたり変更したりでき ます 。[ 7 ] lsattrchattr
多くのLinuxファイルシステムは限られた属性セットしかサポートしておらず、chattr変更可能なすべての属性をサポートしているシステムは存在しません。少なくとも一部の属性をサポートするファイルシステムには、ext4 、XFS 、btrfs などがあります。
DOSとWindows 従来、DOS およびMicrosoft Windows では、ファイル とフォルダは 4 つの属性を受け入れていました。[ 16 ] [ 17 ] [ 18 ]
アーカイブ (A):この属性が設定されている場合、ホストファイルが前回のバックアップ 操作以降に変更されたことを示します。Windowsのファイルシステムは、変更されたすべてのファイルにこの属性を設定します。バックアップソフトウェアは、完全バックアップまたは増分バックアップ(差分バックアップではない)が正常に完了した際に、この属性をクリアする役割を担います。隠しファイル (H): 設定すると、ホストファイルが隠しファイルであることを示します。MS-DOS コマンドdir や Windows アプリケーション (ファイル エクスプローラ など)は、明示的に指示しない限り、デフォルトでは隠しファイルを表示しません。[ 19 ] システム (S): 設定されている場合、ホストファイルがコンピュータの正常な動作に必要な重要なシステム ファイルであることを示します。MS-DOS および Microsoft Windows は、重要なシステム ファイルをマークするためにこれを使用します。MS-DOS コマンドdirや Windows アプリケーション (ファイル エクスプローラなど) は、隠しファイルを表示する場合でも、明示的に指示しない限り、システム ファイルをデフォルトでは表示しません。読み取り専用 (R): 設定されている場合、ファイルは変更してはならないことを示します。ファイルを開く際、ファイルシステムAPI は 通常、アプリケーションが明示的に要求しない限り、要求元のアプリケーションに書き込み権限を与えません。フォルダの読み取り専用属性は通常無視され、別の目的で使用されます。[ 20 ] [ 21 ] Windows の新しいバージョンがリリースされるにつれて、Microsoft はNTFS ファイルシステムで使用可能な属性のリストに追加しました 。 [ 22 ] 以下を含みますが、これらに限定されません。[ 23 ]
Windowsエクスプローラー[ 22 ] の「属性」列に表示されるその他の属性には、次のものがあります。
ディレクトリ (D): このエントリはサブディレクトリ であり、独自のファイルおよびディレクトリのエントリを含みます。再解析ポイント (L): ファイルまたはディレクトリには関連付けられた再解析ポイントがあるか、シンボリックリンク です。オフライン (O):ファイルデータは物理的にオフラインストレージ(リモートストレージ)に移動されます。スパース (P): このファイルはスパースファイル です。つまり、その内容は部分的に空で、連続していません。一時 ファイル(T):このファイルは一時的な保存に使用されます。DOS、OS/2、Windows では、cmd.exe およびcommand.com attrib のコマンドを使用して、4 つの従来のファイル属性を変更および表示できます。[ 18 ] [ 24 ] Windows のファイル エクスプローラーでは、前述の 7 つの属性を表示できますが、System 属性を設定またはクリアすることはできません。[ 20 ] Windows 7 以降のコンポーネントとなったWindows PowerShell には、属性の読み取りと書き込みができる 2 つのコマンドがあります。[ 25 ] Windows NT でファイルの属性を変更するには、ユーザーは、Write Attributes およびWrite Extended Attributes と呼ばれる適切なファイルシステム権限 を持っている必要があります。[ 26 ] Get-ItemPropertySet-ItemProperty
参考文献 ↑ – BSD システムコール マニュアル chflags(2) 1 2 – FreeBSD システムコール マニュアル chflags(2) 1 2 – DragonFly BSD システムコールとエラー番号 マニュアル chflags(2) ↑ – NetBSD システムコール マニュアル chflags(2) ↑ – OpenBSD システムコール マニュアル chflags(2) ↑ – Darwin および macOS システムコール マニュアル chflags(2) ↑ – Linux プログラマー ズマニュアル – Manned.orgのシステムコール ioctl_iflags(2) ↑ Shellenbaum, Mark. "拡張可能な属性インターフェース[ PSARC/2007/315 ] " . OpenSolaris ARC 資料アーカイブ . illumos.org . 2023 年 3 月 10 日 取得 . ↑ "chmod(1)" . Oracle Solaris 11.4 リファレンス ライブラリ: man ページ セクション 1: ユーザー コマンド . Oracle . 2023 年 3 月 10 日 取得 . ↑ "chmod(1)" . illumos man pages . illumos.org . 2023年 3月10日 取得 . ↑ "ls(1)" . Oracle Solaris 11.4 リファレンス ライブラリ: man ページ セクション 1: ユーザー コマンド . Oracle . 2023 年 3 月 10 日 取得 . ↑ "ls(1)" . illumos man pages . illumos.org . 2023年 3月10日 取得 . ↑ "getattrat(3c)/setattrat(3c)" 。Oracle Solaris 11.4 リファレンス ライブラリ: man ページ セクション 3: 基本ライブラリ関数 。Oracle。2023 年 3 月 10 日 に取得 。 ↑ "getattrat(3c)/setattrat(3c)" . illumos man pages . illumos.org . 2023年 3月10日 取得 . ↑ "sysattr(7)" . Oracle Solaris 11.4 リファレンス ライブラリ: man ページ セクション 7 . Oracle . 2023 年 3 月 10 日 取得 . ↑ 「定義: ファイル属性」 . PC Magazine . Ziff Davis . 2020年 10月14日 取得 。 ↑ 「ファイル属性」 . Computer Hope . 2012年 12月2日 取得 。 1 2 「Windows では、ファイル属性とは何ですか。また、どのように変更できますか?」 。 ナレッジベース 。 インディアナ大学 。2011 年 10 月 11 日。2012 年 12 月 2 日 に取得 。 ↑ 「隠しファイルとは何ですか?」 。 Windows 7 ヘルプ 。マイクロソフト。 2012年 12月2日 取得 。 1 2 「Windows Server 2003、Windows XP、Windows Vista、または Windows 7 では 、フォルダーの読み取り専用属性またはシステム属性を表示または変更することはできません」。Microsoft サポート 。Microsoft。2012 年 5 月 31 日。2012 年 12 月 2 日 に取得 。 ↑ 「フォルダの読み取り専用プロパティはなぜこんなに奇妙なのか? 」 1 2 「ファイル属性定数」 . MSDN . Microsoft . 2018年 7月17日 取得 . ↑ 「Windows 2000 でファイル属性管理スクリプト (Fileattributes.pl) を使用する方法」 。Microsoft サポート 。Microsoft。2012 年 12 月 2 日 に取得 。 ↑ 「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 日 に取得 。