Unixはファイル権限をどのように実装しますか?

Unixはファイル権限をどのように実装しますか?

foo.txtLinuxディストリビューションにroot権限を持つテキストファイルがあります。別のコンピュータの別のLinuxディストリビューションにコピーしました。

ファイル権限はまだ維持されていますかfoo.txt

それでは、Unix / Linux Linuxはどのようにファイルの権限を知ってコピーしますか?

ファイルに追加のバイトを追加しますか(権限を示す)?

答え1

Ericの回答に追加するには(担当者がコメントしない)、権限はファイルに保存されません。インデックスノード(ディスク上のファイルの物理的な場所へのファイルシステムポインタ)を所有者とタイムスタンプと共にメタデータとして使用します。つまり、POSIX以外のファイルシステム(NTFSやFATなど)にファイルをコピーすると、権限と所有者のデータが削除されます。

ファイル所有者とグループは、ユーザーID(UID)とグループID(GID)の数字のペアにすぎません。標準ルート UID は 0 であるため、(ほぼ)すべての UNIX 互換システムでは、ファイルはルートが所有しているように見えます。一方、ルート以外の所有者は意味のある方法で保存しません。

つまり、extX usbstickなどを介して圧縮またはコピーすると、ルート所有権が維持されます。ルート以外の所有権は信頼できません。

答え2

どのように再現するかによって異なります。tarボールに入れてコピーしてから解凍すると、権限が維持されtarます。これを使用すると、rsyncフラグに従って権限も保持されます。これらのアプリケーションは権限を担当します。これによりscp権限は維持されません。

コピーを実行するコマンドは、新しく作成されたファイルに対する権限を管理します。

答え3

所有者/グループの場合、コピーを実行する人と方法によって異なります。

  • 一般ユーザー:常にすべてのコマンドコピーの所有者です。
  • rootユーザーも使用可能cp(オプションの使用に加えて--preserve
  • rootwith のデフォルトは「保存」です。tar

関連情報