concedendo acesso a arquivos em uma unidade USB a partir de computadores separados

0

Tudo,

Eu tenho dois computadores: casa e trabalho. Eu os configurei de maneira similar (embora o Linux seja o Mint 13 e o trabalho seja o Ubuntu 11.10). Suponha que o nome da minha conta no trabalho seja "me_work" e o nome da minha conta em casa seja "me_home".

Eu uso uma unidade USB para compartilhar arquivos de um computador para outro. Eu escrevi um script que monta diretórios diferentes dessa unidade para diretórios diferentes em cada sistema. Por exemplo, eu faço algo como:

mount --bind /media/USB/MyProject $HOME/Projects/MyProject

Enquanto eu trabalho, em qualquer computador, faço coisas em $ HOME / Projects e tudo isso é salvo na unidade USB. Se eu trocar a unidade USB de um computador para outro, os arquivos ainda estão lá.

Mas há um problema.

Se eu criar um arquivo enquanto estiver no meu computador de trabalho, ele será de propriedade do usuário "me_work" e do grupo associado "me_work". Se eu tentar jogar com esse arquivo no meu computador de casa, eu falho b / c Eu não tenho permissão para modificá-los. Além disso, o usuário ou grupo "me_work" não é conhecido em meu computador doméstico.

Agora, eu poderia apenas sudo em tudo, mas nem sempre estou usando um terminal - às vezes estou fazendo coisas em um servidor da Web, às vezes estou usando uma IDE, etc.

Como posso configurar as coisas para que o conteúdo da unidade USB seja legível por ambas as minhas contas? Eu tentei adicionar um novo grupo aos dois computadores chamado "me_usb" e definir as duas contas como membros desse grupo. Em seguida, definir o gid dos diretórios no USB para "me_usb" e torná-los em grupo gravável. Infelizmente, isso não teve efeito.

    
por trubliphone 07.11.2012 / 03:56

2 respostas

0

Supondo que o objetivo é ter uma cópia idêntica da pasta Projetos nos dois locais especificados, devo dizer que há maneiras mais claras de fazer isso.

A solução, usando a metodologia que você expressa, depende do tipo de sistema de arquivos da partição da unidade USB montada em / media / USB e das opções de montagem que foram usadas.
Além disso, observe que os possíveis dados de permissão (uid e gid) armazenados no sistema de arquivos são um valor numérico (digamos 1000 ou 1001) que corresponde aos nomes de usuários e grupos (me_work, me_home, me_usb, ...). Portanto, supondo que a operação de montagem seja idêntica em ambos os sistemas, se me_work e me_home tiverem o mesmo valor uid (o primeiro usuário adicionado é geralmente 1000), os arquivos parecerão pertencer a me_work ou me_home quando usados em seu trabalho ou sistema doméstico , respectivamente.

Para mostrar os parâmetros de montagem atuais para / dev / USB, emita o seguinte comando em um terminal:

mount | grep /media/USB

Para mostrar o uid atual e o gid do seu usuário, digite o seguinte comando em um terminal:

id

Agora, explicarei o que é necessário para os seguintes sistemas de arquivos comuns:

fat32 / vfat: Podemos forçar todos os arquivos na unidade USB a parecerem pertencer ao usuário no respectivo sistema. Para fazer isso, você precisa ter as opções de montagem rw, uid e gid set ao montar / media / USB.
Para definir estas opções após a montagem / media / USB, mas antes da ligação, emita o seguinte comando como root:

mount -o remount,rw,uid='id -u',gid='id -g' /media/USB

ext4 ou ext3: Você deve ser capaz de usar a abordagem me_usb do grupo comum se tiver o mesmo valor de gid nos dois sistemas. Depois de criar o grupo me_usb, você pode alterar seu gid em cada sistema editando sua entrada no arquivo / etc / group. A entrada deve ser semelhante à seguinte:

...
me_usb:x:<gid-number>:<me_work or me_home>
...

Como alternativa, você pode usar um software chamado bindfs para substituir a etapa "mount --bind". Semelhante ao mapeamento uid e gid na seção fat32 / vfat, o bindfs pode montar o sistema de arquivos do disco USB em outro local usando permissões diferentes. É explicado em um post no superuser.com aqui .

    
por 07.11.2012 / 09:44
0

O nome do usuário / grupo é irrelevante; o que importa é o número.

Aqui está minha entrada no meu /etc/passwd :

rici:x:1009:1000:rici,,,:/home/rici:/bin/bash

Isso diz que meu ID de usuário é 1009 e meu grupo (principal) é o número de grupo 1000 (o segundo 1000). Olhando agora para /etc/group , vejo:

adm:x:4:rici
rici:x:1000:

Isso indica que o usuário-id rici também é um membro do grupo adm , grupo número 4, assim como há um grupo rici com o número 1000.

Quando eu crio um arquivo, ele é registrado no sistema de arquivos como pertencente ao número de usuário 1009 e ao número de grupo 1000. Essa é a única informação no sistema de arquivos. Os utilitários do sistema usam os arquivos /etc/group e /etc/passwd para converter os números em rótulos alfabéticos amigáveis.

Se você deseja sincronizar entre dois computadores, é necessário garantir que os números de usuários e grupos sejam os mesmos em ambas as máquinas. Isso é difícil, uma vez que você tem muitos arquivos, porque enquanto você pode alterar o número para o qual o seu userid é traduzido, você teria que chover todos os arquivos no sistema para gravar o número do usuário. No entanto, deve ser bastante simples criar um novo grupo em sua máquina doméstica que tenha o mesmo número de um grupo em sua máquina de trabalho e, em seguida, usar esse grupo como proprietário de todos os arquivos compartilhados.

    
por 07.11.2012 / 07:48