SFTP访问类似于被监禁的shell

我有一个问题,关于创build一个用户的监狱shell访问(实际上这个用户需要的是一个特定的目录的sftp access )。

场景如下 – 我有一个现有的代码是IonCube保护,所以我不能真的搞砸了 – 我坚持与它提供的输出文件夹。 它的作用是在操作过程中创build一些带有一些文件的文件夹进行下载。 所有这些都以/var/www/xy/backup/orderbackup/random-name-folder-here/files_here

现在,我想创build一个用户,他将拥有对/var/www/xy/backup/files/及其下属的sftp访问权限,但最好在其他位置。

我创build一个普通的用户,然后监狱他的目录(虽然我不知道是否可以在那里创build监狱,因为我不能改变/var/www/xy/backup/orderbackup/所有权的根源,因为它将停止保存文件) ,或者也许我应该使用其他技术。

我阅读关于RSSH,MySecureShell等的文章,这将是安全和复杂的设置(我不是一个Linux大师)之间的中间地带。

提前致谢!

OpenSSH(也提供了sftp和scpfunction)在其后续版本中获得了chrootfunction。 基本上你只需要在/etc/ssh/sshd_config文件中添加类似这些的行。

 Subsystem sftp internal-sftp Match group sftpusers ChrootDirectory /var/www/xy/backup/files/ X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp 

然后使用命令groupadd sftpusers创build一个名为sftpusers的新组。

然后,最后一步是创build一个属于组sftpusers的用户:

 useradd -g sftpusers -d /var/www/xy/backup/files yourusername passwd yourusername 

然后重新启动你的ssh服务: /etc/init.d/sshd restart ,你应该全部设置。

你可以使用sshdconfiguration来实现这一点。 创build一个用户,例如fred然后将以下内容添加到您的sshd_config文件中

 Match user fred ChrootDirectory /var/www/xy/backup/files ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no 

这将locking用户fred到所需的目录和它的子目录。 用户fred只需要访问文件和rx到目录。 检查当前的权限,它可能已经能够做到这一点。

也许你可以定义一个新的组,只是为了这个sftp用户,将目录组的所有权更改为该组,并在目录上设置setgid位?

这可能会或可能不会工作,具体取决于应用程序如何创build目录。