Saya ingin membuat file tar dengan konten milik pemilik: pasangan grup yang tidak ada di sistem dari mana file tersebut dibuat.
Inilah arahan yang saya coba:
tar ca --owner='otherowner' --group='othergroup' mydata.tgz mydata
Dan ketika menjalankan perintah ini, saya mendapatkan kesalahan berikut:
tar: otherowner: Invalid owner
tar: Error is not recoverable: exiting now
Apakah ada cara untuk memaksa tar untuk menerima pemilik: grup, meskipun tidak ada dari mereka yang ada di sistem dari mana file sedang dibuat?
permissions
users
tar
David
sumber
sumber
Jawaban:
Linux tidak menggunakan nama pemilik dan grup secara internal tetapi angka - UID dan GID. Nama pengguna dan grup dipetakan dari konten / etc / passwd dan / etc / group files untuk kenyamanan pengguna. Karena Anda tidak memiliki entri 'pemilik lain' di salah satu file itu, Linux tidak benar-benar tahu UID dan GID mana yang harus ditugaskan ke file. Mari kita coba memberikan nomor saja:
Tampaknya berhasil.
sumber
-tvf
flag. Untuk melihat angka saat ini untuk file dalam arsip, gunakan perintah seperti ini:$ tar --numeric-owner -tvf archive.tar
--numeric-owner
bendera. Yang lebih menarik adalah Anda bisa mengatur keduanya menggunakan--owner=name:1234
atau--group=groupname:4711
. Sumber: function parse_owner_group dari kode sumber tarTambahkan params
--no-same-owner --no-same-permissions
dengantar
. Lihatlah dokumen .sumber
Berikut adalah sepotong kode untuk mengganti pengguna / grup dengan id on the fly:
sumber