SFTP上传文件权限错误且远程目录为空

SFTP上传文件权限错误且远程目录为空

当通过 连接到 sftp 时sftp user@serveripaddress,我通过 检查了文件列表ls,但远程目录中没有显示任何内容,也尝试过cd但没有其他可以移动到的路径。

我试过了lls,这显示了我的项目的目录。

尝试通过远程方式添加目录,mkdir test 但出现错误:

Couldn't create directory: Permission denied

我在本地目录中找到了文件/backups/mall/20180524_mallproducts.csv

所以现在我尝试通过命令测试将文件上传到远程目录, put backups/client/mall/20180522150444_mallproduct.csv /

这给了我以下结果:

Uploading backups/client/mall/20180522150444_mallproduct.csv to /20180522150444_mallproduct.csv

remote open("/20180522150444_mallproduct.csv"): Permission denied

所以我使用 chmod,但这给了我错误,因为远程目录是空的(没有文件或文件夹):

Couldn't setstat on "/": Permission denied

可能出了什么问题?如何更改 sftp 中的权限?

在 中docker-compose.yml,这是我的 sftp 设置,

sftp:
    image: atmoz/sftp
    restart: always
    volumes:
        - ./data/sftp:/home/foo/upload
    ports:
        - "2222:22"
    command: sftp:pass:48

home访问 SFTP 时我希望看到文件夹,但目录是空的。

起初我正在访问sudo docker-compose exec sftp bash,它有/home/foo/upload一个目录。

但随后我通过访问sftp user@serveripaddress,发现我的代码正试图上传到这里。

这是通过 sftp 上传的代码:

<?php

namespace Mall\Infra\Transfer;

use phpseclib\Net\SFTP;

class SftpPutTransfer
{

    /**
     * @var File $name
     */
    public function put(string $remote, string $local)
    {
        $sftp = new SFTP('user', 22);
        if (!$sftp->login('user', 'pass')) {
            var_dump('failed');
        } else {
            var_dump('success');
            var_dump($sftp->rawlist());
            $sftp->put($remote, $local, SFTP::SOURCE_LOCAL_FILE);
        }
    }
}

我对要连接和测试什么 SFTP 感到困惑。

答案1

根据https://github.com/atmoz/sftp文档,您必须创建至少一个子目录并从那里使用它。

相关内容