我想知道如何使用 OpenSSH 服务器限制用户访问。假设我想要
- 用户 1 只能访问 /Media、/Documents 及其主文件夹,
- 用户 2 只能访问 /Folder21 及其主文件夹,
- 用户 3 只能访问 /Documents、/Folder21 及其主文件夹,
我怎能做这样的事?
我找到了如何使用一个文件夹来做到这一点,但我认为这适用于所有用户?描述在这里:https://bensmann.no/restrict-sftp-users-to-home-folder/
(从我上面给出的链接复制:
我可以这样做吗:
$ usermod User1 -s /bin/false
$ usermod User2 -s /bin/false
并设置用户的主目录:
$ usermod User1 -d /folder
$ usermod User2 -d /folder
然后将所有其他文件夹设为 /folder 的子文件夹,并使用命令根据我的意愿限制对这些文件夹的访问chmod
,或者有更好的解决方案??
补充和说明:将其添加到他们的主目录不是一个选择,因为它是共享文件夹,一些用户需要访问相同的内容,而它仅限于其他用户,
我心里想的是这样的:
- 用户 1
- 用户 2
- 用户 3
用户 4
文件夹“网络文档”
- 文件夹“应用程序文档”
- 文件夹“下载”
文件夹“媒体”
用户 1 需要对所有内容具有完全访问权限,但对应用程序文档列表项具有只读访问权限
- 用户 2 需要对两个文档文件夹的完全访问权限
- 用户 3 只需要访问“媒体”文件夹
- 用户 4 只需要访问文件夹“下载”和“应用程序文档”
答案1
您不能将希望每个用户访问的文件夹放在他们的主目录中吗?如果不行,我相信 ssh 使用与计算机上的文件系统相同的文件权限。因此,您可以使用与授予用户访问其主目录之外的文件夹的权限相同的文件权限修饰符,如下所示: https://superuser.com/questions/280994/give-write-permissions-to-multiple-users-on-a-folder-in-ubuntu
答案2
您可以做一个简单的权限控制系统。
首先,您需要一个目录树,所以让我们这样做:
~ (Home Folder
|
|---> Their Files
|
|---> Symlink to /opt/public/
在 中/opt/public/
,您拥有所有文件夹。在本例中,
Media
Documents
Folder51
由于您只有三个用户(和三个文件夹),因此您可以创建组。
一个简单的方法是为每个文件夹创建一个组。例如:
groupadd opt-public-media-access
groupadd opt-public-documents-access
groupadd opt-public-folder51-access
现在,将用户添加到特定组(在本例中,user1
将添加到media
组。)
usermod -a -G opt-public-media-access user1
最后,在每个文件夹上运行这些命令,以将读/写权限仅保留给特定组:
chown -R root:opt-public-media-access /opt/public/Media
chmod 770 -R /opt/public/Media/
随意添加和删除组/文件夹。不过,需要注意以下几点:
- 删除群组的命令是
groupdel
。删除文件夹时也应该删除群组。 - 无论如何,系统中不属于适当组的其他用户都将无法进入这些文件夹。
- 为每个用户提供他们自己的主文件夹。不要将其放置在类似 的位置
/opt/public
。 - Root 可以随意访问。确保没有任何用户拥有
sudo
权限。 - 除非另有说明,本文中的所有命令均需以 root 身份运行。