在本教程中,我们将讨论如何SFTP用户限制在自己的主目录或特定的目录。 这意味着用户只能访问他/她各自的主目录,而不是整个文件系统。
限制用户主目录是至关重要的,尤其是在共享服务器环境中,以便未经授权的用户不会偷看到其他用户的文件和文件夹。
重要提示 :另外请注意,这篇文章的目的只是,不是SSH登录,按照本文将拥有的权限做的文件传输提供SFTP访问,但不允许进行远程SSH会话。
最简单的方法是为SFTP访问创建一个chroot jail环境。 此方法对于所有Unix / Linux操作系统都相同。 使用chrooted环境,我们可以将用户限制到其主目录或特定目录。
将用户限制到家目录
在本节中,我们将创建新组名为sftpgroup并分配正确的所有权和权限的用户帐户。 有两个选择来限制用户回家或特定目录,我们将在本文中看到两种方式。
创建或修改用户和组
让我们限制现有用户,例如youcl
,他/她的home目录名为/home/youcl
。 对于这一点,你需要创建使用命令GROUPADD新sftpgroup组如图所示:
# groupadd sftpgroup
接下来,分配用户youcl“来sftpgroup组。
# usermod -G sftpgroup youcl
您还可以创建使用新的用户useradd命令 ,例如senthil
并分配用户sftpusers组。
# adduser senthil -g sftpgroup -s /sbin/nologin # passwd youcl
修改SSH配置文件
打开并添加以下行/etc/ssh/sshd_config
的配置文件。
Subsystem sftp internal-sftp Match Group sftpgroup ChrootDirectory /home ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
保存并退出文件,重新启动sshd服务以使新更改生效。
# systemctl restart sshd OR # service sshd restart
如果您将多个用户chroot到同一目录,您应该更改每个用户的主目录的权限,以防止所有用户浏览其他用户的主目录。
# chmod 700 /home/youcl
验证SSH和SFTP用户登录
现在,是时候检查来自本地系统的登录。 尝试从本地系统ssh您的远程系统。
# ssh youcl@192.168.1.150
这里,
- youcl -远程系统的用户名。
- 192.168.1.150 -远程系统的IP地址。
示例输出:
youcl@192.168.1.150's password: Could not chdir to home directory /home/youcl: No such file or directory This service allows sftp connections only. Connection to 192.168.1.150 closed.
然后,使用SFTP访问远程系统。
# sftp youcl@192.168.1.150
示例输出:
youcl@192.168.1.150's password: Connected to 192.168.1.150. sftp>
让我们检查当前工作目录:
sftp> pwd Remote working directory: / sftp> ls youcl
在这里, youcl
是主目录。 cd到youcl目录并创建你所选择的文件或文件夹。
sftp> cd youcl Remote working directory: / sftp> mkdir test youcl
将用户限制到特定目录
在我们的上一个示例中,我们将现有用户限制到主目录。 现在,我们将了解如何将新用户限制到自定义目录。
创建组和新用户
创建新组sftpgroup
。
# groupadd sftpgroup
接下来,创建SFTP组的目录并为root用户分配权限。
# mkdir -p /sftpusers/chroot # chown root:root /sftpusers/chroot/
接下来,为每个用户创建新目录,他们将具有完全访问权限。 例如,我们将创建youcl
用户,它采用以下命令系列是新的主目录使用正确的组的权限。
# adduser youcl -g sftpgroup -s /sbin/nologin # passwd youcl # mkdir /sftpusers/chroot/youcl # chown youcl:sftpgroup /sftpusers/chroot/youcl/ # chmod 700 /sftpusers/chroot/youcl/
为SFTP访问配置SSH
在文件末尾修改或添加以下行:
#Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftpgroup ChrootDirectory /sftpusers/chroot/ ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
保存并退出文件。 重新启动sshd服务以使保存的更改生效。
# systemctl restart sshd OR # service sshd restart
就是这样,你可以通过使用上面提供的一步登录到远程SSH和SFTP服务器检查验证SSH和SFTP登录 。
请注意,此方法将禁用shell访问,即,您无法使用SSH访问远程系统的shell会话。 您只能通过SFTP访问远程系统,并与本地和远程系统进行文件传输。
结论
现在你知道如何在Linux中使用Chroot环境限制用户主目录。 如果你觉得这很有用,分享这篇文章在你的社交网络,让我们知道在下面的评论部分,如果有任何其他方法来限制用户主目录。