[erlang-questions] SFTPD, directory listing and file attributes

Karolis Petrauskas k.petrauskas@REDACTED
Wed Dec 27 23:49:59 CET 2017

Hi all,

I'm trying to use the ssh_sftpd server and found strange behaviour
when listing files:

    sftp> ls -l /c/

File permissions and gid/uid are not shown with the -l option.

If listing the files with the -n option the file attributes are shown
as expected:

    sftp> ls -n /c/
    -rw-rw-r--    0 1000     1000            0 Dec 27 20:11 /c/data.csv
    -rw-rw-r--    0 1000     1000            0 Dec 27 20:12 /c/data.txt
    -rw-rw-r--    0 1000     1000            0 Dec 27 19:12 /c/some.xxx

The attributes are also shown if the files are listed using wildcard:

    sftp> ls -l /c/*
    -rw-rw-r--    0 1000     1000            0 Dec 27 20:12 /c/data.txt
    -rw-rw-r--    0 1000     1000            0 Dec 27 20:11 /c/data.csv
    -rw-rw-r--    0 1000     1000            0 Dec 27 19:12 /c/some.xxx

But in this case, the sftp client asks for file attributes for each
file explicitly. In the client debug, I see the calls similar to the
following, repeated three times in this case:

    debug3: Sent message fd 3 T:7 I:20
    debug3: Received stat reply T:105 I:20

I work on linux, Ubuntu xenial.
I use Erlang/OTP 20.1 for the server.
The client is openssh sftp, version="OpenSSH_7.2p2 Ubuntu-4ubuntu2.2,
OpenSSL 1.0.2g  1 Mar 2016".
The server and the client agrees on the sftp version 3, as the client
implements it.

I tried to look at the ssh_sftp server sources. It looks like
ssh_xfer:encode_name/3 is incorrect, because long file name is not
included in the protocol version 3
(https://tools.ietf.org/html/draft-ietf-secsh-filexfer-03#page-26, see
As I quick test, I tried to change the Vsn ranges here, but in that
case the server started to report corrupted frames.

I would be apprieciated for any pointers.

Maybe there is a way to log the sftp messages (decrypted) on the
client, it would help to compare responses from the erlang server and
the openssh server (the latter provides the attributes correctly).

Karolis Petrauskas

More information about the erlang-questions mailing list