我在同一台机器上运行 SFTP 和 Samba 服务器。为了在本地网络中更方便地访问 SFTP,它也应该可以从那里访问。为此,我将其绑定到现有的 Samba 共享中(sudo mount --bind /home/sftp_user/share/ /path/to/samba/share/sftp-share/
)。
我像这样监禁了 SFTP 目录:
sudo chown root:root /home/sftp_user
sudo chmod 0755 /home/sftp_user
sudo mkdir /home/sftp_user/share
sudo chown root:sftponly /home/sftp_user/share
sudo chmod 0755 /home/sftp_user/share
一些限制:
我无法将 Samba 用户添加到该
sftponly
组,因为这样ssh
就不再起作用了(该用户同时具有ssh
Samba 访问权限)SFTP 身份验证与密钥文件配合使用;
ssh
使用 2fa(密码 + OTP)进行身份验证 -> 此身份验证方法应保持如下状态将所有者更改
share
为 Samba 用户部分有效:我可以通过 SFTP 和 Samba 添加文件,但 SFTP 用户(显然)不能从 Samba 用户中删除文件sudo chown samba_user:sftponly /home/sftp_user/share
唯一似乎有效的选择是将权限设置得相当广泛:
sudo chown root:sftponly /home/sftp_user/share # Stays the same
sudo chmod 0777 /home/sftp_user/share
这引发了一些安全担忧。
一般情况下,每个用户都可以访问(读取和写入)/home/sftp_user/share
(通过 Samba 或 SFTP)。这个工作示例是可行的方法吗,还是有更好的(安全但不太复杂的)解决方案(ACL 可能是一种选择,但我认为在这种情况下这会有点过头了)。
答案1
仅供参考,我刚刚遇到了这样一种情况,当使用绑定挂载而不是普通挂载时,Samba 突然停止对我的用户进行身份验证。因为这是一个遗留的噩梦,我也在用 18.04.x - 这可能是绑定挂载的问题。