Использование 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
Потом перезагрузитесь.