如何在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中将用户限制到特定的目录。
如果你遇到任何问题或任何反馈,请在下面留下评论。