Используя '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 работы, но пытающийся размонтироваться как постоянный (некорневой) пользователь:

$ 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:

Командная строка 'монтируется "/mnt/Bu-ehd2"' вышедший с ненулевым статусом выхода 32: смонтируйтесь: неправильный тип фс, плохая опция, плохой суперблок на/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: Действительно ли unmouting как обычный пользователь, невозможный вследствие того, что смонтированное устройство принадлежит корню? Если так, как я делаю устройство umountable someuser только путем издания cmd umount /dev/sdc1 ? Идеально это было бы путем создания someuser владелец его собственного внешнего usb устройство жесткого диска.

Примечание: Я предпочитаю не обращаться к sudo visudo чтобы записать, что sudo-исключение управляет для каждого различного пользователя, для umount. Это все еще вызвало бы каждый someuser вводить sudo umount /mnt/Bu-ehd2 вместо просто umount /dev/sdc1 так или иначе.

1
задан 2 April 2016 в 20:27

3 ответа

Если root, пользователь не может umount любая файловая система смонтирована некоторым другим пользователем.

Если Вы использовали user опция в mount (/etc/fstab), можно проверить вывод mount команда, Вы будете видеть user= показ пользователя, который смонтировал файловую систему. Только тот пользователь (и root) может использовать umount размонтировать файловую систему.

Существуют hacky способы сделать размонтирование как другого пользователя, но я не думаю, что существует любой прямой umount путь.


Вот функция (на основе идеи OP), который будет работать 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
}
3
ответ дан 3 December 2019 в 06:58

Можно использовать udisksctl для размонтирования без полномочий пользователя root:

udisksctl unmount --block-device /dev/sdc1
1
ответ дан 3 December 2019 в 06:58

Используйте udisksctl mount/unmount -b /dev/sdX. Чтобы использовать mount или umount без привилегий root, вам нужно отредактировать файл /etc/sudoers с помощью visudo и добавить строки:

username ALL=(ALL) NOPASSWD: /bin/mount, /bin/umount

Затем перезагрузитесь.

0
ответ дан 8 August 2020 в 16:05

Другие вопросы по тегам:

Похожие вопросы: