You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by elijah baley <e_...@outlook.com> on 2017/08/05 14:50:05 UTC

Re: SCPClient upload: FilePermission depends on setting Timestamp

You seem to have a point - I see no reason why "0644" is chosen if timestamp is not preserved...


________________________________
From: Carsten.Moeller@fiduciagad.de <Ca...@fiduciagad.de>
Sent: Thursday, July 27, 2017 5:55 PM
To: dev@mina.apache.org
Subject: SCPClient upload: FilePermission depends on setting Timestamp



Hi,

I experienced some trouble trying to upload data with the SCPClient class.
It seems that using the parameter "perms" depends on whether the parameter
"time" is set. Is that meant to act this way? Seems somewhat strange to me.

Code:

                          ScpClient scpClient = session.createScpClient();

                          Collection<PosixFilePermission> perms = EnumSet.of
(PosixFilePermission.OWNER_READ, PosixFilePermission.OTHERS_EXECUTE);
                          long now = System.currentTimeMillis();
                          ScpTimestamp tsp = new ScpTimestamp(now, now);
                          scpClient.upload("test\n".getBytes(), "test.txt",
perms, null); //uploads Data with Permissions "644"
                          scpClient.upload("test\n".getBytes(), "test2.txt",
perms, tsp); //uploads Data with Permissions "401" as requested


results in Files:

-r-------x   1 group users     5 Jul 27 16:33 test2.txt
-rw-r--r--   1 group users     5 Jul 27 16:33 test.txt


The class SCPHelper (method sendStream, line 608) builds the scp command
like this:

        Set<PosixFilePermission> perms = EnumSet.copyOf
(resolver.getPermissions());
        String octalPerms = preserve ? getOctalPermissions(perms) : "0644";
        String fileName = resolver.getFileName();
        String cmd = "C" + octalPerms + " " + fileSize + " " + fileName;

So it depends on the param "preserve", which is set in DefaultSCPClient
line 128 as "time != null".