chroot 子例程
用途
更改有效根目录。
库
标准 C 库 (libc.a)
语法
#include <unistd.h> int chroot (const char * Path)
char *Path;
char *Path;
描述
chroot 子例程使由 Path 参数指定的目录成为有效的根目录。 如果 Path 参数引用符号链接,那么 chroot 子例程会将有效根目录设置为符号链接指向的目录。 如果系统上安装了网络文件系统 (NFS) ,那么此路径可以跨入另一个节点。
有效根目录是搜索以/(斜杠) 开头的文件路径名时的起始点。 当前目录不受 chroot 子例程影响。
调用进程必须具有 root 用户权限才能更改有效的根目录。 调用进程还必须对新的有效根目录具有搜索访问权。
那 ... (双句点) 有效根目录中的条目被解释为表示有效根目录本身。 因此,不能使用此目录来访问根植于有效根目录的子树外部的文件。
参数
| 项 | 描述 |
|---|---|
| 路径 | 指向新的有效根目录的指针。 |
返回值
成功完成后,将返回值 0。 否则,返回值为-1,并设置errno全局变量来指示错误。
错误代码
chroot 子例程失败,如果下列一项或多项为 true ,那么有效根目录保持不变:
| 项 | 描述 |
|---|---|
| ENOENT | 指定的目录不存在。 |
| EACCES | 指定的目录拒绝搜索访问。 |
| EPERM | 该进程没有 root 用户权限。 |
由于其他原因, chroot 子例程可能不成功。 请参阅需要路径名解析的 附录 A. 服务的基本操作系统错误代码 ,以获取其他错误的列表。
如果 NFS 安装在系统上,那么如果以下情况成立,那么 chroot 子例程也可能失败:
| 项 | 描述 |
|---|---|
| ETIMEDOUT | 连接超时。 |