1 Why an applet can't be NOFORK or NOEXEC?
4 daemon: runs indefinitely
5 interactive: may wait for user input, ^C has to work
6 spawner: "tool PROG ARGS" which changes program's environment - must fork
7 changes state: e.g. environment, signal handlers
8 runner: sometimes may run for long time, and/or works with network:
9 ^C has to work (cat BIGFILE, chmod -R, ftpget, nc)
11 "runners" can become eligible after hush is taught ^C to interrupt NOFORKs!
14 suid: runs under different uid - must fork+exec
16 Why shouldn't be NOFORK/NOEXEC:
17 complex: no immediately obvious reason why NOFORK wouldn't work,
18 but does some non-obvoius operations (example: fuser, lsof, losetup).
19 for NOFORK, nested xmallocs (typical in complex code) is a problem.
20 rare: not used often enough to bother optimizing (example: poweroff)
51 chgrp - noexec, runner
52 chmod - noexec, runner
53 chown - noexec, runner
54 chpasswd - runner (list of "user:password"s from stdin)
59 cksum - noexec, runner
72 dc - runner (eats stdin if no params)
86 dos2unix - noexec, runner
95 env - noexec, changes state (env)
100 factor - runner (eats stdin if no params)
105 fbsplash - runner, interactive
111 find - noexec, runner
118 fold - noexec, runner
138 hdparm - complex, rare
139 head - noexec, runner
140 hexdump - noexec, runner
186 login - suid, interactive
205 man - spawner, interactive
206 md5sum - noexec, runner
209 microcom - interactive, complex
243 paste - noexec, runner
255 powertop - interactive
273 reset - spawner (execs "stty")
276 rm - noexec, rm -i interactive
282 rtcwake - complex, rare
303 sha1sum - noexec, runner
304 sha256sum - noexec, runner
305 sha3sum - noexec, runner
306 sha512sum - noexec, runner
307 showkey - interactive
309 shuf - noexec, runner
314 sort - noexec, runner
329 switch_root - spawner, rare, change state
344 time - spawner, change state (signals)
345 timeout - spawner, change state (signals)
349 traceroute - suid, runner
350 traceroute6 - suid, runner
373 unix2dos - noexec, runner
398 xargs - noexec, spawner