【问题标题】:Set up a friend sharespace using Linux Group and User permissions使用 Linux 组和用户权限设置朋友共享空间
【发布时间】:2013-03-08 00:23:58
【问题描述】:

我想通过以下方式设置一个linux共享空间: 我希望一个用户可以调用 admin 来访问所有其他用户的主目录。 我希望能够创建用户 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/ 文件夹,但没有其他人。

【问题讨论】:

    标签: linux permissions


    【解决方案1】:

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

    你可以参考这个link来实现这个功能。

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

    如果您不需要允许其他人访问您的主文件夹(其他人或用户,例如网络服务器的 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中的文件 p>

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

    【讨论】:

    • 感谢 Pulkit,我最终创建了一个用户,即公共用户,然后将其他所有人添加到该用户子组中。我还将另一个用户(我)添加到其他所有人帐户的子组中。然后我在创建后在新用户的主目录上 chmod g+rwx 。我创建了一个简单的脚本来执行此操作。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2014-05-25
    • 2014-08-09
    • 2011-09-07
    • 2012-12-17
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多