如何使用 chroot Jail 将 SFTP 用户限制到主目录
在本教程中,我们将讨论如何将 SFTP 用户限制在其主目录或特定目录中。这意味着用户只能访问他/她各自的主目录,而不能访问整个文件系统。
限制用户主目录至关重要,尤其是在共享服务器环境中,这样未经授权的用户就不会偷看其他用户的文件和文件夹。
重要:另请注意,本文的目的仅提供 SFTP 访问,而不是 SSH 登录,通过遵循本文将拥有进行文件传输的权限,但不允许进行远程 SSH 会话。
建议阅读: 使用 Chrooted Jail 限制 SSH 用户对某些目录的访问
最简单的方法是创建一个用于 SFTP 访问的 chrooted 监狱环境。此方法对于所有 Unix/Linux 操作系统都是相同的。使用 chrooted 环境,我们可以将用户限制在其主目录或特定目录中。
限制用户只能访问主目录
在本部分中,我们将创建名为 sftpgroup 的新组,并为用户帐户分配正确的所有权和权限。有两种选择可以将用户限制在主目录或特定目录中,我们将在本文中看到这两种方法。
创建或修改用户和组
让我们将现有用户(例如 howtoing
)限制到他/她名为 /home/howtoing
的主目录。为此,您需要使用 groupadd 命令创建一个新的 sftpgroup 组,如下所示:
groupadd sftpgroup
接下来,将用户'howtoing'分配到sftpgroup组。
usermod -G sftpgroup tecmint
您还可以使用 useradd 命令创建新用户,例如 senthil
并将该用户分配到 sftpusers 组。
adduser senthil -g sftpgroup -s /sbin/nologin
passwd tecmint
修改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/tecmint
验证 SSH 和 SFTP 用户登录
现在,是时候检查本地系统的登录情况了。尝试从本地系统通过 ssh 连接远程系统。
ssh [email
这里,
- howtoing – 远程系统的用户名。
- 192.168.1.150 – 远程系统的 IP 地址。
示例输出:
[email 's password:
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.
然后,使用SFTP访问远程系统。
sftp [email
示例输出:
[email 's password:
Connected to 192.168.1.150.
sftp>
让我们检查当前的工作目录:
sftp> pwd
Remote working directory: /
sftp> ls
tecmint
这里,howtoing
是主目录。 Cd 到 howtoing 目录并创建您选择的文件或文件夹。
sftp> cd tecmint
Remote working directory: /
sftp> mkdir test
tecmint
将用户限制到特定目录
在前面的示例中,我们将现有用户限制在主目录中。现在,我们将了解如何将新用户限制在自定义目录中。
创建组和新用户
创建一个新组 sftpgroup
。
groupadd sftpgroup
接下来,为SFTP组创建目录并为root用户分配权限。
mkdir -p /sftpusers/chroot
chown root:root /sftpusers/chroot/
接下来,为每个用户创建新目录,他们将具有完全访问权限。例如,我们将使用以下一系列命令创建 howtoing
用户及其具有正确组权限的新主目录。
adduser tecmint -g sftpgroup -s /sbin/nologin
passwd tecmint
mkdir /sftpusers/chroot/tecmint
chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
chmod 700 /sftpusers/chroot/tecmint/
配置 SSH 以进行 SFTP 访问
修改或在文件末尾添加以下行:
#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 环境来限制用户主目录。如果您觉得这有用,请在您的社交网络上分享这篇文章,并在下面的评论部分告诉我们是否有任何其他方法来限制用户主目录。