tar arşivindeki dosyalar için dosya sahipliğini değiştirme


10

Ben kullanıcı olarak çalışıyorum ve ben açıldığında (kök tarafından) kök sahiplik ile dosyaları ayıklamak bir tar arşivi oluşturmak istiyorum (aksi takdirde kök dosyaları ayıklandıktan sonra her dosya için el ile değiştirmek zorunda kalacak hedefine).

fakerootHangisinin tam olarak böyle olduğunu gördüm . Ancak arşivimi oluşturmak için kullanmam gereken sözdizimini bulamıyorum.

Bir tar.xz arşivini nasıl oluşturabilirim, böylece dosyalar root tarafından açıldığında kök sahipliğine sahip olurlar?

do something with fakeroot ...
tar cfpJ foo.tar.xz foo/

Yanıtlar:


12

Bir tar.xz arşivini nasıl oluşturabilirim, böylece dosyalar root tarafından açıldığında kök sahipliğine sahip olurlar?

Paketi açan kök bu kadar:

tar --no-same-owner -xf ...

Başlamak için hepsini kök yapmak istiyorsanız,

tar --owner=root --group=root -cf ...

benim için çalışmıyor: tar --owner=root --group=root cfpJ files.tar.xz files/bana hata verir tar: You must specify one of the -Acdtrux 'veya --test-label' options Try tar --help' veyatar --usage' for more information.
user1968963

-Kısa seçenekler dizenizden önce a gerekir : tar --owner=root --group=root -cfpJ ...Yani -cfpJ, değil cfpJ.
goldilocks

tar --owner=root --group=root -cfpJ files.tar.xz files/bana başka bir hata veriyor: tar: files.tar.xz: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errorsdahası, adlı bir dosya oluşturur pJ.
user1968963

3
Tamam. Her zaman fsonuna koydum (sezgisel olarak daha mantıklı olduğu için) ve düşük ve görüyorum, -cfpJama aynı başarısızlığı AMA -cpJfişlerinde alıyorum .
goldilocks

@ user1968963: f, "sonraki parametre dosya adıdır" anlamına geldiği için her zaman dosya adından hemen önce olmalıdır. Dosya adından hemen önce koymazsanız, tar dosya adının "" olduğunu düşünür ve sonra "" (tabii ki) duramayacağı bir "" dosyası açmaya çalışır.
Olivier Dulac

8

fakeroot

Fakeroot programı ya da yeni yardımcı fakeroot-ng (aynı amaç, farklı uygulama tekniği) bir program ve kök olarak çalıştıran bu programa miş akar ve bu sistem, çağrıları chownbaşarılı oldu. Sadece program bu çağrıların başarılı olduğuna inanır, hiçbir şey dosya sistemine yansıtılmaz (o zamandan beri fakerootekstra ayrıcalıklara sahip olamaz). Ancak, program bir dosyanın sahipliğini değiştirir ve daha sonra bu dosyanın sahipliğine bağlı olarak bazı işlemler yaparsa, bu programın davranışını değiştirebilir.

Aşağıdakilerin meydana geldiği bir fakeroot ortamı çalıştırarak fakeroot'tan faydalı işler elde etmenin tipik bir yolu:

  1. Bazı dosyalar oluşturun, onları hareket ettirin, sahipliklerini ve modlarını değiştirin vb.
  2. Bu dosyaların bir arşivini oluşturun.

Misal:

fakeroot sh -c '
    chown root:root usr/bin/foo
    tar cf foo.tar usr
'

Tek bir çağrı kullanmanız gerekir fakeroot, çünkü çağrılar arasında bellek yoktur.

Linux ad alanları

Tam olarak söylemek gerekirse, Linux çekirdeğiniz .83.8 ise, ad alanlarının taklit kök ortamı yaratmanın başka bir yolu olduğunu söyleyeceğim . Kullanıcı desteği henüz tam olarak orada değil, bu yüzden daha fazla ayrıntıya girmeyeceğim.

Arşivi bağlayın

Sorununuzu çözmenin farklı bir yolu, arşivi bir dizin olarak monte etmektir. Sıkıştırılmış katran da dahil olmak üzere, libarchive aracılığıyla çeşitli arşiv formatlarını değiştirebilen archivemount'u kullanabilirsiniz .

mkdir mnt
archivemount foo.tar.xz mnt
chown root:root mnt/usr/bin/foo
fusermount -u mnt

Güzel hile archivemount, ancak yine de ayrıcalık yükselmesi gerektiriyor ve kullanıcı, takma ve çıkarma işlemine izin verilen güvenilir bir grupta olsa bile, işlem başarısız oluyor chown, bu nedenle fakerootveya üçüncü taraf araçların veya ad alanlarının bir tür kullanılması gerekiyor de.
Anton Samsonov
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.