|
NAMEchroot —
change root directory
LIBRARYStandard C Library (libc, -lc)SYNOPSIS#include <unistd.h>
int
DESCRIPTIONThe dirname argument is the address of the pathname of a directory, terminated by an ASCII NUL. Thechroot ()
system call causes dirname to become the root directory,
that is, the starting point for path searches of pathnames beginning with
‘/ ’.
In order for a directory to become the root directory a process must have execute (search) access for that directory. It should be noted that This call is restricted to the super-user. Depending on the setting of the
‘ If
‘ If
‘ Any other value for
‘ RETURN VALUESUpon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.ERRORSThechroot () system call will fail and the root
directory will be unchanged if:
SEE ALSOchdir(2), jail(2)HISTORYThechroot () system call appeared in
Version 7 AT&T UNIX. It was marked as
“legacy” in Version 2 of the Single UNIX
Specification (“SUSv2”), and was removed in subsequent
standards.
BUGSIf the process is able to change its working directory to the target directory, but another access control check fails (such as a check for open directories, or a MAC check), it is possible that this system call may return an error, with the working directory of the process left changed.SECURITY CONSIDERATIONSThe system have many hardcoded paths to files where it may load after the process starts. It is generally recommended to drop privileges immediately after a successfulchroot call, and restrict write
access to a limited subtree of the chroot root, for
instance, setup the sandbox so that the sandboxed user will have no write
access to any well-known system directories.
For complete isolation from the rest of the system, use jail(2) instead.
Visit the GSP FreeBSD Man Page Interface. |