[
https://issues.apache.org/jira/browse/SSHD-1129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17286891#comment-17286891
]
Lyor Goldstein commented on SSHD-1129:
--------------------------------------
Not clear from your description whether the peer is MINA SSHD or some other
server. In any case, please note that in SFTP V3 (which is the most widely used
version), there is not standard way to provide owner/group name - only UID/GID
(integers) - see
[https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt] section 5
{quote}
uint32 uid present only if flag SSH_FILEXFER_ATTR_UIDGID
uint32 gid present only if flag SSH_FILEXFER_ATTR_UIDGID
{quote}
The +names+ of the user/group are only available for V4 and on - very rare....
If you are communicating with a V3 server (which is most likely) we cannot
provide a name for the {{UserPrincipal/GroupPrincipal}} since V3 does not
provide them. Please note that the {{SftpFileSystemProvider}} is a +best
effort+ approximation and some features might not be available due to the SFTP
protocol limitations.
> Posix file owner and group always null
> --------------------------------------
>
> Key: SSHD-1129
> URL: https://issues.apache.org/jira/browse/SSHD-1129
> Project: MINA SSHD
> Issue Type: Bug
> Affects Versions: 2.1.0, 2.6.0
> Reporter: Logan
> Priority: Major
>
> Unable to read remote path owner and group details when connected through
> sftp. Below is code snippet.
>
> {code:java}
> public void singlePath() throws IOException {
> try (SshClient client = SshClient.setUpDefaultClient()) {
> client.start();
> try (ClientSession session = client.connect("user", "host",
> 22).verify(SFTP_SESSION_TIME_OUT_MILLIS).getSession()) {
> session.addPasswordIdentity("xxxx");
> session.auth().verify(SFTP_SESSION_TIME_OUT_MILLIS);
> SftpFileSystemProvider provider = new SftpFileSystemProvider(client);
> String[] paths = new String[] { "/tmp" };
> try (FileSystem fs = provider.newFileSystem(session)) {
> boolean posix = fs.supportedFileAttributeViews().contains("posix");
> for (String path : paths) {
> System.out.println(path + ":");
> Path remotePath = fs.getPath(path);
> if (posix) {
> PosixFileAttributes posixAttrs = Files
> .getFileAttributeView(remotePath, PosixFileAttributeView.class)
> .readAttributes();
> Set<PosixFilePermission> perms = posixAttrs.permissions();
> System.out.println(PosixFilePermissions.toString(perms));
> UserPrincipal user = posixAttrs.owner();
> System.out.println(user == null ? "NULL" : user.getName());
> GroupPrincipal group = posixAttrs.group();
> System.out.println(group == null ? "NULL" : group.getName());
> }
> }
> }
> }
> }
> }
> {code}
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]