如何使用 chrooted 目录为多个组设置一个可工作的 sftp 服务器?
答案1
转发自 OP 的原始问题:
我决定分享一下我最终成功的方法。我是刚接触 Ubuntu 2 个月的新手,所以请不要批评我 :) 这并不是什么新鲜事,但我很难找到一篇完整的文章来解释像我这样的新手如何实现它。
Sudo vi /etc/ssh/sshd_config
并添加
Subsystem sftp internal-sftp
Match group Group-A
ChrootDirectory /Group-A
ForceCommand internal-sftp
AllowTcpForwarding no
Match group Broup-B
ChrootDirectory /Group-B
ForceCommand internal-sftp
AllowTcpForwarding no
保存并退出并开始创建用户和组目录:
sudo useradd Group-A-Users
sudo useradd Group-B-Users
sudo passwd Username
sudo usermod -G Group-A Group-A-Users= All users that belong to this group
sudo usermod -G Group-B Group-B-Users= All users that belong to this group
sudo mkdir /Group-A
sudo mkdir /Group-B
sudo mkdir /Group-A/Upload
sudo mkdir /Group-B/Upload
现在让我们设置目录的权限。主文件夹必须由 root 拥有,并且任何其他用户或组都不应有对该文件夹的写访问权限,否则会导致 ssh 在重启后崩溃。
sudo chown root /Group-A
sudo chown root /Group-B
sudo chmod go-w /Group-A
sudo chmod go-w /Group-B
sudo chgrp GroupName /Group-A/Upload
sudo chgrp GroupName /Broup-B/Upload
sudo chmod ug+rwX /Group-A/Upload
sudo chmod ug+rwX /Group-B/Upload
本指南面向像我一样刚接触 Ubuntu 并想为工作或朋友设置安全的 sftp 服务器的新手用户。
答案2
这种方法可以奏效,但是只需创建一个组并在特定组中添加尽可能多的用户,以便当用户登录到 SFTP 服务器时,他将被 chroot 到该特定目录。
然后将文件夹 (例如,文件夹名称为 A、B、C 等) 的所有权从根用户手中转移到用户 x 手中,并限制其他人的访问权限,而文件夹 B 的所有权从根用户转移到用户 y 手中,这样我们就不会弄乱配置文件。
无论哪种方式都是正确的,具体如何做取决于我们的工作环境和要求。