Kullanıcı kimlikleri değişirse tar izinleri korur mu?


20

Ben tar komut "p" seçeneği ile bazı verileri yedeklemeniz gerekir. Sorun, bu verileri geri yükleyeceğim yer aynı kullanıcılara sahip olacak, ancak bu kullanıcıların farklı kimlikleri olabilir. Bu, tar için herhangi bir fark yaratıyor mu veya izinleri kullanıcı adına göre doğru şekilde geri yükleyecek mi?

Yanıtlar:


9

tarkendileriyle ilişkili dizeye değil, UID ve GID'ye dayalı izinleri kaydeder. Dolayısıyla, bir sunucudaki UID 3300 ise ve bu 'bob'a bağlıysa, yeni sunucuda dosya UID 3300'e sahip olan kullanıcının sahibi olacaktır.

UNIX'te sanal her şey (her şeyi söylemek istiyorum, ancak asla% 100 emin olamıyorsunuz) UID: GID değerlerini kullanıyor, çünkü aslında dosya sistemi düzeyinde depolanan şey bu. Adı passwd dosyasında sadece basit bir arama, temel kontroller sayısal değerler kullanılarak yapılır.


Ah, bu iyi değil ... Sanırım çoğu durumda uygun. Ne yazık ki, benim için değil ... Teşekkürler, EightBitTony.
Marius

3
Muhtemelen GUID (Genel Benzersiz Tanımlayıcı) değil, GID (grup tanımlayıcı) anlamına gelir.
CVn

6
GNU tar kullanıcı / grup adı verilerini de kaydeder, çünkü bu kullanıcıları olmayan bir makinede bir arşiv listelersem görebiliyorum. Ekstraksiyon sırasında bunu kullanmanın bir yolu olmalıdır.
Rob H

3
Bu cevap basitçe yanlış. tar yapar rekor sahibi isimleri.
Steffen Heil

55

Önceki cevapları toplamak ve bazı önemli bilgileri eklemek:

  • Arşivleri oluştururken, tarher zaman, dosyaları kullanıcı ve grup kimliği koruyacaktır sürece sahip aksi anlattı --owner=NAME, --group=NAME. Ancak yine de her dosyayla ilişkilendirilmiş bir kullanıcı ve grup olacaktır.

  • GNU tar ve belki de diğer versiyonları tar, aynı zamanda kullanıcı ve grup saklamak isimleri sürece, --numeric-ownerkullanılır. bsdtar ayrıca kullanıcı ve grup adlarını varsayılan olarak saklar, ancak oluşturma--numeric-owner sırasında seçenek desteği bsdtar 3.0'a kadar görünmedi (bsdtar'ın daha uzun süre ayıklama sırasında seçeneği desteklediğini unutmayın ).

  • Normal bir kullanıcı olarak ayıklanırken , tüm dosyalar her zaman kullanıcıya aittir. Ve bir dosya ayıklamak dosya sisteminde yeni bir dosya oluşturduğundan ve normal bir kullanıcı bir dosya oluşturamaz ve başkasına sahiplik veremeyeceği için bu farklı olamaz.

  • Olarak çıkartırken kökü , tarvarsayılan olarak, çıkarılan dosyaların sahipliğini geri yükler sürece --no-same-owner kullanılır kendini kök sahipliğini verecek olan.

  • GNU tar, bsdtar ve belki de diğer sürümlerinde tar, restore mülkiyet kullanıcı (ve grup) tarafından yapılır isim bu bilgiler arşivde ise, ve hedef sistemde bir eşleştirme kullanıcı var. Aksi takdirde, kimliğe göre geri yüklenir. Eğer --numeric-ownerseçenek sağlanır, kullanıcı ve grup adları göz ardı edilir.

  • İzinler ve zaman damgaları da arşive kaydedilir ve seçenekler --no-same-permissionsve / veya --touchkullanılmadıkça varsayılan olarak geri yüklenir . Kullanıcı tarafından çıkarılan, kullanıcı en umaskedilmektedir çıkarılır sürece izinlerinden --same-permissionskullanılır.

  • --preserve-permissionsve --same-permissionstakma adlardır ve-p

Umarım bu sorunu açıklığa kavuşturur! :)


3
Mükemmel cevap; Bu soruyu ve bu konuda ortaya çıkabilecek diğer tüm soruları yanıtlar.
user1107893

Sadece GNU sürümlerinin tarrastgele adların belirtilmesine izin verdiğine --ownerveya --groupgeçmişte tarmevcut makinede gereksiz bir aramaya izin verildiğine /etc/passwdve eşleşme yoksa çalışmayı reddettiğine dikkat edilmelidir .
Matteo Italia

Belirtilen ada sahip --ownerancak --numeric-ownerbayrağa eklenen bir arşiv oluşturursanız ne olur ? Katran bu rakip gerekliliklerle nasıl başa çıkıyor?
CMCDragonkai

@CMCDragonkai: --ownerve --numeric-ownerkarşılıklı olarak münhasır değildir ve çok farklı amaçlara hizmet eder: --owner=USERNAMEdosyaları arşivlerken dosyaları ve dizin sahiplerini geçersiz kılar --numeric-owner, sadece kullanıcı adını değil, sadece sayısal kimliğini saklar.
MestreLion

4

GNU tar için --same-owner seçeneğini kullanın. Bkz. Http://www.gnu.org/software/tar/manual/html_section/Attributes.html


Bu, süper kullanıcılar için varsayılan olarak belgelenmiştir ve OP'nin sorusunu kabul edilen cevaptan farklı bir şekilde cevaplıyor gibi görünmektedir. (Bağlantı, GNU katranı --same-owner kullanarak geri yüklendiğinde, ilk olarak / etc / passwd içindeki adları aradığını söylüyor .) Tek olağanüstü sorun, OP'nin tar sürümünün --same-owner olup olmadığıdır.
Mike Sherrill 'Cat Recall'

OP, Linux dağıtımını GNU katran, methinks kullanma şansından bile daha iyi kullanıyor. Ve belgelere göre gidiş o olduğunu kabul cevabı ... o değil gösterir iken mümkün
Colin 't Hart

@Catcall - üzgünüm, test etme şansı bile olmadan cevabı kabul ettim. Bazen insanlara körü körüne güvenirim. Yine de, "--same-owner" ile geri yüklemediğim için cevap veren kişi biraz haklıydı ve sonra cevaba eklediniz. Çok kötü ikisini de kabul edemem. Gerçekten "--same-owner" destekleyen debian squeeze kullanıyorum. Bahşiş için teşekkürler.
Marius

@Marius: Kabul edilen cevabı istediğiniz zaman değiştirebileceğinizden eminim. (Sadece bu soruya cevap vermediğimi, sadece yorumları belirteceğim. Söz konusu herhangi bir temsilcim yok.)
Mike Sherrill 'Cat Recall'

4

İki sistem arasında dosya aktarmaya çalışıyorsanız, rsync varsayılan olarak izinleri her iki uçtaki kullanıcı adlarına bakarak uid yerine kullanıcı adına göre ayarlar. Aksi belirtilmedikçe, yalnızca kullanıcı sistemlerden birinde yoksa kullanıcı kimliğiyle kopyalar.


Bu OP'nin sorusuna doğrudan cevap vermez, ancak OP'nin sorusunu soran herkes de bunu öğrenmelidir.
Mike Sherrill 'Cat Recall'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.