版權所有 © 2014 tutorialspoint
chroot - 更改根目錄
#include <unistd.h> int chroot(const char *path);
int chroot(const char *path);
chroot() 將根目錄更改為path中指定目錄。此目錄將用於以/開頭的路徑名。根目錄由當前程序的所有子程序繼承。
只有特權程序(Linux:具有CAP_SYS_CHROOT功能的程序)才能呼叫chroot(2)。此呼叫更改路徑名解析過程中的一個組成部分,而不會執行其他操作。
此呼叫不會更改當前工作目錄,因此呼叫後“.”可能位於以“/”為根的樹之外。特別是,超級使用者可以透過執行“mkdir foo; chroot foo; cd ..”來逃脫“chroot監獄”。
此呼叫不會關閉開啟的檔案描述符,並且此類檔案描述符可能允許訪問chroot樹外的檔案。
成功時,返回零。發生錯誤時,返回 -1,並且errno被相應地設定。
根據檔案系統,可能會返回其他錯誤。下面列出了更常見的錯誤
SVr4、4.4BSD、SUSv2(標記為LEGACY)。此函式不是POSIX.1-2001的一部分。
透過fork(2)建立的子程序繼承其父程序的根目錄。根目錄不會被execve(2)更改。
FreeBSD 有一個更強大的jail() 系統呼叫。
chdir (2)
path_resolution (2)
廣告