aboutsummaryrefslogtreecommitdiffstats
path: root/pseudo.1
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2011-10-26 16:51:34 -0500
committerPeter Seebach <peter.seebach@windriver.com>2011-11-02 13:31:41 -0500
commit6177474388f243c9ff783da074a531ef8fd173fd (patch)
tree8f3df61d79586d6a737e08d4a12f25b606871b5e /pseudo.1
parent4a646c8bbe73ca830cb8c2e80be4b457d925cdd4 (diff)
downloadpseudo-6177474388f243c9ff783da074a531ef8fd173fd.tar.gz
pseudo-6177474388f243c9ff783da074a531ef8fd173fd.tar.bz2
pseudo-6177474388f243c9ff783da074a531ef8fd173fd.zip
Implement PSEUDO_UNLOAD, replacing existing PSEUDO_RELOADED semantics.
Change from internal PSEUDO_RELOADED to external PSEUDO_UNLOAD environment variable. Enable external programs to have a safe and reliable way to unload pseudo on the next exec*. PSEUDO_UNLOAD also will disable pseudo if we're in a fork/clone situation in the same way PSEUDO_DISABLED=1 would. Rename the PSEUDO_DISABLED tests, and create a similar set for the new PSEUDO_UNLOAD. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Diffstat (limited to 'pseudo.1')
-rw-r--r--pseudo.139
1 files changed, 28 insertions, 11 deletions
diff --git a/pseudo.1 b/pseudo.1
index aa32bbe..d2309ff 100644
--- a/pseudo.1
+++ b/pseudo.1
@@ -408,8 +408,9 @@ client library does not modify the behavior of called functions, though it
continues to intercept them and block signals while processing them. This
variable is reevaluated on every call to
.IR fork(2) ,\ clone(2)
-or related functions. If the value starts with a lowercase or uppercase s,
-the pseudo client disables all server spawning and communications, but still
+or related functions. If the value starts with a lowercase or uppercase
+.I s
+, the pseudo client disables all server spawning and communications, but still
operates locally. This means that no filesystem mode or permissions changes
are actually recorded or reported, but functions like
.I chown()
@@ -506,15 +507,6 @@ This variable is automatically set by the
.I pseudo
program when it is used as a launcher.
.TP 8
-.B PSEUDO_RELOADED
-This purely internal variable is used to track state while trying
-to re-execute to get rid of the
-.B LD_PRELOAD
-value when spawning a server. (The
-.I pseudo
-server itself cannot function running in the
-.I pseudo environment.)
-.TP 8
.B PSEUDO_TAG
If this variable is set in a client's environment, its value is
communicated to the server at the beginning of each client session,
@@ -526,6 +518,24 @@ associated with them; the tag value is per-client, not per-server.
These variables are used internally to pass information about the current
emulated user and group identity from one process to another.
.TP 8
+.B PSEUDO_UNLOAD
+This variable is reevaluated on every call to
+.IR fork(2) ,\ exec(3)
+or related functions. If the variable exists
+.RI libpseudo.so
+will be removed from
+.B LD_PRELOAD
+and
+.B PSEUDO_DISABLED
+behavior will also be triggered. For processes
+that simply
+.IR fork(2),
+the behavior will be the same as if
+.B PSEUDO_DISABLED
+was set. For new processes, after a call to
+.IR exec(3)\ or\ system(3)
+pseudo will not be loaded in the new process.
+.TP 8
.B SHELL
If set, this will be used when
.I pseudo
@@ -566,6 +576,13 @@ than it is otherwise. This is probably because nearly every operation
communication with the server, and probably some kind of database
activity.
+The
+.IR clone(2)
+wrapper unconditionallity restores the system environment. It also invokes
+the checks to see if the user has requested pseudo to be disabled or unloaded.
+Due to the semantics of clone, this causes both the parent and child processes
+to be disabled or unloaded.
+
.SH SEE ALSO
fakeroot(1), ld.so(8), pseudolog(1), sqlite3(1)
.SH FURTHER READING