src/script.c: save errno value on error in launch_script
[vlock.git] / SECURITY
blob4b7cb9e0be5fd8705c8ed110294989ca08ecb1c8
1 OVERVIEW
2 ========
4 vlock is a denial of service tool.  Linux allows any user logged into the
5 virtual console to lock the system completely.  vlock takes this one step
6 further and potenially grants this ability (and potentially other, even more
7 hazardous ones) to any user through the use of plugins.
9 The default installation sets permission that allow only users in the root
10 group (or wheel on FreeBSD) to run dangerous modules and therefore prefers
11 security over usability.  To override this you may set the VLOCK_GROUP variable
12 while installing vlock like so::
14   make VLOCK_GROUP=vlock install
16 This way only members of the vlock group will be able to use potentially
17 dangerous modules.  Others will still be able to lock their own console or
18 terminal and run plugins that are considered secure.
20 DETAILS
21 =======
23 vlock-main allows plugins to extend its functionality.  These plugins a
24 separated into two groups:  modules and scripts.  Both are only loaded from
25 locations that are specified at compile time.  It is extremely important that
26 these directories are only writable by privileged users.
28 MODULES
29 -------
31 Modules are shared objects that are loaded into vlock's address space.  Because
32 vlock will most likely be installed setuid-root care must be taken that these
33 modules are secure themselves and that access to potentially dangerous modules
34 is limited to trusted users.  UNDER NO CIRCUMSTANCES MUST UNPRIVILEGED USERS BE
35 ALLOWED TO PUT THEIR OWN MODULES INTO VLOCK'S MODULE DIRECTORY.  Doing this
36 would allowing them to run any code they want with elevated privileges, i.e.
37 as root.
39 SCRIPTS
40 -------
42 Scripts may be any kind of executables located in vlock's script directory.
43 They are run with with lowered privileges, i.e. the same as the user who
44 started vlock, in a separate process.  They also don't have direct access to
45 the terminal vlock runs on and thus may be considered a relatively secure
46 alternative to modules.  For any privileged operations they want to perform
47 they have to use helpers such as sudo or (not recommended) be setuid binaries
48 themselves.  Although less dangerous as modules vlock's script directory must
49 also be protected to prevent stealing privileges from other users.