Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 1 | Why an applet can't be NOFORK or NOEXEC? |
| 2 | |
| 3 | Why can't be NOFORK: |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 4 | interactive: may wait for user input, ^C has to work |
Denys Vlasenko | 7f9d62d | 2017-08-04 16:01:39 +0200 | [diff] [blame] | 5 | spawner: "tool PROG ARGS" which changes program state and execs - must fork |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 6 | changes state: e.g. environment, signal handlers |
Denys Vlasenko | 7f9d62d | 2017-08-04 16:01:39 +0200 | [diff] [blame] | 7 | leaks: does not free allocated memory or opened fds |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 8 | alloc+xfunc: xmalloc, then xfunc - leaks memory if xfunc dies |
| 9 | open+xfunc: opens fd, then calls xfunc - fd is leaked if xfunc dies |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 10 | runner: sometimes may run for long(ish) time, and/or works with network: |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 11 | ^C has to work (cat BIGFILE, chmod -R, ftpget, nc) |
| 12 | |
Denys Vlasenko | 7f9d62d | 2017-08-04 16:01:39 +0200 | [diff] [blame] | 13 | "runners" can become eligible after shell is taught ^C to interrupt NOFORKs, |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 14 | need to be inspected that they do not fall into alloc+xfunc, open+xfunc, |
| 15 | leak categories. |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 16 | |
| 17 | Why can't be NOEXEC: |
| 18 | suid: runs under different uid - must fork+exec |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 19 | if it's important that /proc/PID/cmdline and comm are correct. |
| 20 | ("pkill sh" killing itself before it kills real "sh" is no fun) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 21 | |
| 22 | Why shouldn't be NOFORK/NOEXEC: |
Denys Vlasenko | 7f9d62d | 2017-08-04 16:01:39 +0200 | [diff] [blame] | 23 | rare: not started often enough to bother optimizing (example: poweroff) |
| 24 | daemon: runs indefinitely; these are also always fit "rare" category |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 25 | longterm: often runs for a long time (many seconds), execing makes |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 26 | memory footprint smaller |
Denys Vlasenko | 7f9d62d | 2017-08-04 16:01:39 +0200 | [diff] [blame] | 27 | complex: no immediately obvious reason why NOFORK wouldn't work, |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 28 | but does some non-obvoius operations (example: fuser, lsof, losetup); |
| 29 | detailed audit often turns out that it's a leaker |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 30 | hardware: performs unusual hardware ops which may take long, |
| 31 | or even hang due to hardware or firmware bugs |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 32 | |
| 33 | Interesting example of "interactive" applet which is nevertheless can be |
| 34 | (and is) NOEXEC is "rm". Yes, "rm -i" is interactive - but it's not that typical |
| 35 | for users to keep it waiting for many minutes, whereas running "rm" in shell |
| 36 | is very typical, and speeding up this common use via NOEXEC is useful. |
| 37 | IOW: rm is "interactive", but not "longterm". |
| 38 | |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 39 | |
| 40 | [ - NOFORK |
| 41 | [[ - NOFORK |
| 42 | acpid - daemon |
Denys Vlasenko | 7b8372b | 2017-08-07 00:28:15 +0200 | [diff] [blame] | 43 | add-shell - noexec. leaks: open+xfunc |
| 44 | addgroup - noexec. leaks |
| 45 | adduser - noexec. leaks |
Denys Vlasenko | ed7d118 | 2017-08-06 20:00:21 +0200 | [diff] [blame] | 46 | adjtimex - NOFORK |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 47 | ar - runner |
| 48 | arch - NOFORK |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 49 | arp - runner, needs ^C: arp -n talks to DNS servers |
| 50 | arping - longterm |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 51 | ash - interactive, longterm |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 52 | awk - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 53 | base64 - runner |
| 54 | basename - NOFORK |
Denys Vlasenko | 035e715 | 2017-08-06 20:39:27 +0200 | [diff] [blame] | 55 | beep - longterm: beep -r 999999999 |
Denys Vlasenko | 277081e | 2017-08-06 20:20:47 +0200 | [diff] [blame] | 56 | blkdiscard - noexec. leaks: open+xioctl |
Denys Vlasenko | bf18239 | 2017-08-06 20:16:28 +0200 | [diff] [blame] | 57 | blkid - noexec |
Denys Vlasenko | 9f59849 | 2017-08-05 01:29:12 +0200 | [diff] [blame] | 58 | blockdev - noexec. leaks fd |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 59 | bootchartd - daemon |
Denys Vlasenko | 86e07f6 | 2017-08-06 20:14:02 +0200 | [diff] [blame] | 60 | brctl - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 61 | bunzip2 - runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 62 | bzcat - runner |
| 63 | bzip2 - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 64 | cal - runner: cal -n9999 |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 65 | cat - runner |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 66 | chat - needs ^C to work |
Denys Vlasenko | 99125c0 | 2017-08-05 20:38:04 +0200 | [diff] [blame] | 67 | chattr - noexec. runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 68 | chgrp - noexec. runner |
| 69 | chmod - noexec. runner |
| 70 | chown - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 71 | chpasswd - runner (list of "user:password"s from stdin) |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 72 | chpst - noexec. spawner |
| 73 | chroot - noexec. spawner |
| 74 | chrt - noexec. spawner |
Denys Vlasenko | ff53bee | 2017-08-05 02:02:31 +0200 | [diff] [blame] | 75 | chvt - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 76 | cksum - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 77 | clear - NOFORK |
| 78 | cmp - runner |
| 79 | comm - runner |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 80 | conspy - interactive, longterm |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 81 | cp - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 82 | cpio - runner |
| 83 | crond - daemon |
Denys Vlasenko | 2262746 | 2017-08-06 17:14:09 +0200 | [diff] [blame] | 84 | crontab - longterm (runs $EDITOR), leaks: open+xasprintf |
Denys Vlasenko | feb79e8 | 2017-08-05 02:08:23 +0200 | [diff] [blame] | 85 | cryptpw - noexec. changes state: with --password-fd=N, moves N to stdin |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 86 | cttyhack - noexec. spawner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 87 | cut - noexec. runner |
| 88 | date - noexec. nofork candidate(needs to stop messing up env, free xasprintf result, not use xfuncs after xasprintf) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 89 | dc - runner (eats stdin if no params) |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 90 | dd - noexec. runner |
Denys Vlasenko | ff53bee | 2017-08-05 02:02:31 +0200 | [diff] [blame] | 91 | deallocvt - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds |
Denys Vlasenko | 7b8372b | 2017-08-07 00:28:15 +0200 | [diff] [blame] | 92 | delgroup - noexec. leaks |
| 93 | deluser - noexec. leaks |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 94 | depmod - longterm(ish) |
Denys Vlasenko | fc9efcb | 2017-08-07 22:19:17 +0200 | [diff] [blame] | 95 | devmem - hardware (access to device memory may hang) |
| 96 | df - noexec. leaks: nested allocs |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 97 | dhcprelay - daemon |
| 98 | diff - runner |
| 99 | dirname - NOFORK |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 100 | dmesg - runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 101 | dnsd - daemon |
Denys Vlasenko | ed4393b | 2017-08-07 20:34:26 +0200 | [diff] [blame] | 102 | dnsdomainname - noexec. needs ^C (may talk to DNS servers, which may be down) |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 103 | dos2unix - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 104 | dpkg - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 105 | du - runner |
Denys Vlasenko | ff53bee | 2017-08-05 02:02:31 +0200 | [diff] [blame] | 106 | dumpkmap - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds |
Denys Vlasenko | 6514785 | 2017-08-04 19:16:01 +0200 | [diff] [blame] | 107 | dumpleases - leaks: open+xread |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 108 | echo - NOFORK |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 109 | ed - interactive, longterm |
| 110 | egrep - longterm runner ("CMD | egrep ..." may run indefinitely, better to exec to conserve memory) |
Denys Vlasenko | af5d008 | 2017-08-07 23:23:18 +0200 | [diff] [blame^] | 111 | eject - hardware, leaks: open+ioctl_or_perror_and_die, changes state (moves fds) |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 112 | env - noexec. spawner, changes state (env) |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 113 | envdir - noexec. spawner |
| 114 | envuidgid - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 115 | expand - runner |
Denys Vlasenko | af5d008 | 2017-08-07 23:23:18 +0200 | [diff] [blame^] | 116 | expr - noexec. leaks: nested allocs |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 117 | factor - runner (eats stdin if no params) |
| 118 | fakeidentd - daemon |
| 119 | false - NOFORK |
Denys Vlasenko | 354b104 | 2017-08-07 22:21:54 +0200 | [diff] [blame] | 120 | fatattr - noexec. leaks: open+xioctl, complex |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 121 | fbset - hardware, leaks: open+xfunc |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 122 | fbsplash - runner, longterm |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 123 | fdflush - hardware, leaks: open+ioctl_or_perror_and_die |
| 124 | fdformat - hardware, needs ^C (floppy may be unresponsive), longterm |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 125 | fdisk - interactive, longterm |
Denys Vlasenko | ff53bee | 2017-08-05 02:02:31 +0200 | [diff] [blame] | 126 | fgconsole - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 127 | fgrep - longterm runner ("CMD | fgrep ..." may run indefinitely, better to exec to conserve memory) |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 128 | find - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 129 | findfs - suid |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 130 | flash_eraseall - hardware |
| 131 | flash_lock - hardware |
| 132 | flash_unlock - hardware |
| 133 | flashcp - hardware |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 134 | flock - spawner, changes state (file locks), let's play safe and not be noexec |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 135 | fold - noexec. runner |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 136 | free - noexec. nofork candidate(struct globals, needs to close /proc/meminfo fd) |
Denys Vlasenko | ec98e3a | 2017-08-07 23:17:14 +0200 | [diff] [blame] | 137 | freeramdisk - noexec. leaks: open+ioctl_or_perror_and_die |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 138 | fsck - interactive, longterm |
Denys Vlasenko | 6514785 | 2017-08-04 19:16:01 +0200 | [diff] [blame] | 139 | fsck.minix - needs ^C |
Denys Vlasenko | 9f59849 | 2017-08-05 01:29:12 +0200 | [diff] [blame] | 140 | fsfreeze - noexec. leaks: open+xioctl |
| 141 | fstrim - noexec. leaks: open+xioctl, find_block_device -> readdir+xstrdup |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 142 | fsync - NOFORK |
| 143 | ftpd - daemon |
| 144 | ftpget - runner |
| 145 | ftpput - runner |
| 146 | fuser - complex |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 147 | getopt - noexec. leaks: many allocs |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 148 | getty - interactive, longterm |
| 149 | grep - longterm runner ("CMD | grep ..." may run indefinitely, better to exec to conserve memory) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 150 | groups - noexec |
| 151 | gunzip - runner |
| 152 | gzip - runner |
| 153 | halt - rare |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 154 | hd - noexec. runner |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 155 | hdparm - hardware |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 156 | head - noexec. runner |
| 157 | hexdump - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 158 | hostid - NOFORK |
Denys Vlasenko | ed4393b | 2017-08-07 20:34:26 +0200 | [diff] [blame] | 159 | hostname - noexec. needs ^C (may talk to DNS servers, which may be down) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 160 | httpd - daemon |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 161 | hush - interactive, longterm |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 162 | hwclock - hardware (xioctl(RTC_RD_TIME)) |
| 163 | i2cdetect - hardware |
| 164 | i2cdump - hardware |
| 165 | i2cget - hardware |
| 166 | i2cset - hardware |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 167 | id - noexec |
Denys Vlasenko | ae84418 | 2017-08-07 23:14:49 +0200 | [diff] [blame] | 168 | ifconfig - hardware? (mem_start NN io_addr NN irq NN), leaks: xsocket+ioctl_or_perror_and_die |
| 169 | ifenslave - noexec. leaks: xsocket+bb_perror_msg_and_die |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 170 | ifplugd - daemon |
| 171 | inetd - daemon |
| 172 | init - daemon |
| 173 | inotifyd - daemon |
Denys Vlasenko | 3346b4a | 2017-08-04 02:56:39 +0200 | [diff] [blame] | 174 | insmod - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 175 | install - runner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 176 | ionice - noexec. spawner |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 177 | iostat - longterm: "iostat 1" runs indefinitely |
Denys Vlasenko | 72d725d | 2017-08-03 19:30:21 +0200 | [diff] [blame] | 178 | ip - noexec candidate |
| 179 | ipaddr - noexec candidate |
| 180 | ipcalc - noexec candidate |
| 181 | ipcrm - noexec candidate |
| 182 | ipcs - noexec candidate |
| 183 | iplink - noexec candidate |
| 184 | ipneigh - noexec candidate |
| 185 | iproute - noexec candidate |
| 186 | iprule - noexec candidate |
| 187 | iptunnel - noexec candidate |
Denys Vlasenko | 9a58cc0 | 2017-08-06 12:28:00 +0200 | [diff] [blame] | 188 | kbd_mode - noexec. leaks: xopen_nonblocking+xioctl |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 189 | kill - NOFORK |
| 190 | killall - NOFORK |
| 191 | killall5 - NOFORK |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 192 | klogd - daemon |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 193 | last - runner (I've got 1300 lines of output when tried it) |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 194 | less - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 195 | link - NOFORK |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 196 | linux32 - noexec. spawner |
| 197 | linux64 - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 198 | linuxrc - daemon |
| 199 | ln - noexec |
Denys Vlasenko | 1b280e4 | 2017-08-06 19:05:45 +0200 | [diff] [blame] | 200 | loadfont - noexec. leaks: config_open+bb_error_msg_and_die("map format") |
Denys Vlasenko | ff53bee | 2017-08-05 02:02:31 +0200 | [diff] [blame] | 201 | loadkmap - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 202 | logger - runner |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 203 | login - suid, interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 204 | logname - NOFORK |
Denys Vlasenko | ae84418 | 2017-08-07 23:14:49 +0200 | [diff] [blame] | 205 | losetup - noexec. complex |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 206 | lpd - daemon |
| 207 | lpq - runner |
| 208 | lpr - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 209 | ls - noexec. runner |
Denys Vlasenko | 99125c0 | 2017-08-05 20:38:04 +0200 | [diff] [blame] | 210 | lsattr - noexec. runner |
Denys Vlasenko | 3346b4a | 2017-08-04 02:56:39 +0200 | [diff] [blame] | 211 | lsmod - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 212 | lsof - complex |
Denys Vlasenko | 3239ab8 | 2017-08-05 23:28:19 +0200 | [diff] [blame] | 213 | lspci - noexec. too rare to bother for nofork |
| 214 | lsscsi - noexec. too rare to bother for nofork |
| 215 | lsusb - noexec. too rare to bother for nofork |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 216 | lzcat - runner |
| 217 | lzma - runner |
| 218 | lzop - runner |
| 219 | lzopcat - runner |
Denys Vlasenko | 9536ef7 | 2017-08-06 21:47:07 +0200 | [diff] [blame] | 220 | makedevs - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 221 | makemime - runner |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 222 | man - spawner, interactive, longterm |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 223 | md5sum - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 224 | mdev - daemon |
Denys Vlasenko | 6514785 | 2017-08-04 19:16:01 +0200 | [diff] [blame] | 225 | mesg - NOFORK |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 226 | microcom - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 227 | mkdir - NOFORK |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 228 | mkdosfs - needs ^C |
| 229 | mke2fs - needs ^C |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 230 | mkfifo - noexec |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 231 | mkfs.ext2 - needs ^C |
| 232 | mkfs.minix - needs ^C |
| 233 | mkfs.vfat - needs ^C |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 234 | mknod - noexec |
Denys Vlasenko | feb79e8 | 2017-08-05 02:08:23 +0200 | [diff] [blame] | 235 | mkpasswd - noexec. changes state: with --password-fd=N, moves N to stdin |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 236 | mkswap - needs ^C |
Denys Vlasenko | 6bec24c | 2017-08-04 17:39:05 +0200 | [diff] [blame] | 237 | mktemp - noexec. leaks: xstrdup+concat_path_file |
Denys Vlasenko | 3346b4a | 2017-08-04 02:56:39 +0200 | [diff] [blame] | 238 | modinfo - noexec |
| 239 | modprobe - noexec |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 240 | more - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 241 | mount - suid |
Denys Vlasenko | 9f59849 | 2017-08-05 01:29:12 +0200 | [diff] [blame] | 242 | mountpoint - noexec. leaks: option -n "print dev name": find_block_device -> readdir+xstrdup |
Denys Vlasenko | a759b22 | 2017-08-06 14:15:24 +0200 | [diff] [blame] | 243 | mpstat - longterm: "mpstat 1" runs indefinitely |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 244 | mt - hardware |
Denys Vlasenko | 6514785 | 2017-08-04 19:16:01 +0200 | [diff] [blame] | 245 | mv - noexec candidate, runner |
Denys Vlasenko | a759b22 | 2017-08-06 14:15:24 +0200 | [diff] [blame] | 246 | nameif - noexec. openlog(), leaks: config_open2+ioctl_or_perror_and_die |
Denys Vlasenko | bfc66d4 | 2017-08-06 21:53:39 +0200 | [diff] [blame] | 247 | nbd-client - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 248 | nc - runner |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 249 | netstat - longterm with -c (continuous listing) |
Denys Vlasenko | 692eeb8 | 2017-08-04 20:07:19 +0200 | [diff] [blame] | 250 | nice - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 251 | nl - runner |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 252 | nmeter - longterm |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 253 | nohup - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 254 | nproc - NOFORK |
| 255 | ntpd - daemon |
| 256 | od - runner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 257 | openvt - longterm: spawns a child and waits for it |
Denys Vlasenko | 9c49d6e | 2017-08-05 01:46:39 +0200 | [diff] [blame] | 258 | partprobe - noexec. leaks: open+ioctl_or_perror_and_die(BLKRRPART) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 259 | passwd - suid |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 260 | paste - noexec. runner |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 261 | patch - needs ^C |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 262 | pgrep - must fork+exec to get correct /proc/PID/cmdline and comm field |
| 263 | pidof - must fork+exec to get correct /proc/PID/cmdline and comm field |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 264 | ping - suid, longterm |
| 265 | ping6 - suid, longterm |
Denys Vlasenko | 6514785 | 2017-08-04 19:16:01 +0200 | [diff] [blame] | 266 | pipe_progress - longterm |
Denys Vlasenko | fdb9235 | 2017-08-05 01:51:12 +0200 | [diff] [blame] | 267 | pivot_root - NOFORK |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 268 | pkill - must fork+exec to get correct /proc/PID/cmdline and comm field |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 269 | pmap - noexec candidate, leaks: open+xstrdup |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 270 | popmaildir - runner |
| 271 | poweroff - rare |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 272 | powertop - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 273 | printenv - NOFORK |
| 274 | printf - NOFORK |
Denys Vlasenko | 00c1811 | 2017-08-05 22:25:00 +0200 | [diff] [blame] | 275 | ps - looks for AT_CLKTCK elf aux vector, therefore can't be noexec |
Denys Vlasenko | 72d725d | 2017-08-03 19:30:21 +0200 | [diff] [blame] | 276 | pscan - longterm |
Denys Vlasenko | 00c1811 | 2017-08-05 22:25:00 +0200 | [diff] [blame] | 277 | pstree - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 278 | pwd - NOFORK |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 279 | pwdx - NOFORK |
Denys Vlasenko | a894a4b | 2017-08-06 19:08:46 +0200 | [diff] [blame] | 280 | raidautorun - noexec. very simple. leaks: open+xioctl |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 281 | rdate - needs ^C (may talk to DNS servers, which may be down) |
| 282 | rdev - leaks: find_block_device -> readdir+xstrdup |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 283 | readlink - NOFORK |
Denys Vlasenko | 9536ef7 | 2017-08-06 21:47:07 +0200 | [diff] [blame] | 284 | readprofile - reads /boot/System.map and /proc/profile, better to free more memory by execing? |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 285 | realpath - NOFORK |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 286 | reboot - rare |
| 287 | reformime - runner |
Denys Vlasenko | 7b8372b | 2017-08-07 00:28:15 +0200 | [diff] [blame] | 288 | remove-shell - noexec. leaks: open+xfunc |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 289 | renice - noexec. nofork candidate(uses getpwnam, is that ok?) |
Denys Vlasenko | 692eeb8 | 2017-08-04 20:07:19 +0200 | [diff] [blame] | 290 | reset - noexec. spawner (execs "stty") |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 291 | resize - noexec. changes state (signal handlers) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 292 | rev - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 293 | rm - noexec. rm -i interactive |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 294 | rmdir - NOFORK |
Denys Vlasenko | 3346b4a | 2017-08-04 02:56:39 +0200 | [diff] [blame] | 295 | rmmod - noexec |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 296 | route - needs ^C (may talk to DNS servers, which may be down) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 297 | rpm - runner |
| 298 | rpm2cpio - runner |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 299 | rtcwake - longterm: puts system to sleep, optimizing this for speed is pointless |
Denys Vlasenko | a894a4b | 2017-08-06 19:08:46 +0200 | [diff] [blame] | 300 | run-parts - longterm |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 301 | runlevel - noexec. can be nofork if "endutxent()" is called unconditionally, but too rare to bother? |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 302 | runsv - daemon |
| 303 | runsvdir - daemon |
| 304 | rx - runner |
Denys Vlasenko | dd55d5d | 2017-08-07 01:53:17 +0200 | [diff] [blame] | 305 | script - longterm: pumps script output from slave pty |
| 306 | scriptreplay - longterm: plays back "script" saved output, sleeping as necessary. |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 307 | sed - runner |
| 308 | sendmail - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 309 | seq - noexec. runner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 310 | setarch - noexec. spawner |
Denys Vlasenko | 5cb907f | 2017-08-06 18:56:25 +0200 | [diff] [blame] | 311 | setconsole - noexec |
Denys Vlasenko | 1b280e4 | 2017-08-06 19:05:45 +0200 | [diff] [blame] | 312 | setfont - noexec. leaks a lot of stuff |
Denys Vlasenko | b83db4d | 2017-08-06 18:29:25 +0200 | [diff] [blame] | 313 | setkeycodes - noexec |
Denys Vlasenko | 341ce0a | 2017-08-06 18:17:58 +0200 | [diff] [blame] | 314 | setlogcons - noexec |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 315 | setpriv - spawner, changes state, let's play safe and not be noexec |
Denys Vlasenko | 97b738d | 2017-08-06 18:06:46 +0200 | [diff] [blame] | 316 | setserial - noexec |
Denys Vlasenko | 2262746 | 2017-08-06 17:14:09 +0200 | [diff] [blame] | 317 | setsid - spawner, uses fork_or_rexec() [not audited to work in noexec], let's play safe and not be noexec |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 318 | setuidgid - noexec. spawner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 319 | sha1sum - noexec. runner |
| 320 | sha256sum - noexec. runner |
| 321 | sha3sum - noexec. runner |
| 322 | sha512sum - noexec. runner |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 323 | showkey - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 324 | shred - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 325 | shuf - noexec. runner |
Denys Vlasenko | 2262746 | 2017-08-06 17:14:09 +0200 | [diff] [blame] | 326 | slattach - longterm (may sleep forever), uses bb_common_bufsiz1 |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 327 | sleep - runner, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 328 | smemcap - runner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 329 | softlimit - noexec. spawner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 330 | sort - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 331 | split - runner |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 332 | ssl_client - longterm |
Denys Vlasenko | 184c738 | 2017-08-06 20:55:56 +0200 | [diff] [blame] | 333 | start-stop-daemon - not noexec: uses bb_common_bufsiz1 |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 334 | stat - noexec. nofork candidate(needs fewer allocs) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 335 | strings - runner |
Denys Vlasenko | 692eeb8 | 2017-08-04 20:07:19 +0200 | [diff] [blame] | 336 | stty - noexec. nofork candidate: has no allocs or opens except xmove_fd(xopen("-F DEVICE"),STDIN). tcsetattr(STDIN) is not a problem: it would work the same across processes sharing this fd |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 337 | su - suid, spawner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 338 | sulogin - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 339 | sum - runner |
Denys Vlasenko | a453ca5 | 2017-08-05 01:42:08 +0200 | [diff] [blame] | 340 | sv - noexec. needs ^C (uses usleep(420000)) |
| 341 | svc - noexec. needs ^C (uses usleep(420000)) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 342 | svlogd - daemon |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 343 | swapoff - longterm: may cause memory pressure, execing is beneficial |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 344 | swapon - rare |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 345 | switch_root - spawner, rare, changes state (oh yes), execing may be important to free binary's inode |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 346 | sync - NOFORK |
Denys Vlasenko | caf26b3 | 2017-08-05 18:23:10 +0200 | [diff] [blame] | 347 | sysctl - noexec. leaks: xstrdup+xmalloc_read |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 348 | syslogd - daemon |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 349 | tac - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 350 | tail - runner |
| 351 | tar - runner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 352 | taskset - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 353 | tcpsvd - daemon |
| 354 | tee - runner |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 355 | telnet - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 356 | telnetd - daemon |
| 357 | test - NOFORK |
| 358 | tftp - runner |
| 359 | tftpd - daemon |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 360 | time - spawner, longterm, changes state (signals) |
| 361 | timeout - spawner, longterm, changes state (signals) |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 362 | top - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 363 | touch - NOFORK |
| 364 | tr - runner |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 365 | traceroute - suid, longterm |
| 366 | traceroute6 - suid, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 367 | true - NOFORK |
| 368 | truncate - NOFORK |
| 369 | tty - NOFORK |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 370 | ttysize - NOFORK |
Denys Vlasenko | 9a58cc0 | 2017-08-06 12:28:00 +0200 | [diff] [blame] | 371 | tunctl - noexec |
Denys Vlasenko | 99125c0 | 2017-08-05 20:38:04 +0200 | [diff] [blame] | 372 | tune2fs - noexec. leaks: open+xfunc |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 373 | ubiattach - hardware |
| 374 | ubidetach - hardware |
| 375 | ubimkvol - hardware |
| 376 | ubirename - hardware |
| 377 | ubirmvol - hardware |
| 378 | ubirsvol - hardware |
| 379 | ubiupdatevol - hardware |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 380 | udhcpc - daemon |
| 381 | udhcpd - daemon |
| 382 | udpsvd - daemon |
| 383 | uevent - daemon |
Denys Vlasenko | 83a6c8d | 2017-08-05 23:21:02 +0200 | [diff] [blame] | 384 | umount - noexec. leaks: nested xmalloc |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 385 | uname - NOFORK |
| 386 | uncompress - runner |
| 387 | unexpand - runner |
| 388 | uniq - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 389 | unix2dos - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 390 | unlink - NOFORK |
| 391 | unlzma - runner |
| 392 | unlzop - runner |
| 393 | unxz - runner |
| 394 | unzip - runner |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 395 | uptime - noexec. nofork candidate(is getutxent ok?) |
| 396 | users - noexec. nofork candidate(is getutxent ok?) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 397 | usleep - NOFORK |
| 398 | uudecode - runner |
| 399 | uuencode - runner |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 400 | vconfig - leaks: xsocket+ioctl_or_perror_and_die |
| 401 | vi - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 402 | vlock - suid |
Denys Vlasenko | ae84418 | 2017-08-07 23:14:49 +0200 | [diff] [blame] | 403 | volname - hardware (reads CDROM, this can take long-ish if need to spin up) |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 404 | w - noexec. nofork candidate(is getutxent ok?) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 405 | wall - suid |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 406 | watch - longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 407 | watchdog - daemon |
| 408 | wc - runner |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 409 | wget - longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 410 | which - NOFORK |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 411 | who - noexec. nofork candidate(is getutxent ok?) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 412 | whoami - NOFORK |
Denys Vlasenko | 6514785 | 2017-08-04 19:16:01 +0200 | [diff] [blame] | 413 | whois - needs ^C |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 414 | xargs - noexec. spawner |
| 415 | xxd - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 416 | xz - runner |
| 417 | xzcat - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 418 | yes - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 419 | zcat - runner |
| 420 | zcip - daemon |