自动安装 /media 下的任何外部驱动器,并对所有人提供读/写权限

自动安装 /media 下的任何外部驱动器,并对所有人提供读/写权限

这是我的问题:

我的电脑有 4 个 USB 端口,运行的是 Ubuntu 12.10。我每天都会收到不同的 USB,插入我的电脑,读/写数据,然后把他们送走。

我想要的是自动挂载我插入计算机的任何 USB。检测到的第一个 USB 将转到/media/HDD1,第二个将转到 ,依此类推。或者如果插入端口 1 的 USB 将转到,插入端口 2 的 USB 将转到,依此类推,/media/HDD2那就太好了。/media/HDD1/media/HDD2

路径/media并不重要,但我希望将 HDD1-4 目录放在一个地方,以便我可以轻松访问它们。

USB 通常是 ext2,但有时我也会得到 FAT32、NTFS USB。

我还希望无需登录 Ubuntu 即可安装 USB,因为我经常/media/HDD..从另一台 Windows 计算机访问。

我该怎么做?我应该对udev规则fstab做出哪些改变?任何建议都非常感谢。

答案1

fstab好吧,这里我们可以使用与光学媒体(又名 CD 和 DVD)相同的技巧:

/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

第一列表示文件系统,我相信你的 USB 会有固定值,因此我们假设之后的所有内容sda都是 USB,并且由于你只能同时拥有 4 个 USB,因此列表从、、sdb和开始。sdcsddsde

$ ls /dev/sd*
/dev/sda   /dev/sdb   /dev/sdb3  /dev/sdb6  /dev/sdc  /dev/sdf
/dev/sda1  /dev/sdb1  /dev/sdb4  /dev/sdb7  /dev/sdd
/dev/sda2  /dev/sdb2  /dev/sdb5  /dev/sdb8  /dev/sde

(就我而言,我使用内存读取器,因此我的 USB 驱动程序从开始,sdg但让我们继续。)

现在我们假设每个 USB 都有一个且只有一个分区,因此我们需要的行fstab是:

/dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1

然后你说你的挂载点必须修复,所以在你创建目录后,让我们添加它们:

/dev/sdb1 /media/HDD1
/dev/sdc1 /media/HDD2
/dev/sdd1 /media/HDD3
/dev/sde1 /media/HDD4

由于您可以拥有几乎所有类型的文件系统,auto因此让我们使用 fstab 猜测要使用的文件类型:

/dev/sdb1 /media/HDD1 auto
/dev/sdc1 /media/HDD2 auto
/dev/sdd1 /media/HDD3 auto
/dev/sde1 /media/HDD4 auto

好的,现在让我们归结为选项,这些选项对于 CD 来说是完全相同的,但具有读/写权限:

/dev/sdb1 /media/HDD1 auto rw,users,noauto,allow_other,umask=0
/dev/sdc1 /media/HDD2 auto rw,users,noauto,allow_other,umask=0
/dev/sde1 /media/HDD3 auto rw,users,noauto,allow_other,umask=0
/dev/sde1 /media/HDD4 auto rw,users,noauto,allow_other,umask=0

rw告诉我们我们需要读写权限,users允许任何用户安装设备,noauto防止驱动程序在mount -a被调用时自动安装,就像在启动时一样,防止启动错误和警告,allow_other允许安装驱动程序的用户以外的其他人拥有相同的权限,并umask=0防止应用默认的 umask。

现在只剩下两个字段,即顺序dumpfsck顺序,这两个字段都可以是0,最后的结果如下:

/dev/sdb1 /media/HDD1 auto rw,user,noauto,allow_other 0 0
/dev/sdc1 /media/HDD2 auto rw,user,noauto,allow_other 0 0
/dev/sdd1 /media/HDD3 auto rw,user,noauto,allow_other 0 0
/dev/sde1 /media/HDD4 auto rw,user,noauto,allow_other 0 0

这样,每次插入 USB 设备时,它都会自动挂载到挂载点,无需用户干预。你应该根据需要进行修改。

答案2

以下是我找到的解决方案:

首先,我在我的 Linux PC 上安装 autofs:

sudo apt-get install autofs

它将在下方创建 auto.master 文件/etc/auto.master

在该文件末尾添加以下行:

/media/mount /etc/auto.mount --timeout=10 --ghost

/media/mount是我想要将所有外部驱动器挂载到的目录。/etc/auto.mount是放入挂载规则的文件。--timeout=10表示驱动器在 10 秒不活动后会自动卸载。--ghost表示卸载后仍会留下内容图片。根据您的需要更改此行。

编辑/etc/auto.mount文件并添加以下行:

disk1  -fstype=auto,sync  :/dev/sdc1
disk2  -fstype=auto,sync  :/dev/sdd1
disk3  -fstype=auto,sync  :/dev/sde1
disk4  -fstype=auto,sync  :/dev/sdf1
disk5  -fstype=auto,sync  :/dev/sdg1
disk6  -fstype=auto,sync  :/dev/sdh1
disk7  -fstype=auto,sync  :/dev/sdi1
disk8  -fstype=auto,sync  :/dev/sdj1
DVD    -fstype=iso9660,ro :/dev/sr0

对于普通驱动器(例如 USB 或 eSATA 集)-fstype=auto,sync。我有 8 个 USB+eSATA 端口,因此我在此声明 8 个挂载点。我的 PC 已经有sdasdb作为本地磁盘,因此我将sdc1->sdj1用于外部设备。当您插入驱动器时,它们实际上是设备节点/dev。挂载规则的一个例外是 DVD 挂载,如上所示。

当我插入任何驱动器时,它们都会在目录下显示为 disk1、disk2、... /media/mount,并将在 10 秒后自动卸载。我不需要触摸我的电脑,可以从其他地方访问它(例如虚拟机)

相关内容