Date: Fri, 21 Sep 2001 22:42:31 +1000 (EST) From: Bruce Evans <bde@zeta.org.au> To: <cjclark@alum.mit.edu> Cc: <freebsd-audit@FreeBSD.ORG> Subject: Re: Misuse of 'nobody' user for locate(1) Message-ID: <20010921221010.C75698-100000@delplex.bde.org> In-Reply-To: <20010920205706.A3050@blossom.cjclark.org>
index | next in thread | previous in thread | raw e-mail
On Thu, 20 Sep 2001, Crist J. Clark wrote:
> The original purpose of the 'nobody' user was for "anonymous" NFS
> access. This is the account to which the superuser on a remote system
> is mapped. ...
This has rotted under FreeBSD. The superuser is mapped to (uid_t)-2,
which is 0xFFFFFFFE, but "nobody" has uid 0xFFFE.
> Here are the patches. Any comments about them or the whole idea of
> eliminating 'nobody' ownership of files? Thanks.
This seems reasonable.
> Index: src/etc/periodic/weekly/310.locate
> ===================================================================
> RCS file: /export/ncvs/src/etc/periodic/weekly/310.locate,v
> retrieving revision 1.6
> diff -u -r1.6 310.locate
> --- src/etc/periodic/weekly/310.locate 2000/09/14 17:19:13 1.6
> +++ src/etc/periodic/weekly/310.locate 2001/09/21 03:14:09
> @@ -18,12 +18,9 @@
>
> locdb=/var/db/locate.database
>
> - touch $locdb && rc=0 || rc=3
> - chown nobody $locdb || rc=3
> - chmod 644 $locdb || rc=3
> -
> cd /
> - echo /usr/libexec/locate.updatedb | nice -5 su -fm nobody || rc=3
> + { echo /usr/libexec/locate.updatedb |
> + nice -5 su -fm nobody; } > $locdb || rc=3
> chmod 444 $locdb || rc=3;;
>
> *) rc=0;;
src/etc/Makefile still installs /var/db/locate.database with bogus
ownership nobody:wheel and insecure mode 644. 644 would be correct
if the file were owned by root. Then the "chmod 444" would be redundant.
> Index: src/usr.bin/locate/locate/updatedb.sh
> ===================================================================
> RCS file: /export/ncvs/src/usr.bin/locate/locate/updatedb.sh,v
> retrieving revision 1.17
> diff -u -r1.17 updatedb.sh
> --- src/usr.bin/locate/locate/updatedb.sh 2000/01/12 08:01:01 1.17
> +++ src/usr.bin/locate/locate/updatedb.sh 2001/09/21 03:49:55
> @@ -44,7 +44,6 @@
>
>
> : ${mklocatedb:=locate.mklocatedb} # make locate database program
> -: ${FCODES:=/var/db/locate.database} # the database
> : ${SEARCHPATHS:="/"} # directories to be put in the database
> : ${PRUNEPATHS:="/tmp /usr/tmp /var/tmp"} # unwanted directories
> : ${FILESYSTEMS:="ufs"} # allowed filesystems
> @@ -81,8 +80,8 @@
> $mklocatedb -presort > $tmp
> then
> case X"`$find $tmp -size -257c -print`" in
> - X) cat $tmp > $FCODES;;
> - *) echo "updatedb: locate database $tmp is empty"
> + X) cat $tmp;;
> + *) echo "updatedb: locate database $tmp is empty" >&2
> exit 1
> esac
> fi
The man page needs correspinding changes.
> Index: src/usr.bin/locate/locate/locate.rc
> ===================================================================
> RCS file: /export/ncvs/src/usr.bin/locate/locate/locate.rc,v
> retrieving revision 1.8
> diff -u -r1.8 locate.rc
> --- src/usr.bin/locate/locate/locate.rc 1999/08/28 01:02:59 1.8
> +++ src/usr.bin/locate/locate/locate.rc 2001/09/21 03:14:25
> @@ -9,9 +9,6 @@
> # temp directory
> #TMPDIR="/tmp"
>
> -# the actual database
> -#FCODES="/var/db/locate.database"
> -
> # directories to be put in the database
> #SEARCHPATHS="/"
>
The location was supposed to be controlled by /etc/rc.locate, with the
update script providing a default. It was another bug that the periodic
script hard-coded the location.
Bruce
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010921221010.C75698-100000>
