fakeroot

辭彙簡介,區別比較,示例,

辭彙簡介

fakeroot 可以用來模擬 root 許可權,以便建立特定許可權與檔案擁有者的壓縮檔案案(tar, ar, .deb 等)。透過 LD_PRELOAD 的 dynamic loader 功能,用戶不必實際擁有 root 許可權。fakeroot最初是為了創建debian包使用的。
例如Debian在生成package的時候,編譯完之後,不能立刻在當前環境執行make install,需要執行make install DESTDIR=$(pwd)/debian/tmp把生成的檔案安裝到build目錄的裡面$(pwd)/debian/tmp。然後使用那個目錄裡面的全部內容生成Debian包(實際上包裡面還會包含control和maintainer script等)。這個包裡面的檔案所有者必須是root,所以需要以root來執行打包命令。但是應該避免在製作Debian包的時候使用root許可權。為了解決這個矛盾,fakeroot被開發出來了。在fakeroot環境中,操作檔案就像使用root操作檔案一樣。但是,實際上系統中檔案的許可權還是原來的許可權。這個包裡面的檔案所有者必須是root,所以需要以root來執行打包命令。

區別比較

fakeroot與sudo的區別
fakeroot不能獲得root的許可權,sudo可以。
fakeroot只是偽裝成root,它不能改變需要root許可權才能改變的檔案,它只是讓程式執行時按照有root許可權的情況來運行,而對檔案的操作實際上是在普通用戶下進行的。
1
2
fakeroot tar cvf /tmp/local.tar /usr/local
sudo tar cvf /tmp/local.tar /usr/local
上面兩條命令都會在/tmp下建立local.tar,tar內的檔案名稱都會以/開頭,但前一條命令生成的檔案屬於當前用戶,後一條命令生成的檔案是root的。

示例

fakeroot 透過 faked 紀錄每個檔案許可權。
以下的範例是由 fakeroot 執行 bash,並特定指令你可以注意到使用的指令必須擁有超級使用者許可權才可正確執行。而這些許可權都是暫時由 fakeroot 仿真並紀錄。註銷 bash 後,所有的檔案依然保持原有許可權。
$ whoami
joost
$ fakeroot /bin/bash
# whoami
root
# mknod hda3 b 3 1
# ls -ld hda3
brw-r--r-- 1 root root 3, 1 Jul 2 22:58 hda3
# chown joost:root hda3
# ls -ld hda3
brw-r--r-- 1 joost root 3, 1 Jul 2 22:58 hda3
# ls -ld /
drwxr-xr-x 20 root root 1024 Jun 17 21:50 /
# chown joost:users /
# chmod a+w /
# ls -ld /
drwxr-xr-x 20 root root 1024 Jun 17 21:50 /
# chown joost:users /
# chmod a+w /
# ls -ld /
drwxrwxrwx 20 joost users 1024 Jun 17 21:50 /
# exit
$ ls -ld /
drwxr-xr-x 20 root root 1024 Jun 17 21:50 //
$ ls -ld hda3
-rw-r--r-- 1 joost users 0 Jul 2 22:58 hda3

相關詞條

熱門詞條

聯絡我們