[PATCH] change rsync to allow root operations if setuid

Gary Fernandez GaryF at livevault.com
Mon Sep 9 16:23:00 EST 2002


I made some changes to rsync so that it would recognize it was running as
root when run as a setuid root program. This allows the same operations as
when running as root (preserving ownership, for example).  I've attached the
diffs.

*** patch follows ***

*** main.c@@/main/original/1 Tue Apr  9 14:03:06 2002
--- main.c Wed Jul 10 10:19:42 2002
***************
*** 855,861 ****
  #endif /* def MAINTAINER_MODE */
  
  	starttime = time(NULL);
! 	am_root = (getuid() == 0);
  
  	memset(&stats, 0, sizeof(stats));
  
--- 860,866 ----
  #endif /* def MAINTAINER_MODE */
  
  	starttime = time(NULL);
! 	am_root = (getuid() == 0 || geteuid() == 0);
  
  	memset(&stats, 0, sizeof(stats));
  
*** clientserver.c@@/main/original/1 Tue Apr  9 14:02:24 2002
--- clientserver.c Tue Apr  9 14:34:26 2002
***************
*** 220,226 ****
  
  	module_id = i;
  
! 	am_root = (getuid() == 0);
  
  	if (am_root) {
  		p = lp_uid(i);
--- 220,226 ----
  
  	module_id = i;
  
! 	am_root = (getuid() == 0 || geteuid() == 0);
  
  	if (am_root) {
  		p = lp_uid(i);
***************
*** 332,338 ****
  			return -1;
  		}
  
! 		am_root = (getuid() == 0);
  	}
  
  	io_printf(fd,"@RSYNCD: OK\n");
--- 332,338 ----
  			return -1;
  		}
  
! 		am_root = (getuid() == 0 || geteuid() == 0);
  	}
  
  	io_printf(fd,"@RSYNCD: OK\n");



More information about the rsync mailing list