Apakah tar mempertahankan izin jika ID pengguna berubah?

20

Saya perlu membuat cadangan beberapa data dengan opsi "p" pada perintah tar. Masalahnya adalah tempat saya akan mengembalikan data ini akan memiliki semua pengguna yang sama, tetapi para pengguna tersebut mungkin memiliki ID yang berbeda. Apakah ada bedanya dengan tar atau akankah mengembalikan izin dengan benar berdasarkan nama pengguna?

Marius
sumber

Jawaban:

9

tarmencatat izin berdasarkan UID dan GID, bukan pada string yang terkait dengannya. Jadi jika UID pada satu server adalah 3300 dan itu ditautkan ke 'bob', pada server baru file tersebut akan dimiliki oleh pengguna yang memiliki UID 3300.

Virtual segalanya (saya ingin mengatakan segalanya, tetapi Anda tidak pernah dapat 100% yakin) pada UNIX menggunakan nilai-nilai UID: GID, karena itulah yang sebenarnya disimpan pada tingkat sistem file. Namanya hanyalah pencarian sederhana dalam file passwd, pemeriksaan yang mendasarinya dilakukan menggunakan nilai numerik.

EightBitTony
sumber
Ah, itu tidak baik ... Saya kira dalam kebanyakan situasi itu cocok. Sayangnya, bukan untuk saya ... Terima kasih, EightBitTony.
Marius
3
Anda kemungkinan besar bermaksud GID (pengidentifikasi grup), bukan GUID (Pengidentifikasi Unik Global).
CVn
6
Tar GNU juga menyimpan data nama pengguna / grup, karena saya bisa melihatnya jika saya mendaftar arsip di mesin yang tidak memiliki pengguna tersebut. Harus ada cara untuk menggunakannya selama ekstraksi.
Rob H
3
Jawaban ini tidak benar. tar tidak mencatat nama pemilik.
Steffen Heil
55

Ringkas jawaban sebelumnya dan tambahkan beberapa informasi penting:

  • Ketika membuat arsip, tarakan selalu menjaga pengguna dan kelompok ID file, kecuali mengatakan sebaliknya dengan --owner=NAME, --group=NAME. Namun tetap akan selalu ada pengguna dan grup yang terkait dengan setiap file.

  • GNU tar, dan versi mungkin lain tar, juga menyimpan pengguna dan kelompok nama , kecuali --numeric-ownerdigunakan. bsdtar juga menyimpan nama pengguna dan grup secara default, tetapi dukungan untuk --numeric-owneropsi saat membuat tidak muncul sampai bsdtar 3.0 (perhatikan bahwa bsdtar mendukung opsi ketika mengekstraksi lebih lama).

  • Saat mengekstraksi sebagai pengguna biasa , semua file akan selalu dimiliki oleh pengguna. Dan itu tidak bisa berbeda, karena mengekstraksi file membuat file baru pada sistem file, dan pengguna biasa tidak dapat membuat file dan memberikan kepemilikan kepada orang lain.

  • Ketika mengekstraksi sebagai root , tarsecara default akan mengembalikan kepemilikan file yang diekstraksi, kecuali --no-same-owner digunakan, yang akan memberikan kepemilikan untuk melakukan root sendiri.

  • Dalam GNU tar, bsdtar, dan versi mungkin lain tar, kepemilikan dipulihkan dilakukan oleh pengguna (dan kelompok) nama , jika informasi yang ada di arsip dan ada pengguna yang cocok dalam sistem tujuan. Kalau tidak, itu mengembalikan dengan ID. Jika --numeric-owneropsi diberikan, nama pengguna dan grup diabaikan.

  • Izin dan stempel waktu juga disimpan ke arsip, dan dikembalikan secara default, kecuali opsi --no-same-permissionsdan / atau --touchdigunakan. Ketika diekstraksi oleh pengguna, pengguna umaskyang dikurangkan dari perizinan kecuali --same-permissionsdigunakan.

  • --preserve-permissionsdan --same-permissionsalias, dan memiliki fungsi yang sama dengan-p

Semoga ini bisa membantu memperjelas masalah ini! :)

MestreLion
sumber
3
Jawaban luar biasa; Menjawab pertanyaan ini dan juga setiap pertanyaan lain yang mungkin muncul pada subjek.
user1107893
Perlu dicatat bahwa hanya versi terbaru dari GNU yang tarmemungkinkan untuk menentukan nama arbitrer di --owneratau --group, di masa lalu tarmelakukan pencarian serampangan di mesin saat ini /etc/passwddan menolak untuk berjalan jika tidak ada kecocokan.
Matteo Italia
Apa yang terjadi jika Anda membuat arsip dengan nama yang ditentukan --ownertetapi juga ditambahkan di --numeric-ownerbendera? Bagaimana tar menangani persyaratan yang bersaing ini?
CMCDragonkai
@CMCDragonkai: --ownerdan --numeric-ownertidak saling eksklusif, dan melayani tujuan yang sangat berbeda: --owner=USERNAMEakan menimpa file dan dirs pemilik (s) saat pengarsipan file, sementara --numeric-ownerhanya tidak akan menyimpan nama pengguna, hanya ID numeriknya.
MestreLion
4

Gunakan opsi --sama-pemilik untuk GNU tar. Lihat http://www.gnu.org/software/tar/manual/html_section/Attributes.html

Colin 't Hart
sumber
Ini didokumentasikan sebagai default untuk pengguna super, dan tampaknya menjawab pertanyaan OP berbeda dari jawaban yang diterima. (Tautan tersebut mengatakan bahwa ketika tar GNU mengembalikan menggunakan --same-owner, ia akan mencari nama pertama di / etc / passwd.) Satu-satunya masalah yang beredar adalah apakah versi tar OP mengimplementasikan --same-owner.
Mike Sherrill 'Cat Recall'
OP menggunakan beberapa distro Linux jadi lebih baik daripada peluang menggunakan GNU tar, methinks. Dan pergi dengan dokumentasi itu adalah mungkin sementara jawaban yang diterima menunjukkan itu tidak ...
Colin 't Hart
@Catcall - maaf, saya menerima jawabannya tanpa sempat mengujinya. Kadang-kadang saya hanya mempercayai orang secara membabi buta. Tetap saja, orang yang menjawab agak benar, karena saya tidak memulihkan dengan "--sama-pemilik" dan kemudian Anda telah menambahkan jawabannya. Sayang sekali saya tidak bisa menerima keduanya. Saya menggunakan debian squeeze yang memang mendukung "--same-owner". Terima kasih atas tipnya.
Marius
@Marius: Saya cukup yakin Anda dapat mengubah jawaban yang diterima kapan pun Anda mau. (Saya hanya akan menunjukkan bahwa saya belum memberikan jawaban untuk pertanyaan ini, hanya komentar. Saya tidak punya perwakilan yang dipertaruhkan.)
Mike Sherrill 'Cat Recall'
4

Jika Anda mencoba mentransfer file antara dua sistem, rsync secara default akan mengatur izin berdasarkan nama pengguna alih-alih uid, dengan melihat nama pengguna di kedua ujungnya. Hanya jika pengguna tidak ada di salah satu sistem yang akan menyalinnya dengan uid, kecuali jika Anda memberi tahu sebaliknya.

Hibah
sumber
Ini tidak secara langsung menjawab pertanyaan OP, tetapi siapa pun yang menanyakan pertanyaan OP harus mempelajari ini juga.
Mike Sherrill 'Cat Recall'