只上载OpenSSH和Linux的SFTP?

我想build立一个只有上传权限的chroot的SFTP服务器。

回到当天,我知道我已经通过使用SETUID在FreeBSD上使用FTP来完成这个任务。 所有上传的文件都由root用户自动拥有,而其他用户则拥有只写权限。 我已经了解到这种方法在Linux上不起作用(请纠正我,如果我错了)。

我也遇到了一些FTP守护进程,通过设置上传文件的umask和拒绝使用chmod来实现这一点。

我最近来的是以下几点:

  • 在/etc/pam.d/sshd中设置一个umask,这样上传的文件将自动创build只写权限(例如0222)。 这很好,除了OpenSSH允许用户chmod任何文件,以便他可以下载任何上升的文件。 我无法find一种方法来阻止使用chmod命令 – 它似乎是一个内部命令和更改/ bin / chmod到0700不会阻止用户运行chmod ..
  • 使用Gamin或cronjob并编写一个脚本,以便在创build文件时自动更改文件的所有权。 这感觉就像一个黑客,并依靠脚本正确运行,感觉像太多的黑客和一些我需要的复杂。

我使用OpenSSH 5.3p1运行RHEL 6。

关键是要有一个SFTP帐户,可以在50个人之间安全地共享文件,而不是创build50个SFTP帐户。

ProFTPd绝对支持sftp使用的ssh-emulation模式,而且我相当肯定它会拥有通常的ftpd-normalconfiguration选项,用于强制所有权,控制上传等等。 我认为这绝对值得一看。 我不能帮助ftpd只上载configuration,但这里是我的configuration代码获取SFTP支持:

LoadModule mod_sftp.c <VirtualHost 12.34.56.78> SFTPEngine on Port 443 SFTPLog /var/tmp/proftpd-sftp.log SFTPHostKey /etc/ssh/ssh_host_rsa_key SFTPHostKey /etc/ssh/ssh_host_dsa_key DefaultRoot /home/testuser <Limit LOGIN> AllowGroup sftponly DenyAll </Limit> </VirtualHost> 

Port 443是因为我们已经在端口22上运行了sshd ,再加上我们不得不支持各种深度防火墙后面的一些客户端,而443端口几乎是所有站点允许的唯一目的地。 还有其他一些关于限制对一组用户的访问和将它们全部插入到同一个地方的方法,这些方法你可能不需要,但是我可以把它包括进来,因为我可以肯定这个configuration是按原样工作的。