为两个用户使用公共数据文件夹,而不是单独的数据文件夹

为两个用户使用公共数据文件夹,而不是单独的数据文件夹

我有一台 15.04 机器,基本上有 2 个用户帐户,一个管理员和一个受限用户。我希望他们都有单独的主目录(用于系统/应用程序设置等),但使用相同的数据目录:

  • 桌面
  • 文件
  • 音乐
  • 图片
  • 民众
  • 模板
  • 视频
  • 也许还有一些特定于程序的数据文件夹...

因此,这些目录必须位于这两个用户的主目录之外,例如位于/home/shared-data/或类似的位置,并且两个用户都需要对它们具有完全访问权限。

如果我浏览该目录并在层次结构中向上返回,如果可能的话,我希望回到我开始时的同一用户主目录。并且真正的共享目录不应由新用户公开访问,而应仅由我特别允许的用户访问。

此外,在那里创建的新文件和文件夹应该自动被两个用户访问。

那么,将所有数据从用户当前主目录移动到这个外部位置,然后用链接/挂载/其他内容替换原始文件夹到新的共享目录,以使其看起来像以前一样,最简单的方法是什么?

答案1

不要移动任何东西。只需使用链接。例如,假设您的普通用户是usera,而您的第二个用户是userb。大概userb是一个全新的帐户,没有任何您想要保留的数据。因此,删除相关目录并将它们重新创建为链接,然后设置正确的权限:

  1. 删除目录并重新创建链接

    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
    
  2. 创建一个新组并将两个用户添加到该组:

    sudo groupadd foo
    sudo usermod -aG foo usera
    sudo usermod -aG foo userb
    
  3. 将您想要共享的目录的组所有权更改为这个新组:

    chgrp -R foo ~usera/{Desktop,Documents,Music,Pictures,Public,Templates,Videos}
    
  4. 将目标目录的权限设置rwx为该组,并设置目录上的 SETGID 位,以便新文件属于正确的组。

    chmod -R g+rwxs ~usera/{Desktop,Documents,Music,Pictures,Public,Templates,Videos}
    
  5. 设置访问控制列表设置来设置新创建的文件/目录的权限:

    setfacl -d -m g:foo:rwx ~usera/{Desktop,Documents,Music,Pictures,Public,Templates,Videos}
    

就是这样。现在, 中的目录~/userb是 中的目录的链接~/usera,并且两个用户都对它们具有读/写访问权限。

相关内容