如何以用户身份自动挂载 ntfs 内置硬盘

如何以用户身份自动挂载 ntfs 内置硬盘

标题基本解释了这一点。我使用的是 Windows 和 Ubuntu 双启动。当我在应用程序磁盘中设置自动挂载选项时,系统不会自动挂载驱动器。我需要单击要挂载的驱动器。当我将自动挂载选项设置为关闭并在启动时检查挂载时。它可以工作,但以 root 身份挂载。因此,我无法将任何文件放入垃圾箱。

答案1

我已将我认为最好的答案整理成这个答案。不需要全部都做,建议用户自行判断 :)

/etc/fstab 方法

我个人的做法是使用users选项。这样,一个分区可供所有用户使用 - 也许我有汽车手册,我爸爸想用他的账户在那里阅读,也许我妈妈也想用她的账户打开共享相册 - 无论原因是什么。一个例子是:

# MY WINDOWS PARTITION

UUID=4EBAAE53BAAE36FD /media/WINDOWS  ntfs noatime,nodiratime,users,rw 0 0

但是,是的,这是一个安全漏洞。所以下一个更好的选择是使用uid=标志。 *nix 系统上的每个用户都有一个唯一的整数(运行id命令找出你的数字 ID,或者查看/etc/passwd文件并找到你的用户名)。所以,对我来说下一个条目应该是这样的:

# 我的 Windows 分区

UUID=4EBAAE53BAAE36FD /media/WINDOWS  ntfs noatime,nodiratime,uid=1000,rw 0 0

udisksctl 方法

mount命令要求您指定大量信息 - 用户、文件系统类型。您可能不知道如何找到这些信息。有一个更简单的替代方法,udisksctl它将安装一个分区作为运行它的用户如果我想在我的第二块硬盘上安装 Windows 分区,我会这样运行它:

udisksctl mount -b /dev/sdb2

并且可以轻松地将其转换为文件中的函数.bashrc(在顶部定义)

function mountWindows
{
udisksctl mount -b /dev/sdb2
}

现在您基本上有一个用于挂载 Windows 分区的命令。如果您在末尾调用该函数,.bashrc它将在您每次生成终端窗口时运行。当然,这并不完全是自动化,但对于像我这样经常打开终端窗口的人来说 - 这是最简单的自动化方法。

不过有一个小问题 - 每次bash启动时都会进行调用,这意味着每次打开窗口时都会进行调用。通过一些编辑,我们可以检查分区是否已安装。

function mountWindows
{
grep -q '/dev/sdb2' /proc/mounts
if [ $? -eq 0  ];then 
  echo ">>> Windows partition already mounted"; 
else udisksctl mount -b /dev/sdb2
fi
}

现在,每次我们生成时,bash我们都会悄悄检查文件/dev/sdb2中是否有/proc/mounts(只有已安装的内容才会出现在该文件中)。如果存在,我们就直接说出来。如果不存在,我们将运行udisksctl命令。

相关内容