現在システムにないユーザーのユーザー名を表示するための予約された権限を持つTarファイル

現在システムにないユーザーのユーザー名を表示するための予約された権限を持つTarファイル

www-dataユーザーを持たないシステムでは、tarはwww-dataなどのユーザー名をどのように表示しますか?

私はtarがシステムIDに基づいてユーザー権限を保持していることを知っています。この場合、Debianシステムのwww-dataに対して33(おそらくそうですか?)です。

最も混乱しているのは、フォルダの権限を33(存在しないユーザー)に変更して別のサーバーに送信すると、tarが所有者をユーザー33に報告しますが、解凍するとフォルダが所有者wwwに設定されることです。 -データ。

タール(GNUタール)1.29

答え1

tarこれは、この情報がPOSIX 1003.1-1990で指定されたustar形式でも保存されるためです。公式ソースコードにはこれが指定されていますtar.hヘッダファイル。重要な部分をコピーしました。

/* POSIX header.  */

struct posix_header
{               /* byte offset */
  [...]
  char uid[8];          /* 108 */
  char gid[8];          /* 116 */
  [...]
  char uname[32];       /* 265 */
  char gname[32];       /* 297 */
  [...]
};

ご覧のとおり、uidとgidに加えて、所有者ユーザー名と所有者グループ名も保存されています。

答え2

Tarはまた、ユーザー名とグループをファイルに保存します。 .tarファイルなどのツールを使用してtarファイル自体を見ると、それを確認できますhexdump。その理由は、同じ名前を異なるシステムで異なる番号で使用できるためです。

2番目のケースでは、ソースシステムがユーザー33の名前を知らないため、名前を指定できず、数字のみを指定できます。 Extract tarはこの番号を使用し、システムはこの番号を知っているので、その番号のユーザー名を表示します。

また、見ることができます

--numeric-owner
ユーザー/グループ名には常に数値を使用します。

関連情報