AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 450973
Accepted
Arch Stanton
Arch Stanton
Asked: 2018-06-21 13:03:34 +0800 CST2018-06-21 13:03:34 +0800 CST 2018-06-21 13:03:34 +0800 CST

Como o Linux identifica os usuários?

  • 772

Quero dizer, se dois usuários têm o mesmo nome, como o sistema sabe que eles são realmente usuários diferentes quando impõe permissões de arquivo?

Essa dúvida me veio à mente quando eu estava pensando em renomear minha casa /home/old-archantes de reinstalar o sistema (tenho /homeuma partição própria e não a formato), para que eu pudesse ter um novo arquivo /home/arch. Eu me perguntei se o novo sistema me daria as permissões antigas em meus arquivos ou se me reconheceria como um arquivo arch.

permissions users
  • 4 4 respostas
  • 4041 Views

4 respostas

  • Voted
  1. Andy Dalton
    2018-06-21T13:22:04+08:002018-06-21T13:22:04+08:00

    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:

    $ cat /etc/passwd
    ...
    a:x:1001:1002::/home/a:/bin/bash
    a:x:1002:1003::/home/b:/bin/bash
    
    # cat /etc/shadow
    a:...:17702:0:99999:7:::
    a:...:17702:0:99999:7:::
    

    Se você tentar fazer login como esse usuário, fará login como a primeira correspondência.

    $ ssh a@<host>
    Password:
    $ id
    uid=1001(a) gid=1002(a) groups=1002(a)
    $ pwd
    /home/a
    

    Não haverá como fazer login como o segundo usuário com o mesmo nome.

    Observe que o Linux rastreia os usuários pelo uid, não pelo 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:

    $ cat /etc/passwd
    ...
    a:x:1001:1002::/home/a:/bin/bash
    b:x:1001:1002::/home/b:/bin/bash
    

    Observe que para ambos os nomes de usuário ae b, a terceira coluna é 1001 -- esse é o uid/ID do usuário. Agora, se o usuário aou usuário bfizer login (mesmo com senhas diferentes), ambos serão "usuário 1001" e serão exibidos como usuário ada perspectiva do sistema operacional. Aqui também, a primeira entrada correspondente é a retornada (na maioria dos casos):

    $ ssh a@host
    Password: <a's password>
    $ id
    uid=1001(a) gid=1002(a) groups=1002(a)
    
    $ ssh b@host
    Password: <b's password>
    $ id
    uid=1001(a) gid=1002(a) groups=1002(a)
    

    Ambos ae bsão uid 1001e terão acesso aos recursos disponíveis para uid 1001.

    • 22
  2. Best Answer
    Lollen Jumplan
    2018-06-21T13:24:41+08:002018-06-21T13:24:41+08:00

    No Unix, os usuários são identificados por seu ID (uid), que deve ser único (no escopo do sistema local). Portanto, mesmo que fosse possível criar 2 usuários diferentes com o mesmo nome (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 têm senhas separadas? ), eles precisariam obter fluidos diferentes. Embora você possa manipular arquivos contendo 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 especificamente criar um alias para um usuário no sistema (consulte a pergunta de alias de usuário unix em 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 compartilha aleatoriamente o mesmo uid, o arquivo de repente pertencerá a esse usuário naquele sistema. Sabendo que os uids geralmente não são mais do que inteiros de 16 bits em um sistema unix, isso mostra que os uids não devem ser globalmente exclusivos, apenas exclusivos no escopo do sistema local.

    • 11
  3. ilkkachu
    2018-06-22T01:14:10+08:002018-06-22T01:14:10+08:00

    Eu estava pensando em renomear minha casa /home/old-archantes de reinstalar o sistema. Eu me perguntei se o novo sistema me daria as permissões antigas em meus arquivos ou se me reconheceria como um arco diferente.

    Se você tiver um sistema de usuário único e fizer uma reinstalação com o mesmo, ou 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 do ponto de vista do kernel. Por exemplo, o usuário criado durante a instalação foi UID 1000 em sistemas Debian até onde me lembro. Outros sistemas podem usar algum outro número, mas é muito provável que seja algum inteiro pequeno que seja o mesmo em todas as instalações.

    O mesmo se aplica a outros usuários também (se você tiver algum), já que os UIDs geralmente são alocados sequencialmente. O terceiro usuário criado provavelmente terá o mesmo UID que o terceiro usuário criado em outro sistema. Você precisaria tomar medidas com antecedência para certificar-se de que os UIDs não estão sendo reutilizados em ambos os sistemas.

    Por motivos semelhantes, qualquer coisa que use NFS precisará ter um banco de dados de usuário compartilhado.

    Mas neste caso, como é o seu sistema pessoal, você pode apenas fazer o login como root e executar chown newuser. -R /home/oldusermesmo que o UID seja diferente.

    (Os sistemas Windows são diferentes, eles geram aquela string de ID longa que é 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 poderes de administrador.

    Além disso, eu disse "provavelmente" muito acima. Não há como dizer 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á espaço para usar se alguém quiser ter, por exemplo, UIDs aleatórios. Normalmente, não há muito uso 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 a outros usuários.)

    • 3
  4. ypouplard
    2018-06-22T01:08:06+08:002018-06-22T01:08:06+08:00

    O Unix é um sistema muito antigo, uma época em que as capacidades de armazenamento eram muito pequenas, e tudo – tanto arquivos quanto usuários – eram identificados 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 (ao editar /etc/passwd diretamente), bem como vários nomes para um arquivo (útil para armazenar o arquivo apenas uma vez, mas vê-lo em vários locais).

    Os limites são o sistema para o usuário e a partição para o arquivo.

    Digo isso apenas para esclarecer, para explicar por que as coisas são o que são .

    Devo confessar que nunca tentei o contrário – um mesmo nome com identidades diferentes – sempre achei que não fosse possível. É isso? Não como um bug?

    • 1

relate perguntas

  • Como funcionam as permissões de grupo?

  • Erro de permissão do arquivo de log do Redis, mas a permissão já é 777

  • Iniciando o comando zypper com privilégio root

  • Possíveis razões pelas quais o meld não pode acessar /dev/fd/* quando executado como usuário sem privilégios?

  • Os subdiretórios não vazios de outro usuário estão protegidos contra exclusão no meu diretório?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve