重要的是要给你的严格的FTP用户在 Linux 系统上没有真实的 shell 账户。 这样一来,如果有人出于任何原因成功逃脱了FTPchroot 环境,由于他们没有 bash shell,他们就不可能执行任何用户任务。 首先,为此目的创建新用户;
这些用户将是被允许连接到你的FTP服务器的用户。 |
使用以下命令在/etc/passwd文件中创建用户。 必须为你允许访问你的FTP服务器的用户。
[root@deep ] /# mkdir /home/ftp [root@deep ] /# useradd -d /home/ftp/ftpadmin/ -s /dev/null ftpadmin > /dev/null 2>&1 [root@deep ] /# passwd ftpadmin |
Changing password for user ftpadmin New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully |
The mkdir 命令将创建ftp目录,位于/home目录下,用于处理所有FTP我们服务器上用户的 home 目录。
The useradd 命令将添加名为ftpadmin的新用户到我们的 Linux 服务器。
Finally, the passwd 命令将为此用户设置密码ftpadmin.
编辑/etc/shells文件,使用 vi/etc/shells并添加一个不存在的 shell 名称,例如null,例如。 这个假的 shell 将限制系统上对FTP用户使用此命令。
[root@deep ] /# vi /etc/shells |
/bin/bash /bin/sh /bin/ash /bin/bsh /bin/tcsh /bin/csh /dev/null |
现在,编辑你的/etc/passwd文件并手动添加/./行来分隔/home/ftp目录和/ftpadmin目录,用户ftpadmin应该自动 chdir 到该目录。 必须为每个FTP你添加到你的passwd文件中的用户执行此步骤。
ftpadmin:x:502:502::/home/ftp/ftpadmin/:/dev/null |
ftpadmin:x:502:502::/home/ftp/./ftpadmin/:/dev/null ^^ |
再一次,/dev/null部分禁用了他们作为常规用户登录。 通过此修改,用户ftpadmin现在拥有一个假的 shell 而不是一个真实的 shell,从而正确地限制了对系统的访问。