Alterando o sistema de ID do usuário e do grupo (incluindo os atributos do sistema de arquivos)?

2

( esta questão possivelmente relacionada a Linux: simulando / mascarando a propriedade do usuário na montagem de partições 'externas'? - Stack Overflow )

Eu normalmente uso o Ubuntu (atualmente 11.04) como meu sistema operacional de desktop; Digamos que eu seja o usuário myself com uid = 1000, parte do grupo myself com gid = 1000; Então, basicamente, as permissões do diretório inicial são assim:

> stat ~
  File: '/home/myself'
...
Access: (0755/drwxr-xr-x)  Uid: ( 1000/   myself)   Gid: (  1000/   myself)

Agora, na mesma máquina, às vezes preciso inicializar o OpenSuse (atualmente 11.2) por meio de um LiveUSB (Live-CD). Tudo isso funciona bem para mim, exceto que o usuário padrão em um ambiente de Live CD é linux com uid = 999, parte do grupo users com gid = 100; Portanto, as permissões do diretório inicial são assim:

> stat ~
  File: '/home/linux'
...
Access: (0755/drwxr-xr-x)  Uid: ( 999/   linux)   Gid: (  100/   myself)

Então, basicamente, quando eu montei minhas unidades Ubuntu (que são de 1000: 1000) sob o OpenSUSE (cujo usuário padrão é 999: 100), eu não consigo acessá-las como de costume, ou seja:

linux@linux:~> touch /media/extdrive/xxx
touch: cannot touch '/media/extdrive/xxx': Permission denied

Então, eu pensei que deveria tentar mudar o padrão uid / gud para linux:users na máquina do OpenSUSE, então eu tentei isso:

> sudo /usr/sbin/usermod -u 1000 linux
usermod: Account 'linux' is currently in use.

> id linux
uid=999(linux) gid=100(users) groups=100(users),33(video)

# so if that fails.... change directly from /etc/passwd? 
> sudo nano /etc/passwd

> id linux
uid=1000(linux) gid=100(users) groups=100(users),33(video)

... e apenas mudando o uid, faz com que eu acesse as unidades do Ubuntu bem - no entanto, agora eu não consigo acessar o material do OpenSUSE que pertenceu anteriormente a linux:users :

> sudo nano /etc/fstab
sudo: unknown uid: 999

... então, acontece que a idéia ruim de alterar o / etc / passwd diretamente :) A solução aqui parece ter sido o drop to root shell primeiro, faça o comando usermod , reinicie - e agora eu tenho do ambiente OpenSUSE:

linux@linux:~> stat ~
Access: (0755/drwxr-xr-x)  Uid: ( 1000/   linux)   Gid: (  100/   users)

Isso me faz - na maioria das vezes - ter acesso aos sistemas de arquivos / drives do Ubuntu como de costume; ao mesmo tempo, ter acesso habitual a tudo o que pertence ao usuário padrão no OpenSUSE.

No entanto, para estar no lado seguro, também gostaria de alterar o ID do grupo. Qual seria a maneira recomendada de fazer isso (e qual seria a maneira recomendada de mudar o uid, se eu não fizesse isso corretamente na discussão acima)?

Muito obrigado antecipadamente por qualquer resposta,
Felicidades!

    
por sdaau 31.10.2011 / 16:32

1 resposta

6

Se eu entendi sua pergunta corretamente, você pode usar a condição find de -gid :

find /media/extdrive -gid 100 | sudo xargs chown myself:myself 

ou se preferir find ' -exec :

sudo find /media/extdrive -gid 100 -exec chown myself:myself {} +

ou, olhando para a manpage de chown , tem uma opção --from que você pode achar útil:

sudo chown -R myself:myself --from=:100

Veja as páginas de manual apropriadas para mais informações.

    
por 31.10.2011 / 18:25