类似于被监禁的 shell 的 SFTP 访问

Ran*_*ash 4 redhat jail sftp

我有一个关于创建具有某种被监禁的 shell 访问权限的用户的问题(实际上这个用户所需要的只是sftp access一个特定目录)。

场景如下 - 我有一个受 IonCube 保护的现有代码,所以我不能真正弄乱它 - 我被它提供的输出文件夹卡住了。它的作用是创建一些文件夹,其中包含一些要在操作期间下载的文件。一切都结束了/var/www/xy/backup/orderbackup/random-name-folder-here/files_here

现在,我想创建一个用户,该用户将拥有 sftp 访问权限/var/www/xy/backup/files/及其下属,但最好没有其他任何地方。

我是创建一个普通用户,然后将他关在该目录中(尽管我不确定我是否可以在那里创建 jail,因为我无法将/var/www/xy/backup/orderbackup/所有权更改为 root,因为它会停止保存文件),或者我应该使用其他一些技术。

我阅读了有关 RSSH、MySecureShell 等的帖子。哪种方法介于安全性和设置复杂性之间(我不是 Linux 专家)。

提前致谢!

Jan*_*nen 6

OpenSSH(它还提供 sftp 和 scp 功能)在其更高版本中获得了 chroot 功能。基本上你只需要在你的/etc/ssh/sshd_config文件中添加与这些类似的行。

Subsystem sftp internal-sftp

Match group sftpusers
     ChrootDirectory /var/www/xy/backup/files/
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)

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

最后一步是创建一个属于sftpusers组的用户:

useradd -g sftpusers -d /var/www/xy/backup/files yourusername 
passwd yourusername
Run Code Online (Sandbox Code Playgroud)

然后只需重新启动您的 ssh 服务:/etc/init.d/sshd restart您应该已准备就绪。

  • 值得注意的是,ChrootDirectory 功能仅在 OpenSSH 4.8p1 和 RHEL 5.5 只有 OpenSSH 4.3p2 后才添加。 (2认同)