(自分にとって)答えを理解するのは難しく、それを理解するのにいくらかの考えが必要だったので(このコメントは私を理解させてくれました)、うまくいけばもっと良い説明をします。
1. fakerootで何が起こるか
あなた自身のユーザーに何が起こるか以上です。絶対に何もない。もしfakeroot
(呼び出されたときに新しいシェルを提供するようsudo
に)あなたが許可を必要とするものをするふりをして、終了した場合、絶対に何も起こりません。
考えてみれば、それは時間の無駄です。実際には起こらないことをするのはなぜですか?それは非常識です。あなたは単にそれのどれもしなかったかもしれません、そして、それの痕跡がないので、違いがなかっただろう。
ちょっと待って...
2. fakerootのトレース
の痕跡が残っている可能性がありfakeroot
ます。MortenSickelの回答にあるコマンドを見てみましょう。これは非常に素晴らしく、賛成に値します。
$ 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
一見したところ、使用しfakeroot
たことは時間の無駄でした。結局、を使用していなかった場合fakeroot
は、同じものが得られます。
ここで微妙なことはこれです:
$ cat root.tst
Wow I have root access
つまり、ファイルのコンテンツはルートであることをまだ覚えています。使用しないとfakeroot
同じ結果になると言うかもしれません。あなたは正しい、この例は単純すぎます。
別の例を見てみましょう。
$ 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
何が起きたのか見てみましょう。私はあることをふりをroot
完全に無効であると、作成したx
とy
。私はふりx
に属することmyuser
とy
に属していますroot
。彼らは実際には両方に属しますmyuser
(最終的に見ることができます)が、私はそれをそのように見せかけました。
次に、リストを作成し、想像力をファイルに保存しました。後でファイルを振り返ると、ファイルの所有者を想像できます。繰り返しますが、彼らは私が想像した人々によって実際に所有されているのではなく、私は単にそれを想像しました。
3.だから...なぜあなたは再びそれが欲しいのですか?
そのリストを作成するために、私が本当にrootであることを偽造する必要はなかったと言うかもしれません。リストを作成してから、想像力を反映するように編集することもできます。あなたは正しい、あなたはfakeroot
その必要はありませんでした。実際、それfakeroot
が実際には何もしないことを知っていれば、以前は持っていなかった能力を獲得することはできません。
しかし、これがfakeroot
すべてです。リストの編集は簡単ではありません。システムにインストールできるパッケージの場合と同様に、tar
ed、gzip
ed、xz
ed、bzip2
ed、またはファイルをまとめてそれらの許可と所有者を記憶しているその他の形式があります。圧縮ファイルを簡単に変更し、ファイルの所有権を編集できますか?私はあなたのことは知りませんが、方法を考えることはできません。
すべてが圧縮されると、圧縮ファイルを変更し、所有権とアクセス許可をプログラムで編集するツールを構築できますか?はい、できます。したがって、圧縮する前に所有権を偽造するか、後で変更することができます。Debianの人々は、前者のほうが簡単だと判断しました。
4.なぜ単に使用しないのsudo
ですか?
まず第一に、ソフトウェアを構築するのにルート権限は必要なく、それらを圧縮するのにルート権限は必要ありません。そのため、必要ない場合は、そのアクセス許可を取得することを考えるために、実際にWindowsユーザーである必要があります。しかし、皮肉なことに、rootパスワードさえ持っていないかもしれません。
また、root権限を持っているとしましょう。そして、ファイルにはルートへの読み取りアクセス権のみが必要であると仮定します。したがってsudo
、実際にファイルの所有者とアクセス権をに変更するとroot
、ルートシェルから抜け出し、すべてをパッケージ化しようとします。ルートアクセス権がないため、ファイルを読み取ることができないため、失敗します。したがってsudo
、ルートとしてパッケージを圧縮およびビルドする必要があります。事実上、ルートとしてすべてを行う必要があります。
これはBad TMです。
パッケージャーとして、ルート権限は必要ありませんし、取得するべきではありません。パッケージをインストールするときA
、rootとしてファイル()をインストールする必要がある場合があり、そこにroot権限が必要です。すべてfakeroot
はこれを可能にすることです。パッケージャA
がアーカイバのルート所有者としてリストできるため、パッケージがユーザーによって解凍されると、アーカイバはルート権限を要求A
し、ルート所有者として作成します。
sudo
か、su
それはあなたのマシンですので。fakeroot
2つの使用法があります1)あなたが本当にrootユーザーであると信じ込ませるようにプログラムを欺きます。それ以外の場合は、主にtar
正しい許可と所有権を持つファイルを作成することができます。これは、ソフトウェアのパッケージ化などに役立ちます。