Quero dizer, se dois usuários têm o mesmo nome, como o sistema sabe que na verdade são usuários diferentes quando aplica permissões de arquivo?
Essa dúvida me veio à mente enquanto eu estava pensando em renomear minha casa /home/old-arch
antes de reinstalar o sistema (eu tenho /home
em sua própria partição e não a formato), para que eu pudesse ter uma nova e intocada /home/arch
. Gostaria de saber se o novo sistema me daria as permissões antigas em meus arquivos ou se me reconheceria como diferente arch
.
permissions
users
authentication
multiuser
Arch Stanton
fonte
fonte
ls -n
./home/old-arch
antes de reinstalar o sistema (eu tenho/home
em sua própria partição e não a formato), para que eu pudesse ter uma nova e intocada/home/arch
. Gostaria de saber se manteria as mesmas permissões em meus arquivos ou se o sistema me reconheceria como diferentearch
.Respostas:
No Unix, os usuários são identificados por seu ID (uid), que deve ser exclusivo (no escopo do sistema local). Portanto, mesmo que fosse possível criar 2 usuários diferentes com o mesmo nome (o adduser no meu sistema se recusa a fazer isso, consulte esta pergunta para obter mais informações. As contas unix separadas podem compartilhar um nome de usuário, mas possuem senhas separadas? ), Precisariam obter uids diferentes. Embora você possa manipular arquivos que contêm as informações do usuário para corresponder aos seus critérios, cada programa é baseado na suposição de que os uids são únicos no sistema, portanto, esses usuários seriam idênticos.
EDIT: A outra resposta demonstrou um caso em que você tem 2 nomes de usuário diferentes para o mesmo uid - no que diz respeito ao sistema, é como ter dois nomes diferentes para o mesmo usuário, portanto, construções como essa devem ser evitadas, se possível , a menos que você queira criar especificamente um alias para um usuário no sistema (consulte a pergunta de alias do usuário unix no serverfault para obter mais informações sobre os detalhes técnicos).
O sistema usa esses uids para impor permissões de arquivo. O uid e o gid (ID do grupo) do usuário ao qual o arquivo pertence são gravados nos metadados do arquivo. Se você transportar o disco para outro computador com um usuário diferente que compartilhe aleatoriamente o mesmo uid, o arquivo pertencerá repentinamente a esse usuário no sistema. Sabendo que os uids geralmente não têm mais que números inteiros de 16 bits em um sistema unix, isso mostra que os uids não devem ser globalmente exclusivos, apenas únicos no escopo do sistema local.
fonte
Se você forçar a existência de vários usuários com o mesmo nome de usuário, haverá várias entradas
/etc/{shadow,passwd}
com o mesmo nome:Se você tentar fazer login como esse usuário, fará login como a primeira correspondência.
Não haverá como fazer login como o segundo usuário com o mesmo nome.
Observe que o Linux rastreia os usuários por seu uid, não por seu nome de usuário.
Seria possível, no entanto, ter dois nomes de usuário diferentes com o mesmo ID de usuário. Considere uma versão diferente de
/etc/passwd
:Observe que, para os nomes de usuário
a
eb
, a terceira coluna é 1001 - esse é o uid / ID do usuário. Agora, se o usuárioa
ou usuáriob
efetuar login (mesmo com senhas diferentes), ambos serão "usuário 1001" e serão exibidos como usuárioa
na perspectiva do sistema operacional. Aqui também, a primeira entrada correspondente é a retornada (na maioria dos casos):Ambos
a
eb
são uid1001
e terá acesso aos recursos disponíveis para uid1001
.fonte
useradd
adequada se você tentar adicionar um usuário existente, então, por 'força' aqui, Andy significa 'editar manualmente/etc/passwd
e/etc/shadow
que é muito território Não tente fazer isso em casa.setuid
com o segundo UID? Ou mesmosudo -u '#<uid>' bash
?Se você possui um sistema de usuário único e faz uma reinstalação com a mesma distribuição ou com uma distribuição semelhante, é muito provável que sua conta de usuário tenha o mesmo ID de usuário e, portanto, seja o mesmo usuário da perspectiva do kernel. Por exemplo, o usuário criado durante a instalação foi o UID 1000 nos sistemas Debian, tanto quanto me lembro. Outros sistemas podem usar outro número, mas é muito provável que seja um número inteiro pequeno e igual ao mesmo em todas as instalações.
O mesmo se aplica a outros usuários (se houver), pois os UIDs geralmente são alocados sequencialmente. É provável que o terceiro usuário criado tenha o mesmo UID que o terceiro usuário criado em outro sistema. Você precisaria executar etapas antecipadamente para garantir que os UIDs não estejam sendo reutilizados nos dois sistemas.
Por razões semelhantes, qualquer coisa que use o NFS precisará ter um banco de dados de usuário compartilhado.
Mas, neste caso, como é seu sistema pessoal, você pode fazer login como root e executar
chown newuser. -R /home/olduser
mesmo que o UID seja diferente.(Os sistemas Windows são diferentes, eles geram essa sequência de ID longa mais aleatória. Lá, se você mover um disco para outra máquina, os arquivos serão vistos como pertencentes a um usuário desconhecido e você não terá acesso sem usar os poderes de administrador.
Além disso, eu disse "provavelmente" muito acima. Não há como saber se alguma distribuição se comporta de maneira diferente. O Linux moderno também suporta UIDs de 32 bits, portanto, embora não seja tão longo quanto os SIDs do Windows, ainda há algum espaço a ser usado se alguém quiser, por exemplo, UIDs aleatórios. Normalmente, não há muita utilidade para isso, no entanto. O administrador do sistema deve saber quais discos eles anexam ao sistema e ajustar as propriedades dos arquivos de acordo, ou tornar o ponto de montagem inacessível para outros usuários.)
fonte
O Unix é um sistema muito antigo, uma época em que as capacidades de armazenamento eram muito pequenas e tudo - tanto arquivos quanto usuários - era identificado por números . Os nomes vieram depois , depois que o armazenamento cresceu um pouco.
Uma virtude desse sistema é que os nomes são apenas rótulos ligados aos identificadores reais: os IDs numéricos. Portanto, você pode ter vários nomes para um usuário (na edição direta de / etc / passwd), além de vários nomes para um arquivo (útil para armazenar o arquivo apenas uma vez, mas em vários locais).
Os limites são o sistema para o usuário e a partição para o arquivo.
Eu digo isso apenas para esclarecer, para explicar por que as coisas são o que são .
Devo confessar que nunca tentei o caminho oposto - um mesmo nome com IDs diferentes - sempre pensei que não era possível. É isso? Não como um bug?
fonte