diff --git a/sarracenia/flow/__init__.py b/sarracenia/flow/__init__.py index edfc0bcf8..80b858225 100644 --- a/sarracenia/flow/__init__.py +++ b/sarracenia/flow/__init__.py @@ -2431,7 +2431,7 @@ def send(self, msg, options): (self.scheme, new_dir)) if not self.o.dry_run: try: - self.proto[self.scheme].cd_forced(775, new_dir) + self.proto[self.scheme].cd_forced(new_dir) except Exception as ex: logger.error( f"could not chdir to {sendTo} {new_dir}: {ex}" ) return False @@ -2644,8 +2644,8 @@ def send(self, msg, options): if not self.o.dry_run: try: self.proto[self.scheme].cd_forced( - 775, new_dir + '/' + options.inflight) - self.proto[self.scheme].cd_forced(775, new_dir) + new_dir + '/' + options.inflight) + self.proto[self.scheme].cd_forced(new_dir) except: pass new_inflight_path = options.inflight + new_file diff --git a/sarracenia/transfer/azure.py b/sarracenia/transfer/azure.py index c0b58ec4e..5a61c82cb 100644 --- a/sarracenia/transfer/azure.py +++ b/sarracenia/transfer/azure.py @@ -112,7 +112,7 @@ def cd(self, path): self.path = self.path.lstrip('/') - def cd_forced(self, perm, path): + def cd_forced(self, path): logger.debug(f"forcing into {path}") self.cd(path) diff --git a/sarracenia/transfer/ftp.py b/sarracenia/transfer/ftp.py index 4cc09a6ff..a19e69e95 100755 --- a/sarracenia/transfer/ftp.py +++ b/sarracenia/transfer/ftp.py @@ -91,8 +91,8 @@ def cd(self, path): finally: alarm_cancel() - def cd_forced(self, perm, path): - logger.debug("sr_ftp cd_forced %d %s" % (perm, path)) + def cd_forced(self, path): + logger.debug("sr_ftp cd_forced %o %s" % (self.o.permDirDefault, path)) # try to go directly to path @@ -133,7 +133,7 @@ def cd_forced(self, perm, path): # chmod alarm_set(self.o.timeout) try: - self.ftp.voidcmd('SITE CHMOD ' + "{0:o}".format(perm) + ' ' + d) + self.ftp.voidcmd('SITE CHMOD ' + "{0:o}".format(self.o.permDirDefault) + ' ' + d) finally: alarm_cancel() diff --git a/sarracenia/transfer/s3.py b/sarracenia/transfer/s3.py index 0fa53ca5a..49604d2ad 100644 --- a/sarracenia/transfer/s3.py +++ b/sarracenia/transfer/s3.py @@ -123,7 +123,7 @@ def cd(self, path): self.cwd = os.path.dirname(path) self.path = path.strip('/') + "/" - def cd_forced(self, perm, path): + def cd_forced(self, path): logger.debug("sr_s3 cd %s" % path) self.cwd = os.path.dirname(path) self.path = path.strip('/') + "/" diff --git a/sarracenia/transfer/sftp.py b/sarracenia/transfer/sftp.py index cee873688..adc640634 100755 --- a/sarracenia/transfer/sftp.py +++ b/sarracenia/transfer/sftp.py @@ -91,8 +91,8 @@ def cd(self, path): alarm_cancel() # cd forced - def cd_forced(self, perm, path): - logger.debug("sr_sftp cd_forced %d %s" % (perm, path)) + def cd_forced(self, path): + logger.debug("sr_sftp cd_forced %o %s" % (self.o.permDirDefault, path)) # try to go directly to path @@ -128,6 +128,8 @@ def cd_forced(self, perm, path): try: self.sftp.mkdir(d, self.o.permDirDefault) self.sftp.chdir(d) + # Apply permDirDefault value. mkdir is limited by SFTP server umask value + self.sftp.chmod('.', self.o.permDirDefault) finally: alarm_cancel() @@ -455,12 +457,13 @@ def mkdir(self, remote_dir): pass except: return + else: + self.sftp.mkdir(remote_dir, self.o.permDirDefault) + # Apply permDirDefault value. mkdir is limited by SFTP server umask value + self.sftp.chmod(remote_dir, self.o.permDirDefault) finally: alarm_cancel() - self.sftp.mkdir(remote_dir, self.o.permDirDefault) - alarm_cancel() - # put def put(self, msg, diff --git a/tests/sarracenia/transfer/azure_test.py b/tests/sarracenia/transfer/azure_test.py index 9c74d463b..b97b84ce6 100644 --- a/tests/sarracenia/transfer/azure_test.py +++ b/tests/sarracenia/transfer/azure_test.py @@ -121,7 +121,7 @@ def test_cd_forced(): assert transfer.path == "" assert transfer.cwd == "" - transfer.cd_forced('777', "/this/Is/A/Path/") + transfer.cd_forced("/this/Is/A/Path/") assert transfer.path == "this/Is/A/Path/" assert transfer.cwd == "/this/Is/A/Path" @@ -359,4 +359,4 @@ def test_umask(): transfer = sarracenia.transfer.azure.Azure('azure', options) transfer.umask() - assert True \ No newline at end of file + assert True diff --git a/tests/sarracenia/transfer/s3_test.py b/tests/sarracenia/transfer/s3_test.py index 17129f780..7bffe17d6 100644 --- a/tests/sarracenia/transfer/s3_test.py +++ b/tests/sarracenia/transfer/s3_test.py @@ -123,7 +123,7 @@ def test_cd_forced(): assert transfer.path == "" assert transfer.cwd == "" - transfer.cd_forced('777', "/this/Is/A/Path/") + transfer.cd_forced("/this/Is/A/Path/") assert transfer.path == "this/Is/A/Path/" assert transfer.cwd == "/this/Is/A/Path" @@ -295,4 +295,4 @@ def test_umask(): transfer = sarracenia.transfer.s3.S3('s3', options) transfer.umask() - assert True \ No newline at end of file + assert True