fakeroot與sudo的區別

2021-09-07 01:52:34 字數 1776 閱讀 1540

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不能獲得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

sudo 與輸出重定向

本文介紹如何使用 sudo 將輸出重定向到當前使用者沒有許可權的檔案。注意 本文中 demo 的演示環境為 ubuntu 18.04。如果當前使用者沒有某個檔案的寫許可權,又要通過輸出重定向往該檔案中寫入內容。結果只能是 permission denied 比如當前使用者為 nick,下面的命令檢視...

Linux中sudo與su的區別

sudo意思就是super user do,sudo root是讓當前使用者暫時切換到超級使用者模式以執行超級使用者許可權,提示輸入密碼時該密碼為當前使用者的密碼,而不是超級賬戶的密碼。sudo預設的身份為root,在 etc sudoers中設定了可執行sudo指令的使用者,若未經授權的使用者企圖...

sudo 命令與許可權配置講解

sudo命令用來以其他身份來執行命令,預設的身份為root。在 etc sudoers中設定了可執行sudo指令的使用者。若其未經授權的使用者企圖使用sudo,則會發出警告的郵件給管理員。使用者使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。sudo命令的配置檔案...