在Debian Squeeze中限制用户访问

我一直在考虑如何限制用户访问他们自己的目录,而不是允许他们浏览自己的用户目录。

我正在使用SFTP,并且不想安装普通的FTP,因为引入了所有额外的安全问题。

rbash听起来像一个好主意,减去它禁用cd的事实。 我希望用户能够在其主目录中创build目录,并浏览他们自己的文件夹。

一个chroot监狱听起来就像它有自己的一套问题,听起来更像是头疼而不值得。

所以,我的问题是,是否有更简单的方法来限制用户只能够浏览他们的用户目录,而不是他们的用户目录之上的任何东西?

如果你可以限制他们只是SFTP,而不允许他们通过SSHlogin,那么你可以使用内置到openssh的chroot设施。 这里是一个很好的文章解释如何

所以,按照Stew指出的那个链接和指示,我能够得到这个工作。 不过,为了让SSH密钥正常工作,我不得不做一些修改,所以我想我会发布一个我做了什么的清单,供其他人阅读。

使用SSH进行chroot用户访问SFTP:

截至Debian Squeeze 6.0.5和OpenSSH 5.5p1

  1. 添加用户: adduser username

  2. 添加一个组,将用户分配给您想要chroot的用户:

    addgroup sftponly < – 组名并不重要,只要你在下面的所有地方改变它

  3. 将用户添加到组: usermod -G groupname username

  4. 安装libpam-chroot: apt-get install libpam-chroot

  5. /etc/pam.d/login下行添加到/etc/pam.d/login

    session required pam_chroot.so debug

  6. 转到: /usr/share/doc/libpam-chroot/examples

  7. 然后: chmod 744 setup-chrootdir-shell.sh所以你可以运行脚本

  8. 运行脚本,在脚本之后指定目录:

    ./setup-chrootdir-shell.sh /path/to/userdir

  9. validation刚刚创build的脚本所在的目录是否属于用户和组根,并设置为755权限。

  10. 更改用户的主目录: usermod -m -d /home/chrootdir/home username

  11. 禁用用户的shell: chsh -s /bin/false username

  12. 将用户的文件复制到新目录(.ssh文件夹,.profile等)

  13. 编辑sshdconfiguration文件: vi /etc/ssh/sshd_config

    # %h/.ssh/authorized_keys is the default

    AuthorizedKeysFile /home/%u/.ssh/authorized_keys

    # Subsystem for chroot jail

    # Default is Subsystem sftp /usr/lib/openssh/sftp-server

    Subsystem sftp internal-sftp

    # Chroot jail config

    Match group sftponly

    ChrootDirectory /home/chrootdir/home/%u

    X11Forwarding no

    AllowTcpForwarding no

    ForceCommand internal-sftp

    Match

  14. 如果您正在使用AllowUsers ,请将此用户添加到该用户。

    AllowUsers username

  15. 编辑/etc/passwd并更改用户的用户目录位置

    vi /etc/passwd

    例如: username:x:1001:1002:/home/chrootdir/home:/bin/false

  16. 重启ssh: /etc/init.d/ssh restart