Saya bekerja sebagai pengguna, dan saya ingin membuat arsip tar, yang ketika dibongkar (oleh root) akan mengekstrak file-nya dengan kepemilikan root (jika tidak root harus mengubah kepemilikan secara manual untuk setiap file, setelah file telah diekstraksi ke tujuannya).
Saya telah menemukan fakeroot
yang tampaknya melakukan hal itu. Tetapi saya tidak dapat menemukan sintaks yang perlu saya gunakan untuk membuat arsip saya.
Bagaimana saya bisa membuat arsip tar.xz, sehingga file-file tersebut memiliki kepemilikan root ketika dibongkar oleh root?
do something with fakeroot ...
tar cfpJ foo.tar.xz foo/
sumber
tar --owner=root --group=root cfpJ files.tar.xz files/
beri saya kesalahantar: You must specify one of the
-Acdtrux 'atau--test-label' options Try
tar --help' atautar --usage' for more information.
-
sebelum string opsi pendek:tar --owner=root --group=root -cfpJ ...
Yaitu-cfpJ
, tidakcfpJ
.tar --owner=root --group=root -cfpJ files.tar.xz files/
memberi saya kesalahan lain:tar: files.tar.xz: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errors
dan terlebih lagi, itu menciptakan file bernamapJ
.f
pada akhirnya (karena itu lebih masuk akal, intuitif) dan rendah dan lihatlah, saya mendapatkan kegagalan yang sama dengan-cfpJ
TETAPI-cpJf
bekerja.Fakeroot
The fakeroot utilitas, atau yang lebih baru utilitas fakeroot-ng (tujuan yang sama, teknik implementasi yang berbeda) menjalankan program dan berpura-pura program yang sedang berjalan sebagai root dan sistem yang memanggil seperti
chown
berhasil. Hanya program yang percaya bahwa panggilan ini berhasil, tidak ada yang benar-benar tercermin dalam sistem file (tidak mungkin karenafakeroot
tidak memiliki hak istimewa tambahan). Namun, jika program mengubah kepemilikan file dan kemudian mengambil tindakan berdasarkan kepemilikan file itu, ini dapat mengubah perilaku program.Cara tipikal untuk mendapatkan pekerjaan yang bermanfaat dari fakeroot dengan menjalankan lingkungan fakeroot di mana hal berikut terjadi:
Contoh:
Anda perlu menggunakan satu pemanggilan
fakeroot
, karena tidak ada memori di antara pemanggilan.Ruang nama Linux
Hanya untuk kelengkapan, saya akan menyebutkan bahwa jika Anda memiliki kernel Linux ≥3.8, maka namespace adalah cara lain untuk menciptakan lingkungan pretend-root. Dukungan userland belum cukup jadi saya tidak akan membahas lebih detail.
Pasang arsip
Cara berbeda untuk menyelesaikan masalah Anda adalah dengan memasang arsip sebagai direktori. Anda dapat menggunakan archivemount , yang mampu memodifikasi beberapa format arsip melalui libarchive , termasuk tar terkompresi.
sumber
archivemount
, tetapi masih memerlukan peningkatan hak istimewa, dan bahkan jika pengguna berada di grup tepercaya yang diizinkan untuk memasang dan melepas, proses gagalchown
, jadi beberapa jenis alat pihak ketiga sepertifakeroot
atau ruang nama harus digunakan juga.