Bir tarball'ın, dosyaları çıkartmak için kullanılan komutlardan bağımsız olarak çıkarıldığı yeri değiştirebileceği doğru mu?


27

Tarball'ları çıkarırken dikkatli olmanız gerektiğini söyleyen bir iş arkadaşım var çünkü bilmediğiniz değişiklikleri yapabilirler. Her zaman bir tarball'ın sıkıştırılmış dosyaların sadece bir hiyerarşisi olduğunu düşünürdüm, bu yüzden / tmp / example / dizinine çıkartırsanız, bir dosyayı / etc / veya onun gibi bir şey içine gizlice sokamaz.


1
Hangi İşletim Sistemi ortamları ile ilgileniyorsunuz? GNU / Linux'un katranı, -Pbu konudaki davranışını etkileyen bir seçeneğe sahiptir.
Jeff Schaller

1
Sanırım bu durumda CentOS, ama bilmem gerekenleri bilmek istiyorum.
Adam R. Gray,

1
Daha uzun bir süre için, GNU katranı /etc/passwd, kök olarak çalıştırılması durumunda, örneğin çıkarılmasını sağlayacak şekilde kandırılabilir . Bir süredir gtarbunun seninle aynı güvenlik sağladığına inanıyorum star.
schily

Yanıtlar:


41

Farklı katran hizmetleri bu konuda farklı davranır, bu yüzden dikkatli olmak iyidir. Oluşturmadığınız bir tar dosyası için, çıkartmadan önce içindekileri her zaman listeleyin.

Solaris katranı :

Adlandırılmış dosyalar tar dosyadan çıkarılır ve geçerli dosyaya göre tar dosya dosyasında belirtilen dizine yazılır. Çıkartılacak dosya ve dizinlerin göreli yol adlarını kullanın.

Katran arşivinde yer alan mutlak yol adları, mutlak yol adları kullanılarak açılır, yani öne eğik çizgi (/) çıkarılmaz.

Tam (mutlak) yol adlarına sahip bir tar dosyası durumunda, örneğin:

/tmp/real-file
/etc/sneaky-file-here

... böyle bir dosyayı çıkarırsanız, her iki dosyayla da bitirdiniz.

GNU katranı :

Varsayılan olarak, GNU tar bir /girdi veya çıktıya öncülük eder ve bir ..bileşen içeren dosya adlarından şikayet eder . Bu davranışı kapatan bir seçenek var:

--absolute-names

-P

Baştaki eğik çizgileri dosya adlarından çıkarmayın ve bir ..dosya adı bileşeni içeren dosya adlarına izin vermeyin .

GNU tar kullanarak tam pathed tar dosyasını ayıklamak eğer ... olmadan kullanan -Pseçeneği, bu size söyleyecektir:

tar: Liderleri /üye adlarından çıkarma

ve dosyayı geçerli dizininizin alt dizinlerine çıkaracaktır.

AIX katranı :

bunun hakkında hiçbir şey söylemez ve Solaris katranı gibi davranır - tam / mutlak yol adlarıyla katran dosyaları oluşturur ve çıkarır.

HP-UX katran : (daha iyi çevrimiçi referans memnuniyetle karşılandı)

UYARILAR

Mutlak bir yol adını göreceli bir konuma geri yüklemek mümkün değildir.

OpenBSD katranı :

-P

Baştaki eğik çizgileri ( /) yollardan çıkarmayın. Varsayılan, baştaki eğik çizgileri şeritlemektir.

Orada -Puygulanan seçenekler tarolduğunu eklenmesiyle aynı anlamda sıra MacOS, FreeBSD ve NetBSD üzerinde, tarüzerinde FreeBSD ve MacOS "çöp pathnames ihtiva arşiv girdileri ayıklamak için olacak ..olmadan veya kimin hedef dizin bir sembolik bağ değişikliklere yol açacaksa" -P.

schilytools yıldızı :

-/

Bir arşivi çıkarırken baştaki eğik çizgileri dosya adlarından çıkarmayın. Mutlak yol adlarını içeren katran arşivleri genellikle kötü bir fikirdir. Diğer katran uygulamaları ile, muhtemelen mevcut dosyaları gizlemeksizin çıkartılamazlar. Bu nedenle yıldız, varsayılan olarak, ayıklama modunda dosya adlarından baştaki eğik çizgileri çıkarır.


2
Uzun bir süre boyunca GNU tar, içerdiği bir yol adının ..güvenlik riski olduğunu, bu nedenle kullanımı starya da son zamanlarda olduğu gerçeğini görmezden geldi gtar. Ayrıca çoğu uygulamanın bir uyarı vermeden dosyaları kaldırmasına neden olan starel yapımı tarbaşlıkları içeren örnek tar arşivlerine bakın tar.
schily

Jeff'in alıntılarına göre, kısaca tarSolaris, AIX ve HP-UX için de geçerli değil mi? Öyleyse, neden sadece GNU katranını işaret ettin, özellikle (yine yukarıdaki alıntıya göre) kabul etmedi ..mi? Yanlış biçimlendirilmiş girdilerle ilgili sorunlar elbette hatalardır ve sanırım bunları böyle bildirdiniz.
ilkkachu

1
Tarihi katran uygulamaları böyle şeyleri kontrol etmiyor. Açıklamaya ihtiyacım vardı çünkü GNU katranının salıverilmeksizin problemsiz olduğu iddiası vardı. BTW: böyle bir listenin star(en eski ücretsiz uygulama) belirtmeden tamamlanmamış olarak görülmesi gerekir.
schily

@schily, ben büyük işletim sistemleri (farklı katran uygulamaları olabilir) için man sayfaları aradım; yıldızın çevrimiçi man sayfasına bir bağlantınız varsa, eklemekten memnuniyet duyarım.
Jeff Schaller


9

Katran bombalarıyla gerçekleşen en komik şeylerden biri, geçerli dizinin izinlerini tarball'a dahil olanlara değiştirmeleridir.

Örneğin, bir tarball '.' İçeriyorsa dizinini açıp / tmp dosyasını root olarak açtığınızda, / tmp 'ı root dışında herhangi biri tarafından istenmeyen hale getirerek sisteminizi mahvedecektir.


Paketten çıkarırsanız /, beklenmeyen sonuçlara yol açacak olan kök dizininin izinlerini değiştirecektir (bir konsolda oturum açarken, "7 / /mod / bash" komutunu çalıştıracağımı hatırlıyorum ).
29

1
Bunu resmi yazılımla yaptım - "çiftlik sahibi-bestelemek" her şeyi içerir "in github sürümleri. örneğin tar dosyasında ve eğer onları çıkartırsanız nuke / tmp.
Harald
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.