Преглед изворни кода

Merge pull request #6788 from ThomasWaldmann/chmod-optional-master

SaveFile: the chmod is optional, fixes #6786
TW пре 2 година
родитељ
комит
fdfce3d0a8
1 измењених фајлова са 12 додато и 7 уклоњено
  1. 12 7
      src/borg/platform/base.py

+ 12 - 7
src/borg/platform/base.py

@@ -239,13 +239,18 @@ class SaveFile:
             safe_unlink(self.tmp_fname)  # with-body has failed, clean up tmp file
             return  # continue processing the exception normally
 
-        # tempfile.mkstemp always uses owner-only file permissions for the temp file,
-        # but as we'll rename it to the non-temp permanent file now, we need to respect
-        # the umask and change the file mode to what a normally created file would have.
-        # thanks to the crappy os.umask api, we can't query the umask without setting it. :-(
-        umask = os.umask(UMASK_DEFAULT)
-        os.umask(umask)
-        os.chmod(self.tmp_fname, mode=0o666 & ~ umask)
+        try:
+            # tempfile.mkstemp always uses owner-only file permissions for the temp file,
+            # but as we'll rename it to the non-temp permanent file now, we need to respect
+            # the umask and change the file mode to what a normally created file would have.
+            # thanks to the crappy os.umask api, we can't query the umask without setting it. :-(
+            umask = os.umask(UMASK_DEFAULT)
+            os.umask(umask)
+            os.chmod(self.tmp_fname, mode=0o666 & ~ umask)
+        except OSError:
+            # chmod might fail if the fs does not support it.
+            # this is not harmful, the file will still have permissions for the owner.
+            pass
 
         try:
             os.replace(self.tmp_fname, self.path)  # POSIX: atomic rename