我有一台双启动电脑(带有 gnome 的 Ubuntu 12.04、Windows Vista),管理员使用所有驱动器,包括 Windows 的 C 盘。
我希望允许标准权限用户能够读取(不能写入,只能访问文档)驱动器 C 中名为 A 的单个子目录。
因此,在/etc/fstab
文件中,/media/123.../A
(C:\A
在 Windows 中)应该链接到用户的文档/A 目录(/home/user/Documents/A
),仅供标准用户(非管理员)使用。
这也应该包括 A 的子目录和所有文件。有办法吗?
提前谢谢您!
答案1
您可以设置 Windows 分区的权限,但不能设置分区下单个文件/文件夹的权限;在挂载时,您设置了所有的驾驶。
在您的问题中,您没有提到标准权限用户是否需要具有“对子目录的只读访问权限A
并对 Windows 分区的其余部分进行写访问",或“对子目录的只读访问权限A
并且无法访问该分区的其余部分“。但不幸的是,由于这个答案的开头一句话,这两种情况都无法完全实现。
如果您想授予用户对 Windows 分区下特定文件夹的只读访问权限,则该用户将拥有对整个分区的只读访问权限。如果您同意,那么以下是如何执行此操作的说明:
首先,为具有只读访问权限的用户创建一个组。为了便于举例,我们将使用
WindowsRO
。因此,创建组的命令是:sudo groupadd WindowsRO
其次,我们将用户(我们想授予其只读访问权限)添加到组中。假设用户名为
notadmin
,则命令如下:sudo usermod -a -G WindowsRO notadmin
对所有需要的用户重复此命令。
现在,我们需要获取组的 GID(组 ID),因为我们将在安装驱动器时使用它。为此,请执行以下操作:
grep WindowsRO /etc/group | cut -d: -f3
记下输出的数字,因为我们在步骤 5 中需要它。对于这个例子,我假设输出是
1003
。现在,我们需要获取管理员帐户的 UID(用户 ID),因为我们将在安装驱动器时使用它。此示例假设管理员帐户为
bob
。为此,请执行以下操作:grep bob /etc/passwd | cut -d: -f3
记下输出的数字,因为我们在步骤 5 中需要它。对于这个例子,我假设输出是
1000
。现在我们将编辑该
/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
在启动时自动挂载分区的选项。
完成上述操作后,请将
sudo mount -a
我们所做的更改应用到文件fstab
。希望您不会遇到任何错误。现在您应该测试用户是否可以访问该分区。如果可以,请继续下一步,将该
A
链接添加到他们的 Documents 文件夹。假设我们
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 或其他用户以写入模式挂载)
为ROOT用户创建挂载点
sudo mkdir /root/win
为普通用户创建挂载点
mkdir /home/$USER/folder mkdir /tmp/folder
以写入模式挂载 Windows 分区
sudo mount /dev/disk/by-label/winOS /root/win
以只读模式挂载 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)。