我正在使用https://charbelnemnom.com/2019/06/how-to-deploy-sftp-service-on-microsoft-azure/提供的模板,在该示例中,他安装了特定于用户的卷。这很完美。我想将挂载更改为仅挂载“ / home”目录,以便FTP服务器将在已挂载的home目录下自动创建用户文件夹。启动容器时,启动容器时会创建每个用户的用户文件夹,但是登录后,我得到
chroot目录组件“ / home /”的不良所有权或模式
[我看过其他文章指出root必须有权访问这些目录,但是我很困惑,因为root显然具有足够的权限在已挂载的home目录中创建用户文件夹。那么,为什么用户尝试登录时会出现错误?我将如何修改资源模板,以允许FTP服务器自动创建用户文件夹,同时还允许将用户CHRoot到其中?
以下部分有效:
"volumeMounts": [
{
"mountPath": "/home/user1",
"name": "sftpvolume",
"readOnly": false
}
]
这不起作用:
"volumeMounts": [
{
"mountPath": "/home",
"name": "sftpvolume",
"readOnly": false
}
]
我认为上述两种方法之间的主要区别在于,在第一种可行的方法中,部署脚本创建用户目录(该根目录可能具有许可权),而如果FTP服务器在启动时创建用户目录,则可能不。但我不确定该如何解决。
我认为您正在观察的行为与基础docker映像atmoz/sftp有关。他们的自述文件的“用法”部分中的注释说:
请记住,用户不能直接在自己的主目录下创建新文件,因此,如果要他们上传文件,请确保至少有一个子目录
[您可能希望向sftp容器提供/host/users.conf
文件,用户列表可以包括您希望在每个用户的主文件夹中创建的文件夹的名称。
例如,/host/users.conf
中的以下内容将创建两个用户,并且两个用户的主文件夹中均应具有上传文件夹。
username1:pass123:1001:100:upload
username2:pass123:1002:100:upload