Apa sebenarnya flag tar -p (preserve permissions) yang dipertahankan?

22

Apa yang -psebenarnya dipertahankan bendera saat membuat dan mengekstrak tarball? Apakah itu rwxizin yang dilestarikan?

Ketika saya membuat htdocs/tarball yang dimiliki oleh root, mengekstraknya ke mesin lokal saya mengubah kepemilikan dari root ke pengguna saya.

nicoX
sumber
5
Mungkin Anda harus mencoba mengekstrak arsip sebagai root. Tidak mungkin untuk mengatur izin untuk pengguna lain sebagai pengguna biasa jadi saya pikir tartidak akan bisa melakukannya juga. Tolong beritahu saya jika ini berhasil.
Louis Matthijssen
"mesin lokal"? Tolong jelaskan OS apa yang dimiliki mesin ini;)
Rinzwind
Juga beri tahu kami sistem file apa yang Anda gunakan. Baik sumber dan target.
terdon
Sumber: Red Hat Enterprise Linux Server release 6.5 (Santiago) Target: Ubuntu 13.10 Keduanya menggunakanGPT
nicoX
Catatan samping: tarmempertahankan izin. -pdan --same-owner/ --no-same-owner(seperti dalam jawaban) adalah flag ekstraksi. Mereka tidak memiliki efek saat pengarsipan
Fr0zenFyr

Jawaban:

19

Kepemilikan dan izin adalah dua hal yang berbeda. The -pbendera mempertahankan hak akses . Pada sistem * nix, pengguna biasa tidak dapat mengubah kepemilikan file menjadi pengguna yang bukan dirinya sendiri.

Seperti yang dijelaskan di sini :

Hanya proses dengan ID pengguna efektif yang sama dengan ID pengguna file atau dengan hak istimewa yang sesuai dapat mengubah kepemilikan file. Jika _POSIX_CHOWN_RESTRICTED berlaku untuk jalur:

  • Mengubah ID pengguna dibatasi untuk proses dengan hak istimewa yang sesuai.

  • Mengubah ID grup diizinkan untuk suatu proses dengan ID pengguna yang efektif sama dengan ID pengguna file, tetapi tanpa hak istimewa yang sesuai, jika dan hanya jika pemilik sama dengan ID pengguna file atau (uid_t) -1 dan grup sama dengan baik ke ID grup efektif proses panggilan atau ke salah satu ID grup tambahannya.

Alasan di balik ini telah baik dijelaskan oleh @Gilles di ini Unix & Linux jawabannya:

Alasan pembatasan ini adalah bahwa memberikan file ke pengguna lain dapat memungkinkan hal-hal buruk terjadi secara tidak umum, tetapi masih dalam situasi yang penting. Sebagai contoh:

  • Jika suatu sistem memiliki kuota disk yang diaktifkan, Alice dapat membuat file yang dapat ditulis oleh dunia di bawah direktori yang hanya dapat diakses olehnya (jadi tidak ada orang lain yang dapat mengakses direktori yang dapat ditulis itu), dan kemudian menjalankan chown untuk membuat file itu dimiliki oleh pengguna lain Bill . File kemudian akan dihitung di bawah kuota disk Bill meskipun hanya Alice yang dapat menggunakan file tersebut.
  • Jika Alice memberikan file ke Bill, tidak ada jejak bahwa Bill tidak membuat file itu. Ini bisa menjadi masalah jika file tersebut berisi data ilegal atau yang membahayakan.
  • Beberapa program mengharuskan file inputnya menjadi milik pengguna tertentu untuk mengotentikasi permintaan (misalnya, file tersebut berisi beberapa instruksi yang akan dilakukan program atas nama pengguna itu). Ini biasanya bukan desain yang aman, karena bahkan jika Bill membuat file yang mengandung instruksi yang benar secara sintaksis, ia mungkin tidak bermaksud untuk mengeksekusinya pada waktu tertentu ini. Meskipun demikian, mengizinkan Alice untuk membuat file dengan konten sewenang-wenang dan menjadikannya sebagai masukan dari Bill hanya dapat memperburuk keadaan.

Jadi, bahkan jika Anda menggunakan --same-ownerflag tar , Anda masih perlu mengekstrak file rootuntuk mempertahankan kepemilikan. Bendera itu diaktifkan secara default untuk root, jadi yang Anda inginkan adalah:

sudo tar xpf foo.tgz
terdon
sumber
9

Ada 2 opsi lain untuk tar yang menarik:

--same-owner
       try extracting files with the same ownership as exists in the ar‐
       chive (default for superuser)

--no-same-owner
       extract files as yourself (**default for ordinary users**)

Yang ke-2 adalah default sehingga Anda dapat menambahkan --same-owneruntuk menyelamatkan pengguna Anda. Anda mungkin harus melakukan ini dengan sudo.

Selain itu: ini hanya akan bekerja pada sistem yang mendukung POSIX. Dan sistem operasi selain Ubuntu mungkin tidak memiliki 2 opsi ini (mereka tidak standar).

Rinzwind
sumber
3
Tidak --same-ownerakan berfungsi untuk pengguna non-root, mereka tidak akan memiliki hak untuk mengatur kepemilikan kepada siapa pun kecuali diri mereka sendiri. Itu didefinisikan oleh POSIX .
terdon
4

Untuk mempertahankan pemilik jalankan sebagai root atau gunakan flag --same-owner bersama flag -p saat mengekstraksi.

NGRode
sumber
3
Perlu dijalankan sebagai root dalam hal apa pun. Pengguna non-root tidak dapat mengubah kepemilikan file ke pengguna lain.
terdon