Permissões Unix: Ativar o acesso aos arquivos, não importa o usuário?

3

Estou usando o Linux há muito tempo e ainda estou completamente no escuro sobre como as permissões de arquivo realmente funcionam. Com isso em mente, alguém tem algum livro ou um guia completo que eu possa ler para realmente entender as coisas completamente? Eu fiz o meu quinhão de sysadminning, então eu sei o material fácil como fazer diretórios legíveis e graváveis, tornando arquivos executáveis, e alterando o dono de um arquivo, mas ao compartilhar arquivos entre usuários, eu estou perdido.

Aqui está meu problema principal. Eu tenho um número de máquinas em que pretendo sincronizar minha biblioteca de músicas. Eu tenho usado o Unison por um tempo agora e é uma ótima escolha, pois posso executá-lo facilmente através do SSH na minha rede local, que acabei de configurar. Vantajoso para as duas partes.

Até este ponto, eu tenho sincronizado computadores usando um disco rígido externo de 2TB. (computador 1 uníssono para HD, computador 2 uníssono para HD, etc.) Isso é tedioso na melhor das hipóteses, especialmente desde que eu criptografei a unidade, tornando-a um incômodo enorme conectá-la a todas as minhas máquinas e sincronizá-la. De qualquer forma, a unidade está executando o ext4 (em TrueCrypt), portanto, mantém todas as informações do sistema de arquivos Unix, como proprietários e grupos. Acabei de configurar uma nova máquina e apenas unison'd para obter a música sobre isso, e percebi que agora, todas as minhas permissões são fubar. Eu tive que executar o Unison como root, já que era a única maneira de conseguir que os arquivos saíssem da unidade externa. Aparentemente, desde que eu estou usando um nome de usuário diferente nesta máquina do que o meu "rfkrocktk" usual em todas as máquinas, isso essencialmente joga uma grande chave nas engrenagens.

Aqui está o meu caso de uso. Este laptop tem dois usuários efetivos, "leandra" e "rfkrocktk". Eu quero compartilhar músicas entre esses dois usuários, então eu criei um link simbólico / home / rfkrocktk / Music para apontar para / home / leandra / Music. Como faço (a) permitir que ambos os usuários acessem arquivos de leitura / gravação / exclusão nesta pasta e (b) mantenha tudo em sincronia perfeita sem prejudicar a propriedade de arquivos?

EDITAR

Consegui que as coisas funcionassem, mas ainda não completamente. Configurei o ID do grupo do meu diretório de músicas para meu grupo media-users e adicionei o usuário principal rfkrocktk e o usuário compartilhado mt-daapd ao grupo. Agora, rfkrocktk pode acessar os arquivos perfeitamente, mas mt-daapd não pode ver nada no diretório. Aqui estão meus ids:

$ id rfkrocktk
> uid=1000(rfkrocktk) gid=1000(rfkrocktk) groups=1000(rfkrocktk),4(adm),20(dialout),24(cdrom),29(audio),46(plugdev),104(lpadmin),115(admin),120(sambashare),124(vboxusers),1001(jupiter),2002(media-users)

$ id mt-daapd
> uid=123(mt-daapd) gid=65534(nogroup) groups=65534(nogroup),2002(media-users)

Eu tentei definir o ID do grupo principal de mt-daap para o grupo media-users , mas isso não muda nada.

Aqui estão minhas permissões no diretório /home/rfkrocktk/Music :

drwxr-Sr-- 201 rfkrocktk media-users 12288 2011-01-13 12:26 Music

A execução de sudo -i -u mt-daapd ls -l /home/rfkrocktk/Music não gera nada. Como posso consertar isso?

    
por Naftuli Kay 20.12.2010 / 08:41

4 respostas

5

Eu defini o proprietário do arquivo para root e o grupo para algo como 'music' e, em seguida, incluo ambos os membros do grupo "music". Em seguida, faça o diretório de músicas setgid (o que significa que os itens criados no diretório herdarão a propriedade do próprio diretório do diretório ) . Então, faça as permissões de arquivo 0660 e está tudo pronto.

As permissões de arquivo são usuário, grupo, mundo e geralmente são mostradas como um número octal (por exemplo, 0660), onde:

1 - exec   2 - escrever   4 - leia

Eles podem ser adicionados, por exemplo, 0751 significa que o proprietário do arquivo pode ler, gravar e executar; o grupo pode ler e executar; todos os outros só podem executar.

    
por 20.12.2010 / 08:56
3

Nomes não importam. O arquivo Unix e a propriedade de grupo são armazenados no sistema de arquivos e armazenados numericamente, não pelo nome. Na sua máquina original, abra um terminal como usuário comum e diga:

id -u

Isso fornecerá o ID numérico do seu usuário. Ao verificar a propriedade dos arquivos, é feita uma comparação entre o ID do usuário que efetuou login e o ID no sistema de arquivos. Ao exibir o nome do usuário, o ID é transformado em texto, consultando passwd, resultando em seu nome local.

Na sua nova máquina, execute o mesmo passo acima. O ID é diferente? Se for diferente, "você" na nova máquina não é o proprietário dos arquivos. Em ambas as máquinas, da mesma forma, se você disser

id -G

Você receberá uma lista de IDs de grupo aos quais seu usuário pertence. O grupo de cada arquivo deve corresponder a um desses IDs ou não é de propriedade do grupo. Você pode obter o usuário e grupo numérico real do arquivo com ls -nd file ou stat file .

Na maioria dos casos, dois sistemas diferentes não terão os mesmos IDs de usuário. Você pode sincronizá-los manualmente editando o passwd, mas você deve atualizar cuidadosamente todos os arquivos no sistema para converter de IDs antigos para os novos equivalentes. Sincronizar IDs entre sistemas é uma tarefa complexa que a maioria dos usuários domésticos não se incomoda; é o domínio do LDAP, NIS e outras soluções como essa.

Para resolver o seu problema, você desejará fazer com que todos os arquivos pertencentes a um ID de grupo exista em ambos os sistemas, então certifique-se de que os usuários dos dois sistemas sejam membros do grupo e conceda acesso de leitura / gravação ( chmod g+rw ) para esse grupo.

    
por 20.12.2010 / 13:43
1

Você pode definir o diretório de músicas (e todos os seus arquivos e subdiretórios) para ter 775 permissões, para que o proprietário dos arquivos e qualquer pessoa no mesmo grupo possa fazer o que quiserem nos arquivos. Então, o próximo truque é criar um novo grupo com qualquer nome que você quiser (por exemplo, compartilhar) e chgrp o diretório Música (e todos os seus arquivos e subdiretórios) para o novo grupo. Agora você só precisa garantir que os usuários que concederem acesso de leitura / gravação aos arquivos compartilhados estejam no grupo "compartilhar". Se você precisar fazer isso funcionar com outros computadores, apenas tome cuidado para que o grupo de compartilhamento tenha a mesma ID numérica em todos os computadores e você ficará bem.

    
por 21.12.2010 / 01:17
0

Aqui é uma explicação de permissões que eu achei útil. Este aqui também.

    
por 03.01.2011 / 21:40