COMMAND
sysinstall
SYSTEMS AFFECTED
FreeBSD 2.1, 2.1.5, 2.1.6, 2.1.7, 2.2 and 2.2.1.
PROBLEM
Sysinstall is used both for fresh installations of FreeBSD as well
as post installation updates, like installing packages from CDROM
or ftp sites.
One of the port installation options in sysinstall is to install
an anonymous ftp setup on the system. In such a setup, an extra
user needs to be created on the system, with username 'ftp'.
This user is created with the shell equal to '/bin/date' and an
empty password. Under some circumstances, this will allow
unauthorized access of system resources.
SOLUTION
This is corrected in all versions as of 1997-04-01. This includes
the installation floppies for FreeBSD 2.2.1 found on:
ftp://ftp.FreeBSD.org/pub/FreeBSD/2.2.1-RELEASE/floppies/newer/
Also the CDROM of FreeBSD 2.2.1 has this problem corrected.
You can also change the entry of the ftp user such that is has an
invalid password and an invalid shell. This can be done by
becoming the superuser, and use the vipw command. Go to the line
that starts with ftp:: and change ftp:: to ftp:*: Also change,
on the same line, the shell from /bin/date to /nonexistent.
If you have not yet used sysinstall to create an anonymous ftp
setup, but are planning to, please apply one of the following
patches:
Patch for FreeBSD 2.1.5, 2.1.6, 2.2 and 2.2.1:
--- anonFTP.c 1996/04/28 03:26:42 1.14
+++ anonFTP.c 1997/04/07 17:20:16
@@ -195,7 +195,7 @@
return (DITEM_SUCCESS); /* succeeds if already exists */
}
- sprintf(pwline, "%s::%s:%d::0:0:%s:%s:/bin/date\n", FTP_NAME, tconf.uid, gid, tconf.comment, tconf.homedir);
+ sprintf(pwline, "%s:*:%s:%d::0:0:%s:%s:/nonexistent\n", FTP_NAME, tconf.uid, gid, tconf.comment, tconf.homedir);
fptr = fopen(_PATH_MASTERPASSWD,"a");
if (! fptr) {
Patch for FreeBSD 2.1:
--- anonFTP.c 1995/11/12 07:27:55 1.6
+++ anonFTP.c 1997/04/03 19:29:21
@@ -201,7 +201,7 @@
return (RET_SUCCESS); /* succeeds if already exists */
}
- sprintf(pwline, "%s::%s:%d::0:0:%s:%s:/bin/date\n", FTP_NAME, tconf.uid, gid, tconf.comment, tconf.homedir);
+ sprintf(pwline, "%s:*:%s:%d::0:0:%s:%s:/nonexistent\n", FTP_NAME, tconf.uid, gid, tconf.comment, tconf.homedir);
fptr = fopen(_PATH_MASTERPASSWD,"a");
if (! fptr) {