Como definir permissões padrão para unidades FAT montadas automaticamente no Ubuntu 9.10?

17

Eu tenho muitas unidades FAT32 que gostaria de montar no Ubuntu, para que tenham o modo de permissão 700 para diretórios e 600 para todos os outros arquivos. Por padrão, eles têm 755 para todos os arquivos, o que não é particularmente útil, pois quase nenhum diretório não deve ser executável e estraga os repositórios de controle de versão hospedados nas unidades.

"Antigamente", eu teria as unidades listadas em / etc / fstab com o umask / dmask que eu quero e não havia como padrão. Hoje em dia, as unidades são montadas automaticamente com seus nomes de volume. O que é ótimo, exceto que agora não tenho idéia de como definir o padrão.

Eu tentei alterar a chave / system / storage / default_options / vfat / mount_options gconf sem nenhum efeito aparentemente. Era 077 inicialmente, mas a unidade montada refletia um padrão 022; alterá-lo e reinserir as unidades resultou nos arquivos ainda com bits de permissão 755.


fonte
Hã. achou que seu nome de usuário parecia familiar. Eu uso mutagênico há anos. bem-vindo ao superusuário. :)
quack quixote
Além disso, qual versão do ubuntu você está usando? Eu assumiria Karmic, mas você pode estar falando sobre o Lucid RC, ou mesmo algo mais cedo.
quack quixote
Esclarecido no título. Eu esperava que isso não importasse, pois tenho algumas instalações mais antigas, e algo como montagem não deve mudar a cada seis meses.
infelizmente, o material HAL passou por algumas mudanças nas versões recentes. 9.04 e anterior são provavelmente os mesmos; algumas soluções podem se aplicar a todos; mas a 9.10 usa o DeviceKit e o HAL foi descontinuado. Eu não confio em nada do material DBus / HAL / DeviceKit para permanecer estável no momento.
quack quixote
11
comentário de pagin : Eu acho que o problema é muito mais fundamental: eu quero modificar o umask para a montagem automática, independentemente de qual dispositivo se conecte ao computador. Ou seja, se um amigo meu aparecer com seu pendrive e eu quiser apenas copiar alguns arquivos deste, quero que eles sejam transferidos automaticamente como chmod 750, não 000 ou 777, 770 ou o que seja. Há realmente deve ser um lugar opção para configurar este ...
quack quixote

Respostas:

7

Atualizado
Infelizmente, não há meios internos para fazer isso. O "caminho certo", o caminho suportado , está configurando uma linha / etc / fstab com as opções de montagem padrão que você deseja. Isso significa que seus padrões devem ser definidos por dispositivo, embora você possa usar o rótulo da partição ou o UUID para evitar a necessidade de um caminho de dispositivo específico. Em particular, esse método parece ocorrer antes da autorização da área de trabalho do PolicyKit.

Os fóruns do Ubuntu, o Launchpad e o bugzilla do Gnome têm muitas postagens de usuários que procuram a mesma funcionalidade que você está procurando, tanto no NTFS quanto no FAT32. O Ubuntu 9.10 e 10.04 fornece a montagem automática padrão por meio de uma combinação de DeviceKit-Disks, GVFS e Nautilus.

O DeviceKit-disks fornece uma interface FilesystemMount cujo argumento de opções parece ser a maneira correta de configurar suas opções de montagem. Mas o GVFS / Nautilus não parece fornecer nenhum meio, através da interface do usuário ou de um arquivo de configuração, para especificar esta opção ao montar automaticamente uma chave USB.

Existem algumas soluções alternativas:

  • Esse bug do Launchpad contém um patch fornecido pelo usuário que altera os padrões do DeviceKit-Disks em um pacote devicekit-disks customizado .

    No lado positivo, essa pode ser a maneira mais fácil de definir seus padrões preferidos para todos os dispositivos. A desvantagem é que você precisará repetir o processo novamente quando o pacote for atualizado.

  • Uma postagem dos Fóruns do Ubuntu propõe um script de solução alternativa específico do dispositivo :

    #!/bin/bash
    devkit-disks --unmount /dev/disk/by-uuid/0D3594370C618A2A
    devkit-disks --mount-options "dmask=000" --mount /dev/disk/by-uuid/0D3594370C618A2A
    

    Isso também é subótimo, pois você deve manter isso atualizado com dispositivos específicos. Mas evita o problema de autorização que a solução fstab suportada pode ter.

charlatão quixote
fonte
comentário por Rndmerle : Como uma nota lateral, no Ubuntu Lucid (10.4) o comando devkit-discos foi substituído por / usr / bin / udisks
quack quixote
Esta solução alternativa com udisks --unmount etc., funciona apenas para umask e dmask. Outras opções não são permitidas, como você pode imaginar no patch que você vinculou.
User39559
1

Aqui está minha linha fstab para montar meu pendrive com permissões adequadas para uma chave ssh privada (fmask = 177). Tentativa e erro me informaram que eu tinha que adicionar a opção 'usuário' para que o automount funcionasse.

/dev/disk/by-uuid/C2F8-E4F2  /media/TIM_ABELL  vfat  rw,user,nosuid,nodev,dmask=0077,flush,fmask=177

Eu também tive que criar o ponto de montagem que era anteriormente automático:

mkdir /media/TIM_ABELL

o uuid do disco pode ser encontrado conectando o disco e executando

mount
ls -l /dev/disk/by-uuid/

que permitirá que você obtenha o ponto de montagem -> dispositivo -> mapeamento de uuid

Tim Abell
fonte
11
em vez de usar os caminhos completos / dev / disk / by-uuid / FOO ou / dev / disk / by-label / FOO, você pode usar a sintaxe de atalho UUID=FOOou LABEL=FOO.
quack quixote
0

Você realmente tentou o método / etc / fstab antigo? Funciona para mim. O Ubuntu usa o fstab, não importa o montador automático HAL.

Ivan Petrushev
fonte
2
O que eu coloco no / etc / fstab para fazer com que todas as unidades FAT sejam montadas dessa maneira? Meu argumento não é que "eu poderia fazer isso com o fstab" (não posso), é "isso não aconteceu no modelo do fstab porque ele não montava nada, a menos que eu pedisse".
0

Fiz alguns scripts bash e saí com esta versão aprimorada do script de solução alternativa postada acima:

#!/bin/bash
dev_path="/dev/disk/by-id"
usb_drives=$(find $dev_path -name "usb*")
mount_options="utf8=0,codepage=850,iocharset=iso8859-1"

for dev in $usb_drives ; do
  if ( devkit-disks --show-info $dev | \
       grep "is mounted:" | grep -q 1 ) ; then
    devkit-disks --unmount $dev
    devkit-disks --mount $dev \
      --mount-options $mount_options
  fi
done

Ele encontra todos os dispositivos conectados por USB (espero que todos os pendrives) que já estão montados e os remonta usando mount_options (no meu caso, deixe-os usar o charset iso-8859-1 para compatibilidade com outros sistemas operacionais limitados)

Guido I
fonte
3
O que acontece se você conectar um ext4 USB? Aplicará máscaras e outras opções que você deseja apenas (e só faz sentido) para o FAT?
user39559