linux - 使用 Linux 组和用户权限设置 friend 共享空间

标签 linux permissions

我想通过以下方式设置Linux共享空间: 我希望一个用户可以调用管理员来访问所有其他用户的主目录。 我希望能够创建用户 A、B、C、D、E,并且不允许他们查看除主文件夹(和/tmp/如果需要)之外的任何其他文件夹。
我不希望他们能够查看任何其他文件。 我将使用它,这样我就可以为他们创建一个用户,他们可以登录查看/编辑其主文件夹中的文件,而无需执行其他任何操作(或将文件 scp 到其中)

我该怎么做? 我的第一个想法是创建一个组并将它们全部放入该组中,但我不希望它们能够查看彼此的文件。 我注意到/home/* 中的文件夹只能由所有者读取、写入、执行:

[test2@XXX home]$ pwd
/home
[test2@XXX home]$ ll
drwx------  3 test2       test2        4096 Mar  7 18:54 test2

这是否足够的权限?
例如/home/A/中的文件是

[test2@XXX~]$ pwd
/home/test2
[test2@XXX~]$ ll
total 4
drwxrwxr-x 2 test2 test2 4096 Mar  7 18:54 testdir
-rw-rw-r-- 1 test2 test2    0 Mar  7 18:54 testfile

用户 B 将无法写入这些文件,对吗? 如果是这样,我需要做什么才能让用户管理员能够查看所有这些/home/文件夹,但没有其他人。

最佳答案

首先,您需要一个用户“Admin”,他将对用户 A、B、C、D、E 的所有主目录拥有 rwx 权限。这里我假设您的“Admin”用户不是 root

可以引用这个link用于实现此功能。

现在您不希望用户 A、B、C、D、E 中的任何一个看到彼此的文件,但您的主目录 (/home/user) 中存在一个 Public 文件夹,用于与其他用户共享文件。如果其他用户想要访问此公共(public)文件夹,则应在主目录上设置全局的执行位。

如果您不需要允许其他人访问您的主文件夹(其他人或用户,例如网络服务器的 www-data),则可以使用 chmod o-rwx "$HOME" (从“other”中删除读/写/执行,相当于 chmod 750 "$HOME",因为默认权限为 750)。否则,您也应该更改 umask 设置,以防止新创建的文件默认获得全局的读取权限。

对于系统范围的配置,编辑/etc/profile;可以在 ~/.profile 中配置每个用户的设置。我更喜欢对所有用户使用相同的策略,因此我会编辑 /etc/profile 文件并附加以下行:

umask 027

您需要重新登录才能应用这些更改,除非您处于 shell 中。在这种情况下,您可以在 shell 中运行 umask 027

现在要修复现有权限,您需要从其他权限中删除读/写/执行权限:

chmod -R o-rwx ~

现在,如果您决定将 ~/Public 文件夹共享给所有人,请运行以下命令:

  • chmod o+x ~ - 允许每个人下降到目录 (x),但不能获取目录列表(不应添加 r)

  • find ~/Public -type f -exec chmod o+r {}\; - 允许每个人读取~/Public中的文件

  • find ~/Public -type d -exec chmod o+rx {}\; - 允许每个人进入目录并列出其内容

关于linux - 使用 Linux 组和用户权限设置 friend 共享空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15284537/

相关文章:

ruby-on-rails - 我无法更改或添加任何内容,sudo 无法正常工作...sudo : can't open/etc/sudoers: Permission denied

linux - 根据创建时间删除文件

linux - errno.h 的问题

java - OSGi中有方法级别的权限吗?

android - 权限 : INJECT_EVENTS for Instrumenation to other apps

c# - Directory.CreateDirectory 对路径的访问被拒绝?

linux - 如何用另一个空格和字符替换空格

Linux - 查找特定文件之后和之前的文件

Linux:连接目录中的每对文件

java - 检测Java是否处于保护模式,以及Java有哪些权限