Usando 'umount' para o volume ext4 montado em USB sem 'sudo'

1

Eu montei um HDD USB usado para backup de plug-in intermitente por meio da entrada 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

Para desmontar, sudo umount /mnt/Bu-ehd2 funciona, mas está tentando desmontar como usuário regular (não raiz):

$ umount /mnt/Bu-ehd2
umount: only root can unmount UUID=cd9f3fc4-f67f-42c4-8190-21d2766d2b65 from /mnt/Bu-ehd2

Por que é assim é coberto por @MariusGedminas ' answer on AU, mas não como contornar a restrição de uso em umount sem sudo .

  • Adicionar user às opções de montagem não ajuda.

  • Adicionar users ajuda, mas a desmontagem por qualquer usuário se torna possível mesmo após a montagem ter sido feita com base em uma entrada /etc/fstab . Uma solução possível, mas pobre.

  • Adicionar uid=1000,owner interrompe totalmente o processo de montagem com:

  

Erro ao montar o dispositivo gerenciado pelo sistema / dev / sdc1:

     

Linha de comando 'mount "/ mnt / Bu-ehd2"' saiu com status de saída diferente de zero 32:   mount: errado tipo fs, má opção, bad superblock em / dev / sdc1, ...

Eu verifiquei:

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

P: O desmembramento de um usuário comum é impossível devido ao fato de o dispositivo montado ser de propriedade do root? Se sim, como posso tornar o dispositivo desmontável por someuser apenas emitindo cmd umount /dev/sdc1 ? Idealmente, isso seria tornando someuser o proprietário de seu próprio dispositivo HDD externo.

Observação: eu prefiro não recorrer a sudo visudo para escrever uma regra de exceção sudo para cada usuário diferente, por umount . Ele ainda forçaria cada someuser a digitar sudo umount /mnt/Bu-ehd2 em vez de apenas umount /dev/sdc1 de qualquer maneira.

    
por Cbhihe 29.03.2016 / 12:20

2 respostas

3

A menos que root , um usuário não possa umount de qualquer sistema de arquivos montado por algum outro usuário.

Se você usou a opção user em mount ( /etc/fstab ), você pode verificar a saída do comando mount , você verá o user= mostrando o usuário que montou o sistema de arquivos. Apenas esse usuário (e root ) pode usar umount para desmontar o sistema de arquivos.

Existem maneiras hacky de desmontar como um usuário diferente, mas não acho que exista uma maneira direta umount .

Aqui está uma função (baseada na ideia do OP) que executará umount ou gvfs-mount com base no EUID. Isso pode ser colocado em /etc/bash.bashrc para que esteja disponível nos shells interativos de todos os usuários:

unmount () {
    if [[ "$#" -eq 1 ]]; then
        { [[ "$(id -u)" -eq 0 || "" =~ ^-.* ]] && "$(command -v umount)" "" || gvfs-mount -u "" ;}
    else
        printf "Usage: unmount [option -h [|-V]|mount-point|device-path]\n"
    fi
}
    
por heemayl 29.03.2016 / 12:47
2

Você pode usar udisksctl para desmontar sem privilégios de root:

udisksctl unmount --block-device /dev/sdc1
    
por Sergiy Kolodyazhnyy 02.04.2016 / 19:40