Использование umount для монтируемого на USB тома ext4 без sudo
Я подключаю жесткий диск USB, используемый для резервного копирования плагинов, через запись fstab:
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=cd9f3fc4-f67f-42c4-8190-21d2766d2b65 /mnt/Bu-ehd2 ext4 rw,nosuid,noexec,nodev,noauto,nofail,relatime,user_xattr,acl,comment=x-gvfs-show 0 2
Размонтировать, sudo umount /mnt/Bu-ehd2 работает, но пытается размонтировать как обычный (не root) пользователь:
$ umount /mnt/Bu-ehd2
umount: only root can unmount UUID=cd9f3fc4-f67f-42c4-8190-21d2766d2b65 from /mnt/Bu-ehd2
Почему это так, описано в ответе @MariusGedminas об AU, но не о том, как обойти ограничение использования umountбез sudo,
Добавление
userк опциям монтирования не помогает.Добавление
usersпомогает, но размонтирование любым пользователем становится возможным даже после того, как монтирование было выполнено на основе/etc/fstabзапись. Возможное, но плохое решение.Добавление
uid=1000,ownerнарушает процесс монтирования вместе с:
Ошибка монтирования устройства под управлением системы /dev/sdc1:
Выход из командной строки `mount "/mnt/Bu-ehd2"с ненулевым состоянием выхода 32: mount: неверный тип fs, неверный параметр, плохой суперблок в /dev/sdc1,...
Я проверил:
$ df -l | grep Bu-ehd2
/dev/sdc1 192162396 60744 182317284 1% /mnt/Bu-ehd2
$ ls -lAsF /dev/disk/by-uuid | grep sdc1
0 lrwxrwxrwx 1 root root 10 Mar 29 11:24 cd9f3fc4-f67f-42c4-8190-21d2766d2b65
-> ../../sdc1
$ stat /mnt/Bu-ehd2 | head -4
File: ‘/mnt/Bu-ehd2’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 821h/2081d Inode: 2 Links: 3
Access: (0770/drwxrwx---) Uid: ( 1000/someuser) Gid: ( 0/ root)
$ stat /dev/sdc1 | head -4
File: ‘/dev/sdc1’
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 5h/5d Inode: 176539 Links: 1 Device type: 8,21
Access: (0660/brw-rw----) Uid: ( 0/ root) Gid: ( 6/ disk)
$ blkid | grep Bu-ehd2 # yields nothing on /dev/sdc1 when actually
$ #+ mounted on `/mnt/Bu-ehd2`
Q: Разве отключение как обычного пользователя невозможно из-за того, что подключенное устройство принадлежит root? Если да, то как сделать устройство монтируемым someuser просто выдав cmd umount /dev/sdc1? В идеале это было бы, сделав someuser владелец собственного внешнего USB жесткого диска.
Примечание: я предпочитаю не прибегать к sudo visudo для того, чтобы написать правило исключения sudo для каждого отдельного пользователя, для umount, Это все равно заставит каждого someuser печатать sudo umount /mnt/Bu-ehd2 вместо просто umount /dev/sdc1 тем не мение.
2 ответа
Если не rootПользователь не может umount любая файловая система, смонтированная другим пользователем.
Если вы использовали user вариант в mount (/etc/fstab), вы можете проверить вывод mount команда, вы увидите user= показывающий пользователя, который смонтировал файловую систему. Только этот пользователь (и root) можешь использовать umount размонтировать файловую систему.
Есть хакерские способы размонтирования от имени другого пользователя, но я не думаю, что umount путь.
Вот функция (основанная на идее ОП), которая будет работать umount или же gvfs-mount основанный на EUID. Это можно было бы положить в /etc/bash.bashrc так что он будет доступен на всех интерактивных оболочках пользователя:
unmount () {
if [[ "$#" -eq 1 ]]; then
{ [[ "$(id -u)" -eq 0 || "$1" =~ ^-.* ]] && "$(command -v umount)" "$1" || gvfs-mount -u "$1" ;}
else
printf "Usage: unmount [option -h [|-V]|mount-point|device-path]\n"
fi
}
Ты можешь использовать udisksctl размонтировать без прав root:
udisksctl unmount --block-device /dev/sdc1
Использовать
udisksctl mount/unmount -b /dev/sdX. Чтобы использовать mount или umount без прав root, вам необходимо отредактировать
/etc/sudoersфайл с помощью visudo и добавьте строки:
username ALL=(ALL) NOPASSWD: /bin/mount, /bin/umount
Потом перезагрузитесь.