From owner-freebsd-bugs@FreeBSD.ORG Tue May 25 07:20:17 2004 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A93B916A4CE for ; Tue, 25 May 2004 07:20:17 -0700 (PDT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id A30BD43D2F for ; Tue, 25 May 2004 07:20:17 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) i4PEK8IE018004 for ; Tue, 25 May 2004 07:20:08 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.11/8.12.11/Submit) id i4PEK8Ld018003; Tue, 25 May 2004 07:20:08 -0700 (PDT) (envelope-from gnats) Date: Tue, 25 May 2004 07:20:08 -0700 (PDT) Message-Id: <200405251420.i4PEK8Ld018003@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: "James E. Housley" Subject: Re: bin/67137: newsyslog does not set correct user/group on the compression X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: "James E. Housley" List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2004 14:20:17 -0000 The following reply was made to PR bin/67137; it has been noted by GNATS. From: "James E. Housley" To: freebsd-gnats-submit@FreeBSD.org, jeh@thehousleys.net Cc: Subject: Re: bin/67137: newsyslog does not set correct user/group on the compression Date: Tue, 25 May 2004 10:09:39 -0400 This is a multi-part message in MIME format. --------------080902010807000702070205 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit This patch seems to do it, but I don't like the sleep(10) that I had to add because even though compress_log and bzcompress_log specify wait, they seem to return before compression is done. How to duplicate the problem (somewhat made up but reflects reality). modify /etc/newsyslog.conf /var/log/console.log root:www 640 5 100 * Z % newsyslog -n -v -F -R testing /var/log/console.log housley@prcd5001:~ {6} sudo newsyslog -n -v -F -R testing /var/log/console.log /var/log/console.log <5Z>: size (Kb): 2 [100] --> trimming log.... rm -f /var/log/console.log.5 rm -f /var/log/console.log.5.gz rm -f /var/log/console.log.5.bz2 mv /var/log/console.log.4.gz /var/log/console.log.5.gz chmod 640 /var/log/console.log.5.gz chown 0:80 /var/log/console.log.5.gz mv /var/log/console.log.3.gz /var/log/console.log.4.gz chmod 640 /var/log/console.log.4.gz chown 0:80 /var/log/console.log.4.gz mv /var/log/console.log.2.gz /var/log/console.log.3.gz chmod 640 /var/log/console.log.3.gz chown 0:80 /var/log/console.log.3.gz mv /var/log/console.log.1.gz /var/log/console.log.2.gz chmod 640 /var/log/console.log.2.gz chown 0:80 /var/log/console.log.2.gz mv /var/log/console.log.0.gz /var/log/console.log.1.gz chmod 640 /var/log/console.log.1.gz chown 0:80 /var/log/console.log.1.gz mv /var/log/console.log to /var/log/console.log.0 Start new log... mktemp /var/log/console.log.XXXXXX chmod 640 /var/log/console.log.XXXXXX mv /var/log/console.log.XXXXXX /var/log/console.log kill -1 123 gzip /var/log/console.log.0 What this produces is /var/log/console.log.0.gz to still be owned by root:wheel The attached patch changes it to work as: /var/log/console.log <5Z>: size (Kb): 2 [100] --> trimming log.... rm -f /var/log/console.log.5 rm -f /var/log/console.log.5.gz rm -f /var/log/console.log.5.bz2 mv /var/log/console.log.4.gz /var/log/console.log.5.gz chmod 640 /var/log/console.log.5.gz chown 0:80 /var/log/console.log.5.gz mv /var/log/console.log.3.gz /var/log/console.log.4.gz chmod 640 /var/log/console.log.4.gz chown 0:80 /var/log/console.log.4.gz mv /var/log/console.log.2.gz /var/log/console.log.3.gz chmod 640 /var/log/console.log.3.gz chown 0:80 /var/log/console.log.3.gz mv /var/log/console.log.1.gz /var/log/console.log.2.gz chmod 640 /var/log/console.log.2.gz chown 0:80 /var/log/console.log.2.gz mv /var/log/console.log.0.gz /var/log/console.log.1.gz chmod 640 /var/log/console.log.1.gz chown 0:80 /var/log/console.log.1.gz mv /var/log/console.log to /var/log/console.log.0 chown 0:80 /var/log/console.log.0 Start new log... mktemp /var/log/console.log.XXXXXX chmod 640 /var/log/console.log.XXXXXX mv /var/log/console.log.XXXXXX /var/log/console.log kill -1 123 gzip /var/log/console.log.0 I believe this will apply cleanly to -CURRENT also. Jim -- /"\ ASCII Ribbon Campaign . \ / - NO HTML/RTF in e-mail . X - NO Word docs in e-mail . / \ ----------------------------------------------------------------- jeh@FreeBSD.org http://www.FreeBSD.org The Power to Serve jim@TheHousleys.Net http://www.TheHousleys.net --------------------------------------------------------------------- Progress (n) : What led from smart users in front of dumb terminals to dumb users in front of smart terminals. --------------080902010807000702070205 Content-Type: text/plain; name="newsyslog.c-patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="newsyslog.c-patch" --- newsyslog.c-orig Tue Nov 4 11:11:17 2003 +++ newsyslog.c Tue May 25 10:05:24 2004 @@ -1288,14 +1288,21 @@ else (void) unlink(log); } else { - if (noaction) + if (noaction) { printf("\tmv %s to %s\n", log, file1); - else { + if (ent->uid != (uid_t)-1 || ent->gid != (gid_t)-1) + printf("\tchown %u:%u %s\n", + ent->uid, ent->gid, file1); + } else { if (archtodir) movefile(log, file1, ent->permissions, ent->uid, ent->gid); - else + else { (void) rename(log, file1); + if (ent->uid != (uid_t)-1 || ent->gid != (gid_t)-1) + if (chown(file1, ent->uid, ent->gid)) + warn("can't chown %s", file1); + } } } --------------080902010807000702070205--