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
ユーザー/グループ名には常に数値を使用します。