拒绝除特定目录之外的 SFTP 用户的“/opt/”访问

拒绝除特定目录之外的 SFTP 用户的“/opt/”访问

我想使用我的 Web 服务器 (Debian) 作为 SFTP 服务器,为特定员工提供访问权限。 root下的dir结构如下:

/FTPUSERS/UserName_1, ... /FTPUSERS/UserName_N.

我的网站像往常一样在下面/opt/lampp/htdocs/SiteName。我希望我的员工只能/FTPUSERS通过控制台 SSH/GUI-FTPClients 使用任何方式访问该目录而不是其他目录。chroot阻止他们的正确方法是不是导航到其他目录?或者有其他方法可以阻止它们吗?请告诉我。

关于LAMPP.目前 /opt/lampp/htdocs/ 下的用户和组都是root and root.在这个链接中php.net它提到目录必须在nobody and nobody.这是权限设置的正确方法吗?

编辑:

我的操作系统是 Debian Lenny 3。目前运行的守护进程是openssh-sftpserver.我们已阻止 ftp 访问的端口 21。但 sftp 仍在端口 22 下运行。员工可以通过sftp and ssh终端登录。我们要阻止特定用户的控制台模式操作,只有网站管理员和root帐户必须拥有所有访问权限。我们还希望阻止用户/FTPUSERS使用任何 GUI FTP 客户端(例如 WinSCP)在目录之外导航。

答案1

查看您的 sshd_config。

您可能想要设置 sftp 内部 chroot。

/TFTPROOT 将是您的 chroot-dir。

这比 tftp 更安全。

这是一个很好的教程:

http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

答案2

使用带有 –d 选项的 useradd 命令,您可以添加某个用户(例如:ftpuser)及其主目录(/homedir),如下所示:

useradd ftpuser -d /homedir
passwd ftpuser

系统将提示您输入新密码:

Changing password for user <username>
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
  • 将此用户的 shell 编辑到 /etc/passwd 中的 /sbin/nologin:

    vi /etc/passwd
    ftpuser:x:506:508::/homedir:/sbin/nologin
    
  • 启用 chroot_list:

    vi /etc/vsftpd/vsftpd.conf
    chroot_list_enable=YES
    (default follows)
    chroot_list_file=/etc/vsftpd.chroot_list
    
  • ftpuser然后,您需要在文件中添加用户/etc/vsftpd.chroot_list

    vi /etc/vsftpd.chroot_list 
    ftpuser
    
  • 重新启动 vsftpd:

    /etc/init.d/vsftpd restart
    

相关内容