diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2011-01-03 13:57:49 +0100 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2011-01-03 13:57:49 +0100 |
commit | 6100b51ca81721ac364f101a17cbce0d9f6fcb59 (patch) | |
tree | 7e60a35c25e27a43bb08a609de3ddf8fa65454eb | |
parent | 327d2885ecab7fb8e876026c428c2e415c5742c1 (diff) | |
download | busybox-w32-6100b51ca81721ac364f101a17cbce0d9f6fcb59.tar.gz busybox-w32-6100b51ca81721ac364f101a17cbce0d9f6fcb59.tar.bz2 busybox-w32-6100b51ca81721ac364f101a17cbce0d9f6fcb59.zip |
explain every non-SUID_DROP applet. No code changes
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
-rw-r--r-- | include/applets.src.h | 19 | ||||
-rw-r--r-- | networking/ping.c | 1 |
2 files changed, 19 insertions, 1 deletions
diff --git a/include/applets.src.h b/include/applets.src.h index c2f90eac0..261ef2333 100644 --- a/include/applets.src.h +++ b/include/applets.src.h | |||
@@ -16,6 +16,8 @@ s - suid type: | |||
16 | and is run by non-root (applet_main() will not be called at all) | 16 | and is run by non-root (applet_main() will not be called at all) |
17 | _BB_SUID_DROP: will drop suid prior to applet_main() | 17 | _BB_SUID_DROP: will drop suid prior to applet_main() |
18 | _BB_SUID_MAYBE: neither of the above | 18 | _BB_SUID_MAYBE: neither of the above |
19 | (every instance of _BB_SUID_REQUIRE and _BB_SUID_MAYBE | ||
20 | needs to be justified in comment) | ||
19 | */ | 21 | */ |
20 | 22 | ||
21 | #if defined(PROTOTYPES) | 23 | #if defined(PROTOTYPES) |
@@ -100,6 +102,7 @@ IF_COMM(APPLET(comm, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | |||
100 | IF_CP(APPLET_NOEXEC(cp, cp, _BB_DIR_BIN, _BB_SUID_DROP, cp)) | 102 | IF_CP(APPLET_NOEXEC(cp, cp, _BB_DIR_BIN, _BB_SUID_DROP, cp)) |
101 | IF_CPIO(APPLET(cpio, _BB_DIR_BIN, _BB_SUID_DROP)) | 103 | IF_CPIO(APPLET(cpio, _BB_DIR_BIN, _BB_SUID_DROP)) |
102 | IF_CROND(APPLET(crond, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) | 104 | IF_CROND(APPLET(crond, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) |
105 | /* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */ | ||
103 | IF_CRONTAB(APPLET(crontab, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) | 106 | IF_CRONTAB(APPLET(crontab, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) |
104 | IF_CRYPTPW(APPLET(cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 107 | IF_CRYPTPW(APPLET(cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
105 | IF_CUT(APPLET_NOEXEC(cut, cut, _BB_DIR_USR_BIN, _BB_SUID_DROP, cut)) | 108 | IF_CUT(APPLET_NOEXEC(cut, cut, _BB_DIR_USR_BIN, _BB_SUID_DROP, cut)) |
@@ -115,6 +118,7 @@ IF_DHCPRELAY(APPLET(dhcprelay, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) | |||
115 | IF_DIFF(APPLET(diff, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 118 | IF_DIFF(APPLET(diff, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
116 | IF_DIRNAME(APPLET_NOFORK(dirname, dirname, _BB_DIR_USR_BIN, _BB_SUID_DROP, dirname)) | 119 | IF_DIRNAME(APPLET_NOFORK(dirname, dirname, _BB_DIR_USR_BIN, _BB_SUID_DROP, dirname)) |
117 | IF_DMESG(APPLET(dmesg, _BB_DIR_BIN, _BB_SUID_DROP)) | 120 | IF_DMESG(APPLET(dmesg, _BB_DIR_BIN, _BB_SUID_DROP)) |
121 | /* Why _BB_SUID_REQUIRE? */ | ||
118 | IF_DNSD(APPLET(dnsd, _BB_DIR_USR_SBIN, _BB_SUID_REQUIRE)) | 122 | IF_DNSD(APPLET(dnsd, _BB_DIR_USR_SBIN, _BB_SUID_REQUIRE)) |
119 | IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, _BB_DIR_BIN, _BB_SUID_DROP, dnsdomainname)) | 123 | IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, _BB_DIR_BIN, _BB_SUID_DROP, dnsdomainname)) |
120 | IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, _BB_DIR_USR_BIN, _BB_SUID_DROP, dos2unix)) | 124 | IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, _BB_DIR_USR_BIN, _BB_SUID_DROP, dos2unix)) |
@@ -142,6 +146,7 @@ IF_FDFLUSH(APPLET_ODDNAME(fdflush, freeramdisk, _BB_DIR_BIN, _BB_SUID_DROP, fdfl | |||
142 | IF_FDFORMAT(APPLET(fdformat, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 146 | IF_FDFORMAT(APPLET(fdformat, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
143 | IF_FDISK(APPLET(fdisk, _BB_DIR_SBIN, _BB_SUID_DROP)) | 147 | IF_FDISK(APPLET(fdisk, _BB_DIR_SBIN, _BB_SUID_DROP)) |
144 | IF_FGCONSOLE(APPLET(fgconsole, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 148 | IF_FGCONSOLE(APPLET(fgconsole, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
149 | /* Benefits from suid root: better access to /dev/BLOCKDEVs: */ | ||
145 | IF_FINDFS(APPLET(findfs, _BB_DIR_SBIN, _BB_SUID_MAYBE)) | 150 | IF_FINDFS(APPLET(findfs, _BB_DIR_SBIN, _BB_SUID_MAYBE)) |
146 | IF_FLASH_ERASEALL(APPLET(flash_eraseall, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) | 151 | IF_FLASH_ERASEALL(APPLET(flash_eraseall, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) |
147 | IF_FLASH_LOCK(APPLET_ODDNAME(flash_lock, flash_lock_unlock, _BB_DIR_USR_SBIN, _BB_SUID_DROP, flash_lock)) | 152 | IF_FLASH_LOCK(APPLET_ODDNAME(flash_lock, flash_lock_unlock, _BB_DIR_USR_SBIN, _BB_SUID_DROP, flash_lock)) |
@@ -193,7 +198,9 @@ IF_IP(APPLET(ip, _BB_DIR_BIN, _BB_SUID_DROP)) | |||
193 | #endif | 198 | #endif |
194 | IF_IPADDR(APPLET(ipaddr, _BB_DIR_BIN, _BB_SUID_DROP)) | 199 | IF_IPADDR(APPLET(ipaddr, _BB_DIR_BIN, _BB_SUID_DROP)) |
195 | IF_IPCALC(APPLET(ipcalc, _BB_DIR_BIN, _BB_SUID_DROP)) | 200 | IF_IPCALC(APPLET(ipcalc, _BB_DIR_BIN, _BB_SUID_DROP)) |
201 | /* Why _BB_SUID_REQUIRE? On Fedora, it isn't suid root */ | ||
196 | IF_IPCRM(APPLET(ipcrm, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) | 202 | IF_IPCRM(APPLET(ipcrm, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) |
203 | /* Why _BB_SUID_REQUIRE? On Fedora, it isn't suid root */ | ||
197 | IF_IPCS(APPLET(ipcs, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) | 204 | IF_IPCS(APPLET(ipcs, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) |
198 | IF_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_DROP)) | 205 | IF_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_DROP)) |
199 | IF_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_DROP)) | 206 | IF_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_DROP)) |
@@ -214,6 +221,7 @@ IF_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) | |||
214 | IF_LOADFONT(APPLET(loadfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) | 221 | IF_LOADFONT(APPLET(loadfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) |
215 | IF_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_DROP)) | 222 | IF_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_DROP)) |
216 | IF_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 223 | IF_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
224 | /* Needs to be run by root or be suid root - needs to change uid and gid: */ | ||
217 | IF_LOGIN(APPLET(login, _BB_DIR_BIN, _BB_SUID_REQUIRE)) | 225 | IF_LOGIN(APPLET(login, _BB_DIR_BIN, _BB_SUID_REQUIRE)) |
218 | IF_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_DROP, logname)) | 226 | IF_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_DROP, logname)) |
219 | IF_LOGREAD(APPLET(logread, _BB_DIR_SBIN, _BB_SUID_DROP)) | 227 | IF_LOGREAD(APPLET(logread, _BB_DIR_SBIN, _BB_SUID_DROP)) |
@@ -250,6 +258,10 @@ IF_CRYPTPW(APPLET_ODDNAME(mkpasswd, cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP, mkp | |||
250 | IF_MKSWAP(APPLET(mkswap, _BB_DIR_SBIN, _BB_SUID_DROP)) | 258 | IF_MKSWAP(APPLET(mkswap, _BB_DIR_SBIN, _BB_SUID_DROP)) |
251 | IF_MKTEMP(APPLET(mktemp, _BB_DIR_BIN, _BB_SUID_DROP)) | 259 | IF_MKTEMP(APPLET(mktemp, _BB_DIR_BIN, _BB_SUID_DROP)) |
252 | IF_MORE(APPLET(more, _BB_DIR_BIN, _BB_SUID_DROP)) | 260 | IF_MORE(APPLET(more, _BB_DIR_BIN, _BB_SUID_DROP)) |
261 | /* On full-blown systems, requires suid for user mounts. | ||
262 | * But it's not unthinkable to have it available in non-suid flavor on some systems, | ||
263 | * for viewing mount table. | ||
264 | * Therefore we use _BB_SUID_MAYBE instead of _BB_SUID_REQUIRE: */ | ||
253 | IF_MOUNT(APPLET(mount, _BB_DIR_BIN, IF_DESKTOP(_BB_SUID_MAYBE) IF_NOT_DESKTOP(_BB_SUID_DROP))) | 265 | IF_MOUNT(APPLET(mount, _BB_DIR_BIN, IF_DESKTOP(_BB_SUID_MAYBE) IF_NOT_DESKTOP(_BB_SUID_DROP))) |
254 | IF_MOUNTPOINT(APPLET(mountpoint, _BB_DIR_BIN, _BB_SUID_DROP)) | 266 | IF_MOUNTPOINT(APPLET(mountpoint, _BB_DIR_BIN, _BB_SUID_DROP)) |
255 | IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_DROP)) | 267 | IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_DROP)) |
@@ -264,6 +276,7 @@ IF_NTPD(APPLET(ntpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) | |||
264 | IF_OD(APPLET(od, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 276 | IF_OD(APPLET(od, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
265 | IF_OPENVT(APPLET(openvt, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 277 | IF_OPENVT(APPLET(openvt, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
266 | //IF_PARSE(APPLET(parse, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 278 | //IF_PARSE(APPLET(parse, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
279 | /* Needs to be run by root or be suid root - needs to change /etc/{passwd,shadow}: */ | ||
267 | IF_PASSWD(APPLET(passwd, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) | 280 | IF_PASSWD(APPLET(passwd, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) |
268 | IF_PGREP(APPLET(pgrep, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 281 | IF_PGREP(APPLET(pgrep, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
269 | IF_PIDOF(APPLET(pidof, _BB_DIR_BIN, _BB_SUID_DROP)) | 282 | IF_PIDOF(APPLET(pidof, _BB_DIR_BIN, _BB_SUID_DROP)) |
@@ -323,7 +336,7 @@ IF_SHA256SUM(APPLET_NOEXEC(sha256sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DR | |||
323 | IF_SHA512SUM(APPLET_NOEXEC(sha512sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha512sum)) | 336 | IF_SHA512SUM(APPLET_NOEXEC(sha512sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha512sum)) |
324 | IF_SHOWKEY(APPLET(showkey, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 337 | IF_SHOWKEY(APPLET(showkey, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
325 | IF_SLATTACH(APPLET(slattach, _BB_DIR_SBIN, _BB_SUID_DROP)) | 338 | IF_SLATTACH(APPLET(slattach, _BB_DIR_SBIN, _BB_SUID_DROP)) |
326 | /* Do not make this applet NOFORK. It breaks ^C-ing of pauses in shells */ | 339 | /* Do not make this applet NOFORK. It breaks ^C-ing of pauses in shells: */ |
327 | IF_SLEEP(APPLET(sleep, _BB_DIR_BIN, _BB_SUID_DROP)) | 340 | IF_SLEEP(APPLET(sleep, _BB_DIR_BIN, _BB_SUID_DROP)) |
328 | IF_SOFTLIMIT(APPLET_ODDNAME(softlimit, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, softlimit)) | 341 | IF_SOFTLIMIT(APPLET_ODDNAME(softlimit, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, softlimit)) |
329 | IF_SORT(APPLET_NOEXEC(sort, sort, _BB_DIR_USR_BIN, _BB_SUID_DROP, sort)) | 342 | IF_SORT(APPLET_NOEXEC(sort, sort, _BB_DIR_USR_BIN, _BB_SUID_DROP, sort)) |
@@ -332,6 +345,7 @@ IF_START_STOP_DAEMON(APPLET_ODDNAME(start-stop-daemon, start_stop_daemon, _BB_DI | |||
332 | IF_STAT(APPLET(stat, _BB_DIR_BIN, _BB_SUID_DROP)) | 345 | IF_STAT(APPLET(stat, _BB_DIR_BIN, _BB_SUID_DROP)) |
333 | IF_STRINGS(APPLET(strings, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 346 | IF_STRINGS(APPLET(strings, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
334 | IF_STTY(APPLET(stty, _BB_DIR_BIN, _BB_SUID_DROP)) | 347 | IF_STTY(APPLET(stty, _BB_DIR_BIN, _BB_SUID_DROP)) |
348 | /* Needs to be run by root or be suid root - needs to change uid and gid: */ | ||
335 | IF_SU(APPLET(su, _BB_DIR_BIN, _BB_SUID_REQUIRE)) | 349 | IF_SU(APPLET(su, _BB_DIR_BIN, _BB_SUID_REQUIRE)) |
336 | IF_SULOGIN(APPLET(sulogin, _BB_DIR_SBIN, _BB_SUID_DROP)) | 350 | IF_SULOGIN(APPLET(sulogin, _BB_DIR_SBIN, _BB_SUID_DROP)) |
337 | IF_SUM(APPLET(sum, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 351 | IF_SUM(APPLET(sum, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
@@ -361,6 +375,7 @@ IF_TIME(APPLET(time, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | |||
361 | IF_TIMEOUT(APPLET(timeout, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 375 | IF_TIMEOUT(APPLET(timeout, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
362 | IF_TOP(APPLET(top, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 376 | IF_TOP(APPLET(top, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
363 | IF_TR(APPLET(tr, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 377 | IF_TR(APPLET(tr, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
378 | /* Needs socket(AF_INET, SOCK_RAW, IPPROTO_ICMP), therefore _BB_SUID_MAYBE: */ | ||
364 | IF_TRACEROUTE(APPLET(traceroute, _BB_DIR_USR_BIN, _BB_SUID_MAYBE)) | 379 | IF_TRACEROUTE(APPLET(traceroute, _BB_DIR_USR_BIN, _BB_SUID_MAYBE)) |
365 | IF_TRACEROUTE6(APPLET(traceroute6, _BB_DIR_USR_BIN, _BB_SUID_MAYBE)) | 380 | IF_TRACEROUTE6(APPLET(traceroute6, _BB_DIR_USR_BIN, _BB_SUID_MAYBE)) |
366 | IF_TRUE(APPLET_NOFORK(true, true, _BB_DIR_BIN, _BB_SUID_DROP, true)) | 381 | IF_TRUE(APPLET_NOFORK(true, true, _BB_DIR_BIN, _BB_SUID_DROP, true)) |
@@ -387,8 +402,10 @@ IF_UUDECODE(APPLET(uudecode, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | |||
387 | IF_UUENCODE(APPLET(uuencode, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 402 | IF_UUENCODE(APPLET(uuencode, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
388 | IF_VCONFIG(APPLET(vconfig, _BB_DIR_SBIN, _BB_SUID_DROP)) | 403 | IF_VCONFIG(APPLET(vconfig, _BB_DIR_SBIN, _BB_SUID_DROP)) |
389 | IF_VI(APPLET(vi, _BB_DIR_BIN, _BB_SUID_DROP)) | 404 | IF_VI(APPLET(vi, _BB_DIR_BIN, _BB_SUID_DROP)) |
405 | /* Needs to be run by root or be suid root - needs to change uid and gid: */ | ||
390 | IF_VLOCK(APPLET(vlock, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) | 406 | IF_VLOCK(APPLET(vlock, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) |
391 | IF_VOLNAME(APPLET(volname, _BB_DIR_USR_BIN, _BB_SUID_DROP)) | 407 | IF_VOLNAME(APPLET(volname, _BB_DIR_USR_BIN, _BB_SUID_DROP)) |
408 | /* Needs to be run by root or be suid root - needs to write to /dev/TTY: */ | ||
392 | IF_WALL(APPLET(wall, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) | 409 | IF_WALL(APPLET(wall, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) |
393 | IF_WATCH(APPLET(watch, _BB_DIR_BIN, _BB_SUID_DROP)) | 410 | IF_WATCH(APPLET(watch, _BB_DIR_BIN, _BB_SUID_DROP)) |
394 | IF_WATCHDOG(APPLET(watchdog, _BB_DIR_SBIN, _BB_SUID_DROP)) | 411 | IF_WATCHDOG(APPLET(watchdog, _BB_DIR_SBIN, _BB_SUID_DROP)) |
diff --git a/networking/ping.c b/networking/ping.c index 7f74c26fa..366a98668 100644 --- a/networking/ping.c +++ b/networking/ping.c | |||
@@ -52,6 +52,7 @@ | |||
52 | //config: Make the output from the ping applet include statistics, and at the | 52 | //config: Make the output from the ping applet include statistics, and at the |
53 | //config: same time provide full support for ICMP packets. | 53 | //config: same time provide full support for ICMP packets. |
54 | 54 | ||
55 | /* Needs socket(AF_INET, SOCK_RAW, IPPROTO_ICMP), therefore _BB_SUID_MAYBE: */ | ||
55 | //applet:IF_PING(APPLET(ping, _BB_DIR_BIN, _BB_SUID_MAYBE)) | 56 | //applet:IF_PING(APPLET(ping, _BB_DIR_BIN, _BB_SUID_MAYBE)) |
56 | //applet:IF_PING6(APPLET(ping6, _BB_DIR_BIN, _BB_SUID_MAYBE)) | 57 | //applet:IF_PING6(APPLET(ping6, _BB_DIR_BIN, _BB_SUID_MAYBE)) |
57 | 58 | ||