在双启动设置中为非管理员用户挂载目录

在双启动设置中为非管理员用户挂载目录

我有一台双启动电脑(带有 gnome 的 Ubuntu 12.04、Windows Vista),管理员使用所有驱动器,包括 Windows 的 C 盘。

我希望允许标准权限用户能够读取(不能写入,只能访问文档)驱动器 C 中名为 A 的单个子目录。

因此,在/etc/fstab文件中,/media/123.../AC:\A在 Windows 中)应该链接到用户的文档/A 目录(/home/user/Documents/A),仅供标准用户(非管理员)使用。

这也应该包括 A 的子目录和所有文件。有办法吗?
提前谢谢您!

答案1

您可以设置 Windows 分区的权限,但不能设置分区下单个文件/文件夹的权限;在挂载时,您设置了所有的驾驶。

在您的问题中,您没有提到标准权限用户是否需要具有“对子目录的只读访问权限A 并对 Windows 分区的其余部分进行写访问",或“对子目录的只读访问权限A 并且无法访问该分区的其余部分“。但不幸的是,由于这个答案的开头一句话,这两种情况都无法完全实现。

如果您想授予用户对 Windows 分区下特定文件夹的只读访问权限,则该用户将拥有对整个分区的只读访问权限。如果您同意,那么以下是如何执行此操作的说明:

  1. 首先,为具有只读访问权限的用户创建一个组。为了便于举例,我们将使用WindowsRO。因此,创建组的命令是:

    sudo groupadd WindowsRO
  2. 其次,我们将用户(我们想授予其只读访问权限)添加到组中。假设用户名为notadmin,则命令如下:

    sudo usermod -a -G WindowsRO notadmin

    对所有需要的用户重复此命令。

  3. 现在,我们需要获取组的 GID(组 ID),因为我们将在安装驱动器时使用它。为此,请执行以下操作:

    grep WindowsRO /etc/group | cut -d: -f3

    记下输出的数字,因为我们在步骤 5 中需要它。对于这个例子,我假设输出是1003

  4. 现在,我们需要获取管理员帐户的 UID(用户 ID),因为我们将在安装驱动器时使用它。此示例假设管理员帐户为bob。为此,请执行以下操作:

    grep bob /etc/passwd | cut -d: -f3

    记下输出的数字,因为我们在步骤 5 中需要它。对于这个例子,我假设输出是1000

  5. 现在我们将编辑该/etc/fstab文件。我假设有问题的 Windows 分区是/dev/sda2,您将其安装在 上/media/123,并且它是一个ntfs分区。这是您应该有的行:

    /dev/sda2 /media/123 ntfs rw,gid=1003,uid=1000,dmask=027,fmask=037,#AnyOtherOptions#
    • gid=1003是我们从步骤 3 获得的数字(组的 GID)。
    • uid=1000是我们从步骤 4 获得的数字(管理员帐户的 UID)。
    • dmask=027将文件夹的权限设置为:-rwxr-x---,这意味着所有者(管理员帐户)将拥有完全访问权限 ( rwx),而组只具有读取访问权限 ( r-x),其他任何人都没有访问权限 ( ---)。
    • fmask=037将文件的权限设置为:-rwxr-----。这类似于dmask;该组将只能对文件具有读取权限。
    • 您应该#AnyOtherOptions#用其他任何您有的选项来替代。例如,您可能有auto在启动时自动挂载分区的选项。
  6. 完成上述操作后,请将sudo mount -a我们所做的更改应用到文件fstab。希望您不会遇到任何错误。

    现在您应该测试用户是否可以访问该分区。如果可以,请继续下一步,将该A链接添加到他们的 Documents 文件夹。

  7. 假设我们notadmin帐户的主目录是/home/notadmin,并且此A文件夹位于/media/123/some/folder/A,请执行以下操作:

    ln -s /media/123/some/folder/A /home/notadmin/Documents/A

    现在您应该会在notadmin的文档下看到一个指向 的链接A。他将只具有对该文档的读取权限(以及其子目录,因为他对整个分区只有只读权限)。对其他用户也执行相同的操作。

以上所有内容都应该满足您的要求,除了我在开头提到的一点:用户应该对分区的其余部分拥有什么样的访问权限? 以上将授予他们对整个分区的只读访问权限,而不仅仅是分区A;在安装 Windows 分区时,我们无法设置对特定文件/文件夹的权限。

答案2

简单地可以使用 overlayfs

为普通用户以只读模式挂载 Windows 文件夹的指南(为 root 或其他用户以写入模式挂载)

  1. 为ROOT用户创建挂载点

    sudo mkdir /root/win
    
  2. 为普通用户创建挂载点

    mkdir /home/$USER/folder
    mkdir /tmp/folder
    
  3. 以写入模式挂载 Windows 分区

    sudo mount /dev/disk/by-label/winOS /root/win
    
  4. 以只读模式挂载 Windows 分区的文件夹

    sudo mount -t overlayfs -o ro,lowerdir=/root/win/folder,upperdir=/tmp/folder  overlayfs /home/$USER/folder
    

以 root 用户身份访问可写的 Windows 分区

sudo nautilus /root/win

访问只读 Windows 分区的文件夹

nautilus /home/$USER/folder

答案3

如果你想安装一个可写在另一个位置处于只读模式的目录,可以使用绑定挂载

例如安装目录处于只读模式@/tmp/主目录

sudo mount --bind ~ /tmp/home
sudo mount -o ro,remount  /tmp/home

如果您希望普通用户对特定文件夹具有只读访问权限,则将分区挂载到无法访问的位置(例如/根/abc)。

相关内容