Vì các câu trả lời rất khó hiểu (với bản thân tôi) và phải mất một số suy nghĩ để hiểu nó ( nhận xét này khiến tôi hiểu nó), tôi sẽ đưa ra một lời giải thích hy vọng tốt hơn.
1. Điều gì xảy ra trong fakeroot
Không có gì nhiều hơn những gì xảy ra với người dùng của riêng bạn. Hoàn toàn không có gì hơn. Nếu bạn fakeroot
(mà khi được gọi cung cấp cho bạn một vỏ mới, như sudo
sẽ), hãy giả vờ làm những thứ mà bạn cần sự cho phép và thoát ra, hoàn toàn không có gì xảy ra.
Nếu bạn nghĩ về nó, nó hoàn toàn lãng phí thời gian. Tại sao bạn sẽ làm những thứ sẽ không thực sự xảy ra? Thật điên rồ. Bạn có thể đơn giản là không làm gì trong số đó và sẽ không có gì khác biệt, vì không có dấu vết nào của nó.
Đợi tí...
2. Dấu vết của fakeroot
Có thể có một dấu vết còn lại của fakeroot
. Chúng ta hãy xem các lệnh trong câu trả lời của MortenSickel khá hay và xứng đáng được nâng cấp:
$ 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
Thoạt nhìn, có vẻ như đã sử dụng fakeroot
là một sự lãng phí hoàn toàn thời gian. Cuối cùng, nếu bạn không sử dụng fakeroot
, bạn sẽ có được điều tương tự.
Điều tinh tế ở đây là đây:
$ cat root.tst
Wow I have root access
Điều đó có nghĩa là nội dung của tệp vẫn còn nhớ là một root. Bạn có thể nói không sử dụng fakeroot
sẽ tạo ra kết quả tương tự. Bạn nói đúng, ví dụ này quá đơn giản.
Hãy lấy một ví dụ khác:
$ 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
Hãy xem những gì đã xảy ra. Tôi giả vờ root
, điều đó hoàn toàn không hiệu quả, và được tạo ra x
và y
. Tôi giả vờ x
thuộc về myuser
và y
thuộc về root
. Cả hai thực sự thuộc về myuser
(như chúng ta có thể thấy cuối cùng), nhưng tôi chỉ giả vờ như vậy.
Sau đó, tôi tạo một danh sách và lưu trí tưởng tượng của tôi vào một tập tin. Sau này khi tôi nhìn lại tập tin, tôi có thể thấy người mà tôi tưởng tượng các tập tin nên được sở hữu. Một lần nữa, chúng không thực sự thuộc sở hữu của những người tôi tưởng tượng, tôi chỉ đơn giản là tưởng tượng điều đó.
3. Vậy ... Tại sao bạn lại muốn điều đó?
Bạn có thể nói rằng tôi không thực sự cần phải giả mạo để tạo danh sách đó. Tôi có thể chỉ cần tạo danh sách, sau đó chỉnh sửa nó để phản ánh trí tưởng tượng của tôi. Bạn nói đúng, bạn không cần fakeroot
điều đó. Trên thực tế, biết rằng fakeroot
thực tế không làm gì cả, bạn không thể có được bất kỳ khả năng nào trước đây bạn không có.
Nhưng , và đây là fakeroot
tất cả những gì về, chỉnh sửa danh sách có thể là không cần thiết. Vì nó là một gói có thể được cài đặt trên hệ thống của bạn, bạn có một định dạng tar
ed, gzip
ed, xz
ed, bzip2
ed hoặc bất kỳ định dạng nào đang giữ các tệp của bạn với nhau và ghi nhớ các quyền và chủ sở hữu của chúng. Bạn có thể dễ dàng sửa đổi tập tin nén và chỉnh sửa quyền sở hữu của một tập tin? Tôi không biết về bạn, nhưng tôi không thể nghĩ ra cách nào.
Có thể có một công cụ được xây dựng rằng, một khi mọi thứ được nén, nó sẽ sửa đổi tệp nén và lập trình chỉnh sửa quyền sở hữu và quyền? Vâng, có thể. Vì vậy, hoặc bạn có thể giả mạo quyền sở hữu trước khi nén hoặc thay đổi chúng sau. Người Debian quyết định cái trước thì dễ hơn.
4. Tại sao không chỉ sử dụng sudo
?
Trước hết, bạn không cần quyền root để xây dựng phần mềm và bạn không cần quyền root để nén chúng. Vì vậy, nếu bạn không cần nó, bạn phải thực sự là một người dùng Windows để nghĩ đến việc có được sự cho phép đó. Nhưng mỉa mai qua một bên, bạn thậm chí có thể không có mật khẩu root.
Bên cạnh đó, giả sử bạn có quyền root. Và giả sử bạn muốn giả vờ rằng một tệp chỉ nên truy cập đọc vào thư mục gốc. Vì vậy, bạn sudo
, thực sự thay đổi chủ sở hữu tệp và quyền thành root
, bạn thoát khỏi root shell và cố gắng đóng gói mọi thứ. Bạn thất bại vì bây giờ bạn không thể đọc tệp nữa vì bạn không có quyền truy cập root. Vì vậy, bạn phải sudo
và nén và xây dựng các gói như root. Hiệu quả, bạn phải làm mọi thứ như root.
Đây là TM xấu .
Là một người đóng gói, bạn không cần quyền root và bạn không nên lấy nó. Khi bạn cài đặt một gói, bạn có thể cần phải cài đặt một số tệp ( A
) dưới dạng root và đó là nơi bạn cần quyền root. Tất cả fakeroot
làm là để làm điều này có thể. Nó cho phép danh sách packager được A
sở hữu bởi root cho trình lưu trữ, để khi gói được giải nén bởi người dùng, trình lưu trữ yêu cầu quyền root và tạo A
như sở hữu của root.
sudo
hoặcsu
vì đó là máy của bạn.fakeroot
có hai cách sử dụng 1) nó lừa các chương trình tin rằng bạn thực sự là người dùng root, điều mà một số phần mềm độc quyền được viết xấu có thể yêu cầu ngay cả khi không cần thiết (thường là nhà phát triển Windows đã chạy Linux) và 2) nó cho phép mô phỏng chế độ tệp và thay đổi quyền sở hữu mà bạn sẽ không Mặt khác, có thể làm, chủ yếu là tạo mộttar
tệp có quyền và quyền sở hữu chính xác, ví dụ hữu ích khi đóng gói phần mềm.