我有以下问题:如果我正在安装,sshf mail@host:/home/mail ./foo
是否有任何方法可以限制安装的可能性并且不提供 shell 访问权限?我想要的只是远程、安全的邮件存储,但 sshfs 允许的太多了。此外,似乎它要求mail
用户拥有 shell。有什么更好的解决方案吗?
其次,用户是否必须拥有 cron 的 shell 才能使其工作?
编辑:看来我做得不够干净。我拥有的:
* remote host(server), that fetch mail via `fetchmail` into some directory.
* client, that need rw, key-authorization access to mentioned mail dir.
最好是,该客户端除了 maildir 之外不会访问任何其他内容。事实上,我需要具有公钥认证的 nfs。
答案1
sshfs
使用 SFTP,它只需要允许执行 SFTP 服务器程序,其完整路径可以变化,但始终记录在/etc/ssh/sshd_config
;例如
Subsystem sftp /usr/lib/ssh/sftp-server
编写一个仅允许执行此单个命令的“sftp-only”shell 很容易。目前已有多个。
此外,该Subsystem
行可以更改为使用internal-sftp
,它内置于sshd
守护进程中,并且不是需要一个外壳:
Subsystem sftp internal-sftp
这甚至允许用户 chroot 到特定的目录。
答案2
我想要的只是远程、安全的邮件存储,
您可以将其视为两个不同的问题之一:
- “通用文件”的远程安全存储,您的邮件文件只是普通文件的一个特例
- 远程安全存储专门用于邮件
vsftpd
在前一种情况下,我会选择使用显式 TLS 之类的 FTP,您可以在远程端使用例如设置它,并设置一个 cron 作业(本地)以使用lftp
命令(例如,它是一个可编写脚本的 FTP 客户端)通过 ftp 推送邮件。不需要远程框上的 shell 访问权限,您甚至可以设置客户端证书,这样您就可以进行无密码登录,而无需将密码存储在脚本中。
在后一种情况下,您可能需要查看 smtp 中继并将邮箱本身的副本存储在远程服务器上的 imap 邮件池中,但这设置起来要复杂得多。