我正在努力解决有关在 Raspberry Pi 上使用 chroot 设置的简单 sftp 服务器的问题。特别是,当我连接到 sftp 服务器并尝试创建文件夹时,出现“无法创建目录:失败”。
我在 sftp_users 组中创建了一个名为 andrea_share 的用户
# adduser --no-create-home andrea_share
# usermod -a -G sftp_users andrea_share
# usermod --shell /usr/bin/nologin andrea_share
/dir_sftp/andrea/share
然后,我使用以下权限创建了 sftp 文件夹:
drwxr-xr-x 3 root root 4096 XXX XX XX:XX dir_sftp
drwxr-xr-x 3 root root 4096 XXX XX XX:XX andrea
drwxr-xr-x 3 andrea_share sftp_users 4096 XXX XX XX:XX share
sshd_config文件已修改为:
# Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
并在文件末尾
Match User andrea_share
ChrootDirectory /dir_sftp/andrea
ForceCommand internal-sftp
PasswordAuthentication yes
AllowTCPForwarding no
X11Forwarding no
和是必需的PasswordAuthentication
,X11Forwarding
因为它们之前分别设置为 no 和 yes
我尝试重新启动系统并更新软件包但没有成功。
更新 15/12/2020
这是当我尝试在 /share 中创建文件夹时得到的输出
sftp> pwd
Remote working directory: /share
sftp> mkdir ./test
Couldn't create directory: Failure
此外,我可以从 /share 文件夹中删除文件,但无法上传文件。这是我得到的输出的示例:
sftp> put ./test.jpg
Couldn't write to remote file "/share/test.jpg"
其中 test.jpg 是我本地机器上的测试图片。
答案1
问题解决了。由于我的 rsync 设置错误,带有 sftp 文件夹的驱动器已满。清理驱动器后,sftp 服务器可以正常工作。抱歉,这是我的错误。
答案2
您无法在目标用户的主目录中创建目录,因为它(正确地)由 root 拥有,并且只有 root 有权写入该目录。这就是您创建share
子目录的原因 - 您可以在其中创建和删除文件/目录。
(这不是 Windows;重新启动很少会使系统执行不同的操作。重新启动对于 Windows 如此有效有充分的理由,但它们超出了本文的范围。)