如何限制SFTP用户到主目录使用chroot Jail

在本教程中,我们将讨论如何SFTP用户限制在自己的主目录或特定的目录。 这意味着用户只能访问他/她各自的主目录,而不是整个文件系统。

限制用户主目录是至关重要的,尤其是在共享服务器环境中,以便未经授权的用户不会偷看到其他用户的文件和文件夹。

重要提示 :另外请注意,这篇文章的目的只是,不是SSH登录,按照本文将拥有的权限做的文件传输提供SFTP访问,但不允许进行远程SSH会话。

最简单的方法是为SFTP访问创建一个chroot jail环境。 此方法对于所有Unix / Linux操作系统都相同。 使用chrooted环境,我们可以将用户限制到其主目录或特定目录。

将用户限制到家目录

在本节中,我们将创建新组名为sftpgroup并分配正确的所有权和权限的用户帐户。 有两个选择来限制用户回家或特定目录,我们将在本文中看到两种方式。

创建或修改用户和组

让我们限制现有用户,例如youcl ,他/她的home目录名为/home/youcl 对于这一点,你需要创建使用命令GROUPADDsftpgroup组如图所示:

# 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

这里,

  1. youcl -远程系统的用户名。
  2. 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&gt pwd
Remote working directory: /
sftp&gt ls
youcl  

在这里, youcl是主目录。 cd到youcl目录并创建你所选择的文件或文件夹。

sftp&gt cd youcl
Remote working directory: /
sftp&gt 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环境限制用户主目录。 如果你觉得这很有用,分享这篇文章在你的社交网络,让我们知道在下面的评论部分,如果有任何其他方法来限制用户主目录。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏