版权所有 © 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)
广告