我正在使用 RedHat Gnu/Linux,我有一组 10 个用户,我想限制所有用户的访问。以下是我希望尊重他们的规则:
- 对于每个用户
user_i
,都有一个名为 的文件夹user_i
。应该user_i
对其目录及其中的所有文件/目录具有写入和读取权限。 - 当
user_i
连接到机器时,他应该user_i
在默认目录中找到自己。 - 他(用户
user_i
)看不到其他目录或文件,也无权访问它们。该user_i
目录是他的“根”目录。
我创建了该组,创建了所有用户并将他们分配到该组,并且创建了所有文件夹。但我不知道如何继续下去。
我在网上和这个网站上查看过。大多数结果都谈到了/etc/ssh/sshd_config
对使用 SSH 连接的用户进行修改,而我的结果也需要通过 FTP 和 SFTP 连接。其他指南讨论了向特定组的所有用户授予对一个共享文件夹的访问权限,这不是我的情况,因为我需要一个分离文件夹给每个用户。
编辑:
感谢大家的互动和有用的信息,对于给您带来的困惑,我深表歉意。这里我先澄清一下规范:
这些
user_i
文件夹是在 /transfers 目录中专门为每个用户创建的新文件夹,并以其用户名命名。所以层次结构看起来类似于:/ --transfers/ ----user_i/ ------received_data/ ------archive_data/
每个都会在子文件夹和
user_i
中写入和读取数据。他无法访问任何其他目录,包括典型的 Linux 目录,特别是其他用户的目录(其他 9 个目录)。received_data
archive_data
user_i
通过连接到服务器,他应该默认访问文件夹,因此只能看到和
user_i
两个子文件夹。received_data
archive_data
所有人都
user_i
属于专门为他们创建的团体。
答案1
您很可能正在寻找ChrootDirectory
的选项sshd_config
。
对于每个用户 user_i,都有一个名为 user_i 的文件夹。 user_i 应该对其目录及其中的所有文件/目录具有读写权限。
这是不可能的chroot
。用户无法对他们chroot
所在的目录进行写访问,因为这将是安全漏洞(CVE-2009-2904)。每个用户都需要有自己的chroot
可以写入的目录。文件系统层次结构可以如下所示:
directory -- owner:group permissions
/chroots/ -- root:root 700
user_i/ -- root:root 700
data/ -- user_i:chroot_users 700
可以sshd_config
看起来像这样:
Match Group chroot_users
ChrootDirectory /chroots/%u/
这将分离用户。但请注意,这些用户在其单独的目录中没有任何可运行的程序!您只能授予他们 SFTP 访问权限:
Subsystem sftp internal-sftp
或者将所需的程序复制到每个 chroot 中,例如简单的bash
:
cp --parents /bin/bash /chroots/user_i/
cp --parents `ldd /bin/bash | cut -d'>' -f2 | awk '{print $1}'` /chroots/user_i/