home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.unix.bsd
- Path: sparky!uunet!mdisea!uw-coco!nwnexus!wjones
- From: wjones@halcyon.com (Warren Jones)
- Subject: [386BSD] Running Kermit SUID
- Message-ID: <1992Nov17.062542.12140@nwnexus.WA.COM>
- Summary: Fix allows Kermit to run SUID, comments solicited.
- Keywords: Kermit 386BSD SUID
- Sender: sso@nwnexus.WA.COM (System Security Officer)
- Organization: Northwest Nexus Inc. (206) 455-3505
- Date: Tue, 17 Nov 1992 06:25:42 GMT
- Lines: 64
-
- Has anyone else tried to make Kermit run SUID uucp under 386BSD ?
- Here's a fix I had to make to get it working the way I wanted.
- I'm using the newly released version 5A(186) from watsun.cc.columbia.edu.
- (You can find it in /kermit/bin/cku186.tar.Z.)
-
- This is what seems like the proper setup to me:
-
- chown uucp kermit # uucp owns kermit ...
- chown uucp /dev/com* # ... and the serial ports ...
- chown uucp /var/spool/uucp # ... and the lock directory.
- chmod u+s kermit # Kermit runs SUID uucp
-
- However, I found that on startup, Kermit trys to open /dev/tty
- to get the tty modes, and the open() fails when the EUID is uucp.
- This happens even though /dev/tty is world read and writeable:
-
- crw-rw-rw- 1 root wheel 1, 0 Nov 16 16:25 /dev/tty
-
- Everything seems to work OK if we make Kermit defer opening
- /dev/tty until it's made the EUID the same as the real UID.
-
- A patch follows. Comments are welcome.
- In particular, I'm hoping someone can tell me whether this
- behavior of 386BSD is a bug or a feature.
-
- BTW, I'm running 386BSD 0.1.24, and haven't installed any
- kernel patches.
-
- -------------------------- cut here ----------------------------------
- *** Save/ckutio.c Tue Nov 3 10:48:06 1992
- --- ckutio.c Mon Nov 16 17:47:05 1992
- ***************
- *** 917,923 ****
- --- 917,929 ----
- int x;
-
- conbgt(0); /* See if we're in the background */
- + #ifndef __386BSD__
- + /* 386BSD doesn't allow us to open /dev/tty in congm() if the */
- + /* EUID == uucp. It's not clear whether this is a bug or a feature */
- + /* but it seems to work if we defer the call to congm() until */
- + /* after the call to priv_ini() ... see below. */
- congm(); /* Get console modes */
- + #endif
- signal(SIGALRM,SIG_IGN); /* Ignore alarms */
-
- #ifdef ultrix
- ***************
- *** 939,944 ****
- --- 945,955 ----
- if (x | 4) fprintf(stderr,"Fatal: C-Kermit setuid to root!\n");
- exit(1);
- }
- + #ifdef __386BSD__
- + /* If running SUID uucp under 386BSD, we can't open /dev/tty */
- + /* in congm() until after the call to priv_ini(). */
- + congm(); /* Get console modes */
- + #endif
- return(0);
- }
-
- --
- Warren Jones
- <wjones@halcyon.com>
-