Como o diretório $ HOME / .ssh e as permissões de arquivo $ HOME / .ssh / authorized_keys funcionam quando vários usuários têm um mesmo UID?

1

Eu tenho acesso a um sistema no qual dois usuários têm um UID 0:

host:~ # cat -n /etc/passwd | grep -E "root|testuser"
     1  root:x:0:0:root:/root:/bin/bash
    31  testuser:x:0:0:testuser:/root/testuser:/bin/bash
host:~ #

Por exemplo, isso geralmente causa um comportamento em que eu SSH (autenticação baseada em chave) neste sistema com o nome de usuário testuser e estou identificado como root :

host:~ # id
uid=0(root) gid=0(root) groups=0(root)
host:~ # ls -ld /root/testuser
drwxr-xr-x 3 root root 352 Jan 25 01:02 /root/testuser
host:~ #
host:~ # ls -ld /root/testuser/.ssh/
drwx------ 2 root root 80 Nov 18 15:38 /root/testuser/.ssh/
host:~ # 

No entanto, no meio da sessão de login, às vezes, sou identificado como testuser :

host:~ # ls -ld /root/testuser
drwxr-xr-x 3 testuser root 352 Dec 16 18:39 /root/testuser
host:~ #

Isso não me incomoda, mas estou intrigado como é possível que eu sempre possa usar o SSH nesta máquina como testuser , embora essa configuração de UIDs duplicados também atrapalhe a propriedade do diretório /root/testuser/.ssh/ e /root/testuser/.ssh/authorized_keys file.

    
por Martin 25.01.2017 / 00:23

1 resposta

5

Não existe algo como "vários usuários têm um mesmo UID" . Um UID identifica um usuário. Mesmo UID, mesmo usuário.

O que você criou são duas maneiras diferentes para o mesmo usuário efetuar login. O usuário é UID 0. O UID 0 pode efetuar login com o nome root , com a senha definida na entrada root de /etc/shadow , e quando essas credenciais são usadas, a variável de ambiente HOME é definida como /root e o programa /bin/bash é executado. O UID 0 também pode efetuar login com o nome testuser , com a senha definida na entrada testuser de /etc/shadow , e quando essas credenciais são usadas, a variável de ambiente HOME é definida como /root/testuser e o programa /bin/bash é executado.

O kernel só sabe sobre o ID do usuário, não sobre o nome do usuário. O sistema de arquivos armazena apenas o ID do usuário, não os nomes dos usuários. Os nomes de usuários não são usados para controle de acesso a objetos do sistema, como arquivos e processos. A maioria dos programas converte IDs de usuários em nomes de usuários quando eles precisam exibir informações envolvendo um usuário e de nomes de usuários a IDs de usuários quando precisam implementar alguma política envolvendo um usuário.

Os arquivos que você visualizou pertencem ao usuário 0. Quando você executa ls , ele recebe as informações de que o proprietário do arquivo é 0 e recupera as informações sobre o usuário 0 para exibi-lo de uma maneira mais amigável. Isso normalmente retorna a primeira entrada em /etc/passwd , não consigo explicar por que você está vendo testuser ocasionalmente.

Muitas ferramentas assumem implicitamente que existe uma correspondência de um para um entre os nomes de usuário e os IDs de usuário, portanto, o comportamento se um usuário tiver vários nomes nem sempre é o ideal. Você não deveria fazer isso; geralmente funciona, mas você precisa estar preparado para lidar com a ocasional esquisitice.

    
por 25.01.2017 / 01:53

Tags