- don't allow chown for the group of a file if running as a daemon and

uid!=0

- reset am_root after startup as a daemon
This commit is contained in:
Andrew Tridgell
1998-05-23 05:57:08 +00:00
parent 6c82f74b6f
commit 943882a289
2 changed files with 7 additions and 2 deletions

View File

@@ -121,6 +121,7 @@ static int rsync_module(int fd, int i)
char *request=NULL;
extern int am_sender;
extern int remote_version;
extern int am_root;
if (!allow_access(addr, host, lp_hosts_allow(i), lp_hosts_deny(i))) {
rprintf(FERROR,"rsync denied on module %s from %s (%s)\n",
@@ -204,6 +205,8 @@ static int rsync_module(int fd, int i)
return -1;
}
am_root = (getuid() == 0);
io_printf(fd,"@RSYNCD: OK\n");
argv[argc++] = "rsyncd";

View File

@@ -267,6 +267,7 @@ static int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st,
{
int updated = 0;
STRUCT_STAT st2;
extern int am_daemon;
if (dry_run) return 0;
@@ -300,8 +301,9 @@ static int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st,
}
#endif
if ((am_root && preserve_uid && st->st_uid != file->uid) ||
(preserve_gid && st->st_gid != file->gid)) {
if ((am_root || !am_daemon) &&
((am_root && preserve_uid && st->st_uid != file->uid) ||
(preserve_gid && st->st_gid != file->gid))) {
if (do_lchown(fname,
(am_root&&preserve_uid)?file->uid:-1,
preserve_gid?file->gid:-1) != 0) {