web-dev-qa-db-ja.com

Unixはファイルパーミッションをどのように実装しますか?

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

foo.txtのファイル権限は引き続き維持されますか?

はいの場合、Unix/Linux linuxはどのようにしてファイルの権限を認識し、複製しますか?

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

7
Aashiz Poudel

エリックの答え(コメントの担当者がいない)を追加するために、アクセス許可はファイルに保存されませんが、所有者とタイムスタンプとともにメタデータとしてファイルの inode (ファイルシステムのディスク上のファイルの物理的な場所へのポインター)に保存されます。これは、ファイルをNTFSやFATなどの非POSIXファイルシステムにコピーすると、アクセス許可と所有者のデータが削除されることを意味します。

ファイルの所有者とグループは、それぞれユーザーID(UID)とグループID(GID)の数字のペアです。ルートUIDは標準で0であるため、ファイルは(ほぼ)すべてのUNIX準拠システムでルートが所有しているものとして表示されます。一方、非ルート所有者は意味のある方法で保存されません。

つまり、extX usbstickなどを介してtarballまたはコピーした場合、ルートの所有権は保持されます。非ルート所有権は信頼できません。

12
WhimsicalWombat

それはあなたがそれをどのようにコピーするかに依存するでしょう。 tarボールに入れてコピーし、風袋引きを解除すると、tarは権限を保持します。 rsyncを使用すると、フラグによっては、権限も保持されます。これらのアプリケーションは、アクセス許可に責任があります。 scpを実行した場合、アクセス許可は保持されません。

コピーを実行するコマンドは、新しく作成されたファイルのアクセス許可を管理します。

4
Eric Renouf

所有者/グループの場合、誰がどのようにコピーするかによって異なります。

  • 通常のユーザー:すべてのコマンドで常にコピーの所有者になります
  • rootユーザーもcpを使用(--preserveオプションを除く)
  • 「preserve」は、roottarのデフォルトになります
0
Michel Billaud