Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 May 2004 07:20:08 -0700 (PDT)
From:      "James E. Housley" <jeh@FreeBSD.org>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: bin/67137: newsyslog does not set correct user/group on the compression
Message-ID:  <200405251420.i4PEK8Ld018003@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/67137; it has been noted by GNATS.

From: "James E. Housley" <jeh@FreeBSD.org>
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--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200405251420.i4PEK8Ld018003>