aboutsummaryrefslogtreecommitdiffstats
path: root/guts/README
diff options
context:
space:
mode:
authorPeter Seebach <seebs@eee12.(none)>2010-03-24 19:31:58 -0500
committerPeter Seebach <seebs@eee12.(none)>2010-03-25 16:43:13 -0500
commit2c389272304f2710b317f185c6fb057458bc9027 (patch)
treeee35ad5102fc6a17f284c693c19a3a028a3114ea /guts/README
parent4b555b46b36ccd50a1130238e02a2e2d41b50366 (diff)
downloadpseudo-2c389272304f2710b317f185c6fb057458bc9027.tar.gz
pseudo-2c389272304f2710b317f185c6fb057458bc9027.tar.bz2
pseudo-2c389272304f2710b317f185c6fb057458bc9027.zip
initial chroot() support
Add chroot() and a large number of things needed to make it work. The list of intercepted calls is large but not exhaustive.
Diffstat (limited to 'guts/README')
-rw-r--r--guts/README93
1 files changed, 71 insertions, 22 deletions
diff --git a/guts/README b/guts/README
index be00d30..277f712 100644
--- a/guts/README
+++ b/guts/README
@@ -28,26 +28,32 @@ some difference -- the structure they manipulate is not the same.
The following table shows which functions are merely wrappers around
other functions:
- chmod: fchmodat
- chown: fchownat
- creat64: openat
- creat: openat
- __fxstatat: __fxstatat64
- __fxstat: __fxstat64
- __lxstat64: __fxstatat64
- __lxstat: __fxstatat
- mkdir: mkdirat
- open64: openat
- __openat_2: openat
- __openat64_2: openat
- openat64: openat
- open: openat
- rename: renameat
- symlink: symlinkat
- unlink: unlinkat
- __xmknod: __xmknodat
- __xstat64: __fxstatat64
- __xstat: __fxstatat
+ canonicalize_file_name: realpath
+ chmod: fchmodat
+ chown: fchownat
+ creat64: openat
+ creat: openat
+ __fxstatat: __fxstatat64
+ __fxstat: __fxstat64
+ get_current_dir_name: getcwd
+ getwd: getcwd
+ __lxstat64: __fxstatat64
+ __lxstat: __fxstatat
+ mkdir: mkdirat
+ mkfifoat: __xmknodat
+ mkfifo: mkfifoat
+ open64: openat
+ __openat_2: openat
+ __openat64_2: openat
+ openat64: openat
+ open: openat
+ remove: unlink or rmdir
+ rename: renameat
+ symlink: symlinkat
+ unlink: unlinkat
+ __xmknod: __xmknodat
+ __xstat64: __fxstatat64
+ __xstat: __fxstatat
The following functions are full implementations:
@@ -59,10 +65,10 @@ The following functions are full implementations:
fchownat
__fxstat64
__fxstatat64
+ getcwd
lchown
mkdirat
openat
- renameat
rmdir
symlinkat
unlinkat
@@ -71,7 +77,7 @@ The following functions are full implementations:
The following functions provide only partial implementations, to trap special
cases, to track internal data structures (for instance, close() is tracked so
that the path to a file descriptor can be dropped when the file descriptor
-is closed), or to handle functions which may not use the underlying syscall
+is closed), or to handle functions which may not use the underlying syscall
wrappers:
close
@@ -81,6 +87,7 @@ wrappers:
fopen
fopen64
freopen
+ freopen64
mkstemp
fcntl
fork
@@ -107,3 +114,45 @@ but are used to simulate the permissions system:
getresuid
setfsuid
setresuid
+
+The following functions are present only to allow filename mangling
+for chroot(2) implementation. Most of them have no logic beyond
+calling the underlying routine.
+
+ access
+ acct
+ chroot
+ eaccess
+ euidaccess
+ fts_open
+ ftw64
+ ftw
+ glob64
+ glob
+ lutimes
+ mkdtemp
+ mktemp
+ nftw64
+ nftw
+ opendir
+ pathconf
+ readlinkat
+ readlink
+ realpath
+ scandir64
+ scandir
+ truncate64
+ truncate
+ utime
+ utimes
+
+The following functions are unimplemented. renameat could be done now (it
+would have been hard previously due to file name mangling issues), but
+since it's never come up, we haven't done it. The tempnam() functions are
+fairly hard to get right, and perhaps more imporantly, extremely
+dangerous. Since there's no evidence that they're in use anymore, I've
+dummied them out:
+
+ renameat
+ tempnam
+ tmpnam