O que eu preciso fazer para permitir que um script de shell execute 'mount' e 'umount' sem o sudo?

0

Contexto: Estou jogando com o script Python e Shell tentando criar um aplicativo simples para ser executado com o dmenu para montar / desmontar unidades.

Meu problema atualmente está no fato de que o comando para montar a unidade está no arquivo de script de shell, e este comando requer permissão de root para ser executado.

A parte em que as coisas dão errado é exatamente essa:

mount ${DRIVE} ${DESTINATION}

Eu fiz um pouco de pesquisa e a maioria das respostas para o problema "executar montagem sem sudo" apontam para editar o arquivo fstab e adicionar manualmente os discos.

Eu gostaria de saber se existe outra maneira, sem fazer com que o usuário edite arquivos / configurações do sistema. Ou, pelo menos, faça essa configuração automaticamente.

    
por Renato Oliveira 16.05.2018 / 02:47

3 respostas

0

A resposta mais fácil e segura para essa pergunta é usar udisks2 em vez de mount diretamente. Ele é usado por gerenciadores de arquivos como o Thunar e não requer privilégios de root. A ferramenta monta as unidades em /run/media/<username>/ .

Para montar uma unidade, use udisksctl com mount :

udisksctl mount -b /dev/sdbX

Use unmount para desmontar.

    
por 18.05.2018 / 15:47
2

Você precisa restringir os possíveis parâmetros ao comando de montagem que os usuários podem usar, ou então um usuário mal-intencionado poderia facilmente controlar o sistema montando algo acima de /etc para que o sistema use a versão do invasor de /etc/shadow em vez do real. O efeito seria como se o invasor substituísse temporariamente as senhas de todos e quaisquer usuários com senha (s) conhecida (s) pelo invasor.

Se os usuários precisarem apenas montar / desmontar um conjunto fixo de sistemas de arquivos em um conjunto fixo de pontos de montagem, apenas adicioná-los a /etc/fstab usando a opção user ou users mount pode ser uma solução válida. / p>

Se você não puder prever o nome do dispositivo que o usuário precisa montar, ou o usuário precisar montá-lo em um local arbitrário acessível para ele, seu problema será mais difícil. Talvez permitir que o usuário monte o sistema de arquivos em um local fixo apenas e depois ensinar o usuário a usar o ln -s /actual/mount/point /desired/location para criar links simbólicos para que os arquivos apareçam onde são necessários?

    
por 16.05.2018 / 10:03
1

Você pode editar o arquivo de permissão do usuário e conceder a esse usuário o uso do mount.

Use visudo e adicione uma linha como essa (alterando esse nome de usuário para seu próprio usuário)

user_name ALL=NOPASSWD: /bin/mount
    
por 16.05.2018 / 07:29