[cedar-backup-svn] SF.net SVN: cedar-backup: [852] cedar-backup2/trunk/CedarBackup2
Brought to you by:
pronovic
|
From: <pro...@us...> - 2008-03-16 23:34:31
|
Revision: 852
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=852&view=rev
Author: pronovic
Date: 2008-03-16 16:34:19 -0700 (Sun, 16 Mar 2008)
Log Message:
-----------
Fix stage action so it works for local users (closes: #1854634).
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/actions/stage.py
cedar-backup2/trunk/CedarBackup2/peer.py
Modified: cedar-backup2/trunk/CedarBackup2/actions/stage.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/stage.py 2008-03-16 23:20:35 UTC (rev 851)
+++ cedar-backup2/trunk/CedarBackup2/actions/stage.py 2008-03-16 23:34:19 UTC (rev 852)
@@ -116,8 +116,14 @@
continue
logger.debug("Found collect indicator.")
targetDir = stagingDirs[peer.name]
- ownership = getUidGid(config.options.backupUser, config.options.backupGroup)
- logger.debug("Using target dir [%s], ownership [%d:%d]." % (targetDir, ownership[0], ownership[1]))
+ if os.getuid() == 0:
+ # Since we're running as root, we can change ownership
+ ownership = getUidGid(config.options.backupUser, config.options.backupGroup)
+ logger.debug("Using target dir [%s], ownership [%d:%d]." % (targetDir, ownership[0], ownership[1]))
+ else:
+ # Non-root cannot change ownership, so don't set it
+ ownership = None
+ logger.debug("Using target dir [%s], ownership [None]." % targetDir)
try:
count = peer.stagePeer(targetDir=targetDir, ownership=ownership) # note: utilize effective user's default umask
logger.info("Staged %d files for peer [%s]." % (count, peer.name))
Modified: cedar-backup2/trunk/CedarBackup2/peer.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/peer.py 2008-03-16 23:20:35 UTC (rev 851)
+++ cedar-backup2/trunk/CedarBackup2/peer.py 2008-03-16 23:34:19 UTC (rev 852)
@@ -981,14 +981,11 @@
differenceSet = afterSet.difference(beforeSet) # files we added as part of copy
if len(differenceSet) == 0:
raise IOError("Apparently did not copy any new files from remote peer.")
- if localUser is None:
- logger.debug("Not root, so not attempting to change owner on staged files.")
- else:
- for targetFile in differenceSet:
- if ownership is not None:
- os.chown(targetFile, ownership[0], ownership[1])
- if permissions is not None:
- os.chmod(targetFile, permissions)
+ for targetFile in differenceSet:
+ if ownership is not None:
+ os.chown(targetFile, ownership[0], ownership[1])
+ if permissions is not None:
+ os.chmod(targetFile, permissions)
return len(differenceSet)
_copyRemoteDir = staticmethod(_copyRemoteDir)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|