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


20

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

回答:


9

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

仮想のすべて(私はすべてを言いたいが、100%確信することは決してできない)UNIXでは、UID:GID値を使用します。これはファイルシステムレベルで実際に保存されるためです。名前はpasswdファイルでの単純な検索であり、基礎となるチェックは数値を使用して行われます。


ああ、それは良くない...ほとんどの状況で適切だと思う。残念ながら、私にとっては…EightBitTony、ありがとう。
マリウス

3
ほとんどの場合、GUID(グローバル一意識別子)ではなく、GID(グループ識別子)を意味します。
CVn

6
GNU tarはユーザー/グループ名のデータも保存します。これらのユーザーがいないマシンにアーカイブをリストすると表示されるためです。抽出中にそれを使用する方法が必要です。
ロブH

3
この答えは単に間違っています。レコード所有者名を。tar
ステフェンハイル

55

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

  • アーカイブを作成するときは、tar必ず、ファイルユーザーとグループIDを保持しますしない限り、そうでないと言いました--owner=NAME--group=NAME。ただし、各ファイルには常にユーザーとグループが関連付けられます。

  • GNUタール、およびおそらく他のバージョンではtarまた、ユーザおよびグループ保存名をしない限り、--numeric-owner使用されています。bsdtarはデフォルトでユーザー名とグループ名も保存し--numeric-ownerますが、作成時のオプションのサポートはbsdtar 3.0まで表示されませんでした(bsdtarはより長い時間抽出するオプションをサポートしたことに注意してください)。

  • 通常のユーザーとして抽出する場合、すべてのファイルは常にユーザーが所有します。また、ファイルを抽出するとファイルシステム上に新しいファイルが作成され、通常のユーザーはファイルを作成して他の誰かに所有権を付与することはできないため、これに違いはありません。

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

  • GNU tar、bsdtar、およびおそらく他のバージョンではtar、復元された所有権は、その情報がアーカイブあり、宛先システムに一致するユーザーがいる場合、ユーザー(およびグループ)によって実行されます。それ以外の場合は、IDで復元します。場合はオプションが提供され、ユーザー名とグループ名は無視されます。--numeric-owner

  • 許可とタイムスタンプもアーカイブに保存され、オプション--no-same-permissionsおよび/またはオプション--touchが使用されない限り、デフォルトで復元されます。ユーザーが抽出すると、使用されない限り、ユーザーの権限から許可umask差し引か--same-permissionsれます。

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

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


3
素晴らしい答え; この質問に回答するだけでなく、主題に関して発生する可能性のある他のすべての質問にも答えます。
user1107893 14

GNUの最近のバージョンのみがtar--ownerまたは--groupで任意の名前を指定できるようになっていることに注意してください。過去tarに現在のマシンで無償の検索を行い、/etc/passwd一致しない場合は実行を拒否しました。
マッテオイタリア14年

指定した名前でアーカイブを作成--ownerし、--numeric-ownerフラグに追加するとどうなりますか?tarはこれらの競合する要件をどのように処理しますか?
CMCDragonkai

@CMCDragonkai:--ownerそして--numeric-owner、相互に排他的ではなく、非常に明確な目的を果たします:--owner=USERNAMEファイルをアーカイブするときにファイルとディレクトリ所有者をオーバーライドしますが、--numeric-owner単にユーザー名ではなく、数値IDのみを保存します。
メストレリオン

4

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


これはスーパーユーザーのデフォルトとして文書化されており、受け入れられた回答とは異なる方法でOPの質問に回答するようです。(リンクは、GNU tarが--same-ownerを使用して復元するとき、最初に/ etc / passwd で名前を検索すると言います。)唯一の顕著な問題は、OPのバージョンのtarが--same-ownerを実装するかどうかです。
マイクシェリル 'キャットリコール'

OPは、GNU tarを使用する可能性よりも優れたLinuxディストリビューションを使用しています。そして、それは文書で行く受け入れられた答えは...それはありません示している可能性
コリン・「tはハート

@Catcall-申し訳ありませんが、テストする機会さえなくても答えを受け入れました。Somethimes私はただ盲目的に人々を信頼します。それでも、私が「--same-owner」で復元していなかったので、答えた人はちょっと正しいです。そして、あなたは答えに追加しました。残念ながら、両方を受け入れることはできません。「--same-owner」を実際にサポートするdebian squeezeを使用しています。ヒントをありがとう。
マリウス

@Marius:受け入れられた答えはいつでも変更できると確信しています。(私はこの質問に対する答えを何も提供しておらず、コメントのみを提供していることを指摘しておきます。担当者はいません。)
マイクシェリル 'キャットリコール'

4

2つのシステム間でファイルを転送しようとする場合、rsyncはデフォルトで、uidではなくユーザー名でアクセス権を設定し、両端のユーザー名を確認します。ユーザーがシステムの1つに存在しない場合にのみ、特に指定しない限り、ユーザーはuidでそれをコピーします。


これはOPの質問に直接答えませんが、OPの質問をする人は誰でもこれを学ぶべきです。
マイクシェリル 'キャットリコール'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.