我之前见过有人问过这个问题,但是没有一个解决方案对我有用。我设法为用户进行了 sftp 登录,但我没有设法授予用户上传权限。
据我所知,我正在使用 OpenSSH 的 SFTP 子系统(通过 ssh 进行 ftp,端口 22,而不是单独的 FTP 服务器软件):
$ ps -ef | grep sftp-server
otheruser 61324 32347 0 14:57 pts/0 00:00:00 grep --color=auto sftp-server
这是 sshd_config:
Include /etc/ssh/sshd_config.d/*.conf
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp internal-sftp
Match User user1
ChrootDirectory /sftp_files/uploads
文件夹权限:
$ ls -ld /sftp_files/uploads
drwxr-xr-x 2 root root 4096 Jan 10 14:10 /sftp_files/uploads
$ ls -ld /sftp_files
drwxr-xr-x 3 root root 4096 Jan 9 15:15 /sftp_files
$ id user1
uid=1001(user1) gid=1001(user1) groups=1001(user1),0(root),125(ftp)
使用上述权限(/sftp_files/uploads 上的权限为 755),我设法登录、阅读和下载文件。但是当我尝试上传时,我得到了Permission denied. Error code: 3
如果我设置:
sudo chmod 775 /sftp_files/uploads
虽然我已经登录了,但我设法上传文件,但注销后,我无法再次登录。错误是:
fatal: bad ownership or modes for chroot directory "/sftp_files/uploads"
有什么方法可以让用户上传文件吗?
答案1
我找到了一个解决方案。它真的很简单。使用与上面发布的相同配置,我只是在下面添加了另一个文件夹uploads
并赋予它 777 权限。
cd /sftp_files/uploads
mkdir whatever
chmod 777 whatever
登录后,用户就可以上传文件夹内的文件whatever
。