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大师)之间的中间地带。

提前致谢!

  • Duplicity错误:BackendException:SSH连接到SERVER_IP:22失败:未知服务器SERVER_IP
  • Ubuntu:添加SFTP唯一用户访问另一个用户的主目录内的目录
  • Openssh sftp-server:.filepart支持?
  • 无法获得无密码(SSH提供)SFTP工作
  • sftp和公钥
  • 如何使用rsync <3.0指定相对上传path,生成子文件夹
  • 3 Solutions collect form web for “SFTP访问类似于被监禁的shell”

    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目录。

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.