我的计算机上有两个 Linux 安装,位于/home
不同的分区,但两个安装共享。每个安装都有不同的用户名以避免冲突。问题是,我是一名开发人员,我不想混合用户,但我想为共享文件夹设置权限。
例子,
- Ubuntu,主用户:
raul
,主文件夹:/home/raul
- Fedora,主用户:
ricardo
,主文件夹:/home/ricardo
- 我想要一个
/home/shared
whereraul
&ricardo
对此文件夹具有权限,也许是www-data
和root
,但任何 Linux 发行版上的任何其他用户。
我希望你能解决我的问题。
编辑:这似乎比预期更复杂。
这篇笔记是我能以我的实际英语水平解释的最好的,所以请友善。
在同一台计算机上,我安装了发行版 A 和 B。发行版 A 和 B 在另一个分区中共享/home
,但有不同的用户...所以我有发行版 A 中的 /home/a
用户,你知道...所以我喜欢有一个文件夹,例如用户和都可以在其中读取和写入文件夹,就像同一组的一部分,但用户在发行版 B 上不存在,反之亦然。那么我如何告诉每个发行版将我与另一个发行版的用户组成一个组呢?A
/home/b
/home/shared
A
B
A
答案1
不确定你的问题到底是什么。你可以说得更详细点吗?具体来说,我在解析时遇到困难
我想要一个 /home/shared ,其中 raul 和 ricardo 有权访问此文件夹,可能是 www-data 和 root,但任何 Linux 发行版上的任何其他用户。
您想知道如何设置共享文件夹/分区吗?如果是这样,您可以在每个安装中设置一个具有相同组 ID 的组。然后也许使用 acl 来确保组具有rw
对该分区的权限。
man addgroup
说
GID 将从配置文件中为系统 GIDS 指定的范围(FIRST_GID、LAST_GID)中选择。要覆盖该机制,您可以使用 --gid 选项指定 GID。
所以你可以做
addgroup [options] [--gid ID] group
其中group
和ID
在两个安装中是相同的。
有关 acl 的教程,请参阅在 Fedora Core 2 中使用 ACL,然后看看我的回答最近关于在两个用户之间共享目录的问题。显然,您需要在两个安装上安装具有 acl 支持的分区。
acl
设置完成后,该文件夹中的所有文件和目录都将具有组权限rw
,因此raul
一个安装和ricardo
另一个安装都可以读取和写入该文件夹。
编辑:回应劳尔的以下评论:
如果我正确理解您的问题,并且您正在尝试www-data
在两个安装的两个用户之间共享数据,那么这是一个与您似乎用 和 询问的问题略有不同的问题raul
,ricardo
因为在这种情况下,用户将是相同的。
www-data
通常由像 apache 这样的 Web 服务器安装创建,因此使用匹配的 id 创建它们会很困难,除非情况已经如此(见下文)。我认为在事件发生后更改 uids/gids 来匹配应该没有问题,但我对此不是 100% 确定。也许这里的专家可以提供建议。
请注意,Debian 默认为uid/gid=33
for www
.对于其他 Linux 发行版来说,情况可能会有所不同。但是,如果您的安装都是相同的发行版,则 id 很可能会匹配。事实上,如果是这种情况,您可以只使用 www-data 组作为您的组,而无需执行任何操作。
答案2
法希姆是正确的;假设我正确理解您的问题,共享组选项可以解决您的问题。
您可以使用此命令查找每个系统上当前分配的最高 GID(uniq 不是必需的,但出于习惯而包含在内):
awk -F':' '{ print $3 }' /etc/group | sort -n | uniq | tail -1
请注意,无论该命令的输出如何,未使用的 GID 也可能在较低值上重叠,但是,选择高于打印值的 GID 将保证两个系统都不会使用该标识符。
对相关文件夹设置的任何组权限将应用于两个系统上该组的所有成员。
另请注意,组名称不需要匹配,尽管为了您自己的理智,这可能是可取的。
要将一个或多个用户添加到组中,根据您的 Linux 发行版,您可以访问 gpasswd 命令:
gpasswd -a <user> <group/GID>
如果缺少此实用程序,或者根据偏好,您可以通过执行以下命令进行相同的更改:
usermod -G $(groups <user> | sed 's/ /,/g'),<new group> <user>
请注意,此命令假定您希望为指定用户设置补充组而不是主要组。
答案3
在内核和文件系统中,用户和组纯粹通过数字、用户 ID 或组 ID 来标识。用户和组的名称仅是为了显示方便和更高级别的应用。
当您在多个安装之间共享文件系统时,我强烈建议确保两个系统上存在的任何用户(或组)在两个系统上都具有相同的 ID。这样,共享文件的所有权在所有安装中都将相同。许多用户管理 GUI 不允许您选择 ID,因此您可能需要使用命令adduser
(或addgroup
)。
用户ID无需注册即可/etc/passwd
“存在”。只是该用户拥有的文件将在ls
输出和其他位置显示为用户 ID,而不是名称。 (同样,您可以使用chown 1234 /path/to/file
它将文件的所有者更改为任何 ID)。
考虑到这一点,在不同安装之间共享文件所有权的问题就简化为在单个安装上共享文件。看保存文件的权限有关该主题的讨论(建议:使用 ACL)。