Como faço para montar um cartão SD externo sem usar o sudo?

4

Eu escrevi um script bash com a intenção de fazer backup de um arquivo específico (truecrypt-) em um cartão SD (e uma pasta compartilhada na nuvem) usando o comando rsync .

O problema era que o cartão SD geralmente não era montado ainda e, portanto, a sincronização não funcionava. Então eu escrevi um script que monta o cartão, sincroniza o arquivo e deve desmontá-lo novamente. Script:

#!/bin/bash

sudo mkdir /media/user_name/SDcard
sudo mount -t vfat LABEL="SDcard" /media/user_name/SDcard

rsync -avI /home/user_name/Dokumente/file_to_sync /media/user_name/SDcard
rsync -avI /home/user_name/Dokumente/file_to_sync /home/user_name/cloudbox

sudo umount /media/user_name/SDcard
sudo rmdir /media/user_name/SDcard 

Enquanto a sincronização para o cloudbox funciona corretamente, a sincronização com o SDcard não funciona. Além disso, os comandos umount e rmdir não são executados. O resultado é que na hora a seguir eu uso o script, há um erro porque o diretório já existe.

Quando todos os comandos são executados manualmente e sucessivamente no terminal, o comando rsync (com sudo ) para o cartão SD dá uma mensagem de erro:

user_name@host ~ $ sudo rsync -av ~/Dokumente/file_to_sync /media/user_name/SDcard/file_to_sync
sending incremental file list
file_to_sync
rsync: chown "/media/user_name/SDcard/.file_to_sync.tK2RnM" failed: Operation not permitted (1)

sent 524,416,101 bytes  received 127 bytes  61,696,026.82 bytes/sec
total size is 524,288,000  speedup is 1.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]

Estranhamente, se eu montar o SDcard clicando duas vezes no ícone da área de trabalho em vez de usar o sudo mount ... , posso sincronizar o arquivo sem problemas.

O que há de errado com meu roteiro? Eu tentei várias modificações, mas nenhuma funcionou (melhor).

Por que há uma diferença entre a montagem clicando duas vezes e a montagem no terminal e o que é? Como eu poderia "reproduzir" o "duplo clique-comando" no terminal?

Eu tenho tentado fazer com que isso funcione já há algum tempo e fóruns e tutoriais etc. não poderiam me ajudar. Então, eu apreciaria qualquer pouquinho de ajuda que alguém pudesse dar ...

Obrigado

My System: Linux Mint 17 (originalmente canela, mas alterado para XFCE) em um Lenovo T440p com CORE i7vPro, SSD de 250 GB, 12 GB de RAM (e o pior touchpad que já encontrei)

    
por cain 02.02.2016 / 15:22

1 resposta

1

Portanto, é um problema de permissões. O sistema de arquivos FAT montado pelo root não pode ser acessado por usuários normais.

É o resultado do fato de que o FAT não inclui informações de propriedade, portanto, todos os arquivos são considerados de propriedade do usuário que o montou. [1] A mensagem de erro chown é porque você está tentando copiar arquivos de sua propriedade para o sistema de arquivos FAT, usando a opção -a , que preserva as informações de propriedade. Mas você não pode criar arquivos pertencentes ao seu usuário, eles precisam ser de propriedade do root.

Você poderia executar rsync com sudo também (editar: você também precisaria adicionar a opção --no-owner ) ou adicionar -ouid=$USER ao comando mount.

Ou você pode usar udisksctl ou udisks para montar usando o daemon do udisk, que é o que sua interface gráfica está fazendo. [2]

Editar: esqueci que udisks parece um pouco diferente de mount , desculpe. Eu uso udisksctl mount -b /dev/... Portanto, obviamente não suporta a sintaxe LABEL =. Você pode usar os links simbólicos (arquivos semelhantes a atalhos) que o udev cria em seu lugar. udisksctl mount -b /dev/disk/by-label/SDcard .

Os udisks escolherão o ponto de montagem por si mesmo; o caminho usará identificadores de sistema de arquivos como o rótulo, desde que eles sejam únicos, então o caminho será consistente ... o que pode não ser o ideal, ho hum.

Acho que você pode definir o ponto de montagem udisks que será usado manualmente criando uma entrada em /etc/fstab . O GNOME Disks possui uma interface gráfica para isso (selecione o disco e depois a partição, clique no ícone abaixo, Editar opções de montagem). Se você quiser usar o comando "old" mount sem sudo , poderá até adicionar "usuário" ou "usuários" à lista de opções de montagem (consulte man mount e man fstab para a diferença entre essas opções etc.).

[1] Os sistemas de arquivos nativos do Linux, como o ext4, são diferentes do FAT; o sistema de arquivos registra qual ID do usuário possui cada arquivo, portanto, não importa quem monta o FS. O Windows NTFS também suporta IDs de usuário, mas não me pergunte como ele se comporta quando você o monta com o Linux.

[2] Isso provavelmente terá algumas restrições de políticas adicionais (polkit): por padrão, você não poderá usar os udisks quando fizer logon remotamente no computador usando o SSH.

    
por 02.02.2016 / 16:25