ユーザー ID が変更された場合、tar は権限を保持しますか?

ユーザー ID が変更された場合、tar は権限を保持しますか?

tar コマンドの「p」オプションを使用して、いくつかのデータをバックアップする必要があります。問題は、このデータを復元する場所にはすべて同じユーザーがいるが、それらのユーザーの ID が異なる可能性があることです。これは tar に何らかの違いをもたらしますか、それともユーザー名によって権限が正しく復元されますか?

答え1

tar権限は、関連付けられた文字列ではなく、UID と GID に基づいて記録されます。したがって、あるサーバーの UID が 3300 で、それが 'bob' にリンクされている場合、新しいサーバーでは、ファイルは UID 3300 を持つユーザーによって所有されます。

UNIX 上の仮想のすべて (すべてと言いたいところですが、100% 確実とは言えません) は UID:GID 値を使用します。これは、実際にファイルシステム レベルで保存される値だからです。名前は、passwd ファイル内での単純な検索にすぎず、基礎となるチェックは数値を使用して行われます。

答え2

これまでの回答を要約し、いくつかの重要な情報を追加します。

  • アーカイブを作成する際、tarファイルのユーザーIDとグループIDは常に保存されます。ない限り--owner=NAME、でそれ以外の場合は指定されます--group=NAME。どちらの場合でも、各ファイルには必ず関連付けられた数値ユーザーおよびグループ ID。

  • GNU tar、そしておそらく他のバージョンのtarまたユーザーとグループを保存する名前--numeric-ownerが使用されない限り、bsdtarユーザー名とグループ名もデフォルトで保存されますが、--numeric-ownerオプションがサポートされていませんでした。作成バージョン3.0までのアーカイブ(抽出するアーカイブはずっと前からあります。

  • として抽出する場合通常ユーザー、すべてのファイルはいつもユーザーが所有する必要があります。ファイルを抽出するということは、ファイルシステム上に新しいファイルを作成することを意味し、通常のユーザーはファイルを作成して他のユーザーに所有権を譲渡することはできないため、これは変わりません。

  • 抽出する場合は、tarデフォルトで抽出されたファイルの所有権を復元します。ない限り --no-same-ownerが使用され、ルート自身に所有権が与えられます。

  • GNU tar、bsdtar、およびおそらく他のバージョンのではtar、所有権の復元はユーザー(およびグループ)によって行われます。名前その情報がアーカイブにある場合そして宛先システムに一致するユーザーが存在する場合。存在しない場合は、IDで復元します。--numeric-ownerオプションが指定されている場合は、ユーザー名とグループ名は無視され、IDが使用されます。どちらの場合でも、数値IDが使用されると、一致するユーザーとグループはないシステム内に存在する必要があります。

  • 権限とタイムスタンプもアーカイブに保存され、オプション--no-same-permissionsやが--touch使用されない限り、デフォルトで復元されます。ユーザーが抽出すると、ユーザーumask減算されたが使用されない限り、権限から除外されます--same-permissions

  • --preserve-permissions--same-permissionsエイリアスであり、同じ機能を持ちます-p

これが問題の解決に役立つことを願っています! :)

答え3

2 つのシステム間でファイルを転送する場合、rsync はデフォルトで、両端のユーザー名を調べて、uid ではなくユーザー名で権限を設定します。ユーザーがいずれかのシステムに存在しない場合にのみ、特に指示しない限り、uid を使用してコピーされます。

答え4

GNU tarの--same-ownerオプションを使用します。http://www.gnu.org/software/tar/manual/html_section/Attributes.html

関連情報