diff --git a/ChangeLog b/ChangeLog
index 8f6a6f8475f863420408015a12d96357b2ea53ae..674c1722483fb52e02441318ed056b6141d7868a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-05-23 Chris Allegretta <chrisa@asty.org>
+	* files.c (write_file): Don't even try to chown() the backup
+	  file unless we're root, since it's probably going to fail if
+	  we're editing a file we don't own.  Fixes Savannah bug
+	  29514: [nano 2.2.2] backup should ignore chown errors.
+
 GNU nano 2.2.4 - 2010.04.15
 2010-04-07 Chris Allegretta <chrisa@asty.org>
 	* doc/man/nano.1,nanorc.5: Remove the backup file warnings now
diff --git a/src/files.c b/src/files.c
index 07915ce89d34df20371802f693d246ee4e0c12e6..6f4b9182ae091e376d19f6d9ce0d9921412e71b5 100644
--- a/src/files.c
+++ b/src/files.c
@@ -1612,9 +1612,18 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
 	    goto cleanup_and_exit;
 	}
 
-	if (fchmod(backup_fd, openfile->current_stat->st_mode) == -1 ||
-	    fchown(backup_fd, openfile->current_stat->st_uid,
-		   openfile->current_stat->st_gid) == -1 ) {
+        /* We shouldn't worry about chown()ing something if we're not
+	   root, since it's likely to fail! */
+	if (geteuid() == NANO_ROOT_UID && fchown(backup_fd,
+		openfile->current_stat->st_uid, openfile->current_stat->st_gid) == -1 ) {
+	    statusbar(_("Error writing backup file %s: %s"), backupname,
+		strerror(errno));
+	    free(backupname);
+	    fclose(backup_file);
+	    goto cleanup_and_exit;
+	}
+
+	if (fchmod(backup_fd, openfile->current_stat->st_mode) == -1) {
 	    statusbar(_("Error writing backup file %s: %s"), backupname,
 		strerror(errno));
 	    free(backupname);