如何在Linux中创建用户只能访问一个特定的目录。有必要通过限制SSH或只允许访问特定目录来限制具有特定特权的用户。

本指南提供了通过修改SSH配置文件来限制用户只访问特定目录的详细指南。这也称为chroot监狱设置。

本指南在运行Ubuntu 20.04 Linux机器的平台上进行了测试。这种设置肯定可以在任何云、VPS或运行任何Linux发行版的专用服务器上运行。

先决条件

根访问服务器或具有sudo特权的用户

创建新组

创建一个新组,以便在该组中添加所有用户。

sudo groupadd restriction

创建用户并添加到组

现在您可以创建用户或将现有用户添加到新的限制组。

如果您想创建一个新用户,您可以使用如下这个命令。

sudo useradd -g restriction username

-g限制将用户添加到我们在上面创建的受限组。

如果您需要防止shell访问,您需要使用-s标志与/bin/false值,这将防止SFTP访问。如果SFTP被阻止,您就不能使用SSH密钥访问服务器。在这种情况下,您需要安装FTP,要安装和配置VSFTP,您可以遵循以下设置。

现在我们不会阻止shell访问。

如果需要将现有用户添加到组中,可以使用此命令。

sudo usermod -g restriction username

您可以使用相同的命令创建无限的用户。

配置SSH

创建用户并将其分配给组之后,您可以配置SSH限制对特定目录的访问。

打开SSH配置文件/etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

转到文件底部,找到从子系统Subsystem sftp /usr/lib/openssh/sftp-server开始的行,并将其替换为以下内容。

Subsystem sftp internal-sftp

最后在底部添加以下行。

Match user username
ChrootDirectory /path/to/folder
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

按CTRL + X和Y,然后Enter保存并退出文件。

现在重新启动SSH服务以应用更改。

sudo systemctl restart ssh

对于CentOS或Fedora,可以使用以下命令重新启动SSH服务。

sudo systemctl restart sshd

一旦SSH重新启动,您就可以访问您的实例,您将只被允许查看您所使用的目录。

测试设置

如果您没有启用基于密码的身份验证,您可以设置SFTP访问您的实例或服务器,并使用FileZilla或WinSCP或CyberDuck测试您的配置。

你有你的密码设置,你可以使用这些命令来检查。

使用SFTP命令打开到服务器的SFTP连接。

sftp username@IP_ADDRESS

在提示时输入您之前设置的密码。

现在您将登录到服务器,并可以看到sftp>提示符。

运行pwd命令,如果配置工作正常,则输出为/。

输出

sftp> pwd
Remote working directory: /

总结

现在,您已经了解了如何在Linux中将用户限制到特定的目录。

如果你遇到任何问题或任何反馈,请在下面留下评论。

发表回复