我有一台 15.04 机器,基本上有 2 个用户帐户,一个管理员和一个受限用户。我希望他们都有单独的主目录(用于系统/应用程序设置等),但使用相同的数据目录:
- 桌面
- 文件
- 音乐
- 图片
- 民众
- 模板
- 视频
- 也许还有一些特定于程序的数据文件夹...
因此,这些目录必须位于这两个用户的主目录之外,例如位于/home/shared-data/
或类似的位置,并且两个用户都需要对它们具有完全访问权限。
如果我浏览该目录并在层次结构中向上返回,如果可能的话,我希望回到我开始时的同一用户主目录。并且真正的共享目录不应由新用户公开访问,而应仅由我特别允许的用户访问。
此外,在那里创建的新文件和文件夹应该自动被两个用户访问。
那么,将所有数据从用户当前主目录移动到这个外部位置,然后用链接/挂载/其他内容替换原始文件夹到新的共享目录,以使其看起来像以前一样,最简单的方法是什么?
答案1
不要移动任何东西。只需使用链接。例如,假设您的普通用户是usera
,而您的第二个用户是userb
。大概userb
是一个全新的帐户,没有任何您想要保留的数据。因此,删除相关目录并将它们重新创建为链接,然后设置正确的权限:
删除目录并重新创建链接
sudo rmdir ~userb/{Desktop,Documents,Music,Pictures,Public,Templates,Videos} for i in Desktop Documents Music Pictures Public Templates Videos; do sudo -u userb ln -s ~usera/"$i" ~userb done
创建一个新组并将两个用户添加到该组:
sudo groupadd foo sudo usermod -aG foo usera sudo usermod -aG foo userb
将您想要共享的目录的组所有权更改为这个新组:
chgrp -R foo ~usera/{Desktop,Documents,Music,Pictures,Public,Templates,Videos}
将目标目录的权限设置
rwx
为该组,并设置目录上的 SETGID 位,以便新文件属于正确的组。chmod -R g+rwxs ~usera/{Desktop,Documents,Music,Pictures,Public,Templates,Videos}
设置访问控制列表设置来设置新创建的文件/目录的权限:
setfacl -d -m g:foo:rwx ~usera/{Desktop,Documents,Music,Pictures,Public,Templates,Videos}
就是这样。现在, 中的目录~/userb
是 中的目录的链接~/usera
,并且两个用户都对它们具有读/写访问权限。