我最近从 Ubuntu 14.10 迁移到 Debian 测试。在 Ubuntu 下,我有一个 shell 脚本用于将我的主文件夹备份到 U 盘。脚本的最后一行卸载 USB 记忆棒。适配Debian的文件系统,应该是:
umount /media/usb0
(或 umount/media/usb
链接到/media/usb0
)。但是当我执行脚本时,最后一行抛出umount: /media/usb0: umount failed: Operation not permitted
.显然,sudo
它可以工作,但我想知道为什么我需要在这里使用 sudo (在 Ubuntu 上不需要)。有什么想法可以绕过这个问题,那么如何在不root的情况下卸载U盘呢? (脚本的其余部分运行完美)。
更新
这是我的 /etc/fstab:
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/sklar--vg-root / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=a90bee04-e08a-4a86-8465-762aca5719a4 /boot ext2 defaults 0 2
/dev/mapper/sklar--vg-swap_1 none swap sw 0 0
/dev/sdb1 /media/usb0 auto rw,user,noauto 0 0
答案1
默认情况下,mount
仅允许 root 用户使用,或者,如果在 中指定/etc/fstab
,则由用户使用。
/etc/fstab
现在,如果您的 USB 驱动器是在没有指定(或手动指定)的情况下自动安装的root
,则不会使用user=youruser
选项安装,因此youruser
将无法安装umount
。
/etc/fstab
如果您的 USB 驱动器在with选项中指定user
,则任何用户都可以使用mount
它,并且同一用户(和 root)也可以使用umount
它。
/etc/fstab
您需要的是在,中指定您的 USB 驱动器user=youruser
。这样的话,无论是否root
安装youruser
了USB驱动器,youruser
都可以umount
。
答案2
以下是/etc/fstab
外部 USB 大容量存储设备的典型线路。
UUID="4E1AEA7B1AEA6007" /mnt/passport auto rw,user,noauto 0 0
这个特定的硬盘恰好适用于我的 Passport USB 硬盘。请注意user
第四个字段中的关键字。该字段(与文件系统关联的挂载选项)告诉系统允许用户挂载和卸载设备。还有其他选项,但使用user
非常常见和典型。是UUID
从 获得的blkid
,是存储设备的标识符。
有关更多详细信息,请参阅 参考资料man mount
,特别是“非超级用户安装”部分。这说:
非超级用户挂载。
通常,只有超级用户才能挂载文件系统。但是,当
fstab
一行中包含用户选项时,任何人都可以挂载相应的系统。因此,给定一行
/dev/cdrom /cd iso9660 ro,user,noauto,unhide
任何用户都可以
iso9660
使用以下命令挂载 CDROM 上的文件系统mount /dev/cdrom
或者
mount /cd
有关更多详细信息,请参阅
fstab(5)
。只有安装了文件系统的用户才能再次卸载它。如果任何用户都应该能够卸载,则在 fstab 行中使用 users 而不是 user。所有者选项与用户选项类似,但限制是用户必须是特殊文件的所有者。例如,/dev/fd
如果登录脚本使控制台用户成为该设备的所有者,这可能很有用。组选项类似,但限制用户必须是特殊文件组的成员。