Karena jawabannya sulit dimengerti (untuk diri saya sendiri) dan butuh pemikiran untuk memahaminya ( komentar ini membuat saya memahaminya), saya akan memberikan penjelasan yang diharapkan lebih baik.
1. Apa yang terjadi di fakeroot
Tidak lebih dari apa yang terjadi dengan pengguna Anda sendiri. Sama sekali tidak lebih. Jika Anda fakeroot
(yang ketika dipanggil memberi Anda shell baru, seperti sudo
akan), berpura-pura melakukan hal-hal yang Anda perlu izin, dan keluar, sama sekali tidak akan terjadi apa-apa.
Kalau dipikir-pikir, itu buang-buang waktu saja. Mengapa Anda melakukan hal-hal yang sebenarnya tidak akan terjadi? Ini gila. Anda bisa saja tidak melakukan apapun dan tidak akan ada perbedaan, karena tidak ada jejaknya.
Tunggu sebentar...
2. Jejak fakeroot
Ada bisa menjadi jejak kiri fakeroot
. Mari kita lihat perintah-perintah dalam jawaban MortenSickel yang cukup bagus dan layak mendapat upvote:
$ fakeroot
# echo "Wow I have root access" > root.tst
# ls -l root.tst
-rw-rw-r-- 1 root root 23 Oct 25 12:13 root.tst
# ls -l /root
ls: cannot open directory /root: Permission denied
# exit
$ ls -l root.tst
-rw-rw-r-- 1 ubuntu ubuntu 23 Oct 25 12:13 root.tst
Pada pandangan pertama, sepertinya menggunakan fakeroot
adalah membuang-buang waktu. Pada akhirnya, jika Anda tidak menggunakannya fakeroot
, Anda akan mendapatkan hal yang sama.
Hal yang halus di sini adalah ini:
$ cat root.tst
Wow I have root access
Yang berarti konten file masih ingat menjadi root. Anda mungkin mengatakan tidak menggunakan fakeroot
akan menghasilkan hasil yang sama. Anda benar, contoh ini terlalu sederhana.
Mari kita ambil contoh lain:
$ fakeroot
# touch x
# touch y
# chown myuser:myuser x
# ls -l > listing
# exit
$ ls -l
total 4
-rw-rw-r-- 1 myuser myuser 152 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 y
$ cat listing
total 0
-rw-rw-r-- 1 root root 0 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 root root 0 Jan 7 21:39 y
Mari kita lihat apa yang terjadi. Saya pura-pura root
, yang sama sekali tidak efektif, dan dibuat x
dan y
. Saya berpura x
- pura menjadi milik myuser
dan y
milik root
. Mereka berdua sebenarnya milik myuser
(seperti yang bisa kita lihat pada akhirnya), tetapi saya hanya berpura - pura menjadi seperti itu.
Kemudian saya membuat daftar dan menyimpan imajinasi saya ke file. Kemudian ketika saya melihat kembali file tersebut, saya bisa melihat siapa yang saya bayangkan file-file itu seharusnya dimiliki. Sekali lagi, mereka tidak benar-benar dimiliki oleh orang yang saya bayangkan, saya hanya membayangkannya saja.
3. Jadi ... Mengapa Anda menginginkannya lagi?
Anda mungkin mengatakan bahwa saya tidak benar-benar perlu memalsukan root untuk membuat cantuman itu. Saya bisa saja membuat daftar, lalu mengeditnya untuk mencerminkan imajinasi saya. Anda benar, Anda tidak perlu fakeroot
melakukannya. Faktanya, mengetahui bahwa fakeroot
sebenarnya tidak melakukan apa-apa, Anda tidak mungkin memperoleh kemampuan apa pun yang sebelumnya tidak Anda miliki.
Tapi , dan ini yang fakeroot
penting, mengedit daftar bisa jadi tidak penting. Seperti halnya dengan paket yang dapat diinstal pada sistem Anda, Anda memiliki tar
ed, gzip
ed, xz
ed, bzip2
ed atau format lain yang menjaga file Anda bersama dan mengingat izin dan pemiliknya. Bisakah Anda dengan mudah memodifikasi file terkompresi dan mengedit kepemilikan file? Saya tidak tahu tentang Anda, tetapi saya tidak bisa memikirkan cara.
Mungkinkah ada alat yang dibangun itu, setelah semuanya dikompresi, ia memodifikasi file yang dikompresi dan secara terprogram mengedit kepemilikan dan izin? Ya ada bisa. Jadi Anda bisa memalsukan kepemilikan sebelum mengompresi, atau mengubahnya setelah. Orang Debian memutuskan yang pertama lebih mudah.
4. Kenapa tidak pakai saja sudo
?
Pertama-tama, Anda tidak perlu hak akses root untuk membangun perangkat lunak dan Anda tidak perlu hak akses root untuk mengompresnya. Jadi jika Anda tidak membutuhkannya, Anda harus benar-benar menjadi pengguna Windows untuk berpikir untuk mendapatkan izin itu. Tapi selain sarkasme, Anda bahkan mungkin tidak memiliki kata sandi root.
Selain itu, katakanlah Anda memiliki izin root. Dan katakanlah Anda ingin berpura-pura bahwa file seharusnya memiliki akses hanya baca ke root. Jadi sudo
, Anda benar-benar mengubah pemilik file dan izin root
, Anda keluar dari shell root dan mencoba untuk mengemas semuanya. Anda gagal karena sekarang Anda tidak dapat membaca file lagi karena Anda tidak memiliki akses root. Jadi, Anda harus sudo
dan kompres dan membangun paket sebagai root. Secara efektif, Anda harus melakukan semuanya sebagai root.
Ini adalah TM Buruk .
Sebagai seorang pembuat paket, Anda tidak perlu izin root dan Anda seharusnya tidak mendapatkannya. Ketika Anda menginstal sebuah paket, Anda mungkin perlu menginstal beberapa file ( A
) sebagai root dan di situlah Anda memerlukan izin root. Yang fakeroot
dilakukan hanyalah membuat ini menjadi mungkin. Ini memungkinkan daftar pemaket yang A
dimiliki oleh root untuk pengarsipan, sehingga ketika paket didekompresi oleh pengguna, pengarsip tersebut meminta izin root dan membuat A
sebagai milik root.
sudo
atausu
karena itu adalah mesin Anda.fakeroot
memiliki dua penggunaan 1) itu membodohi program untuk meyakini bahwa Anda memang pengguna root, yang mungkin memerlukan beberapa perangkat lunak berpemilik yang ditulis dengan buruk bahkan jika tidak diperlukan (biasanya pengembang Windows pergi ke Linux) dan 2) memungkinkan mengemulasi mode file dan perubahan kepemilikan yang tidak Anda inginkan t jika tidak dapat dilakukan, terutama untuk membuattar
file dengan izin dan kepemilikan yang benar, berguna misalnya saat mengemas perangkat lunak.