id e comandos whoami mostram usuários diferentes

1

Recentemente, notei uma coisa estranha e estou pedindo que você explique tal comportamento.

# Ok, I logged in as root

# Am I root? Sure.
╭─root@s1 ~
╰─# whoami && id
root
uid=0(root) gid=0(root) groups=0(root)


# Now i want to log in as user1
╭─root@s1 ~
╰─# su - user1


# What? nginx instead of user1?
╭─nginx@s1 ~
╰─$ whoami && id
nginx
uid=498(nginx) gid=500(user1) groups=500(user1)


# So, what is my home dir?
╭─nginx@s1 ~
╰─$ echo $HOME
/home/user1

Então a pergunta é: por que os comandos whoami e id me mostram usuários diferentes?

Eu não sou um administrador deste servidor e não sei o que ele fez com o servidor, mas esta pergunta é interessante para mim.

    
por Sergey Chizhik 19.11.2017 / 10:36

1 resposta

1

É seguro?

Isso não vai quebrar o sistema operacional, você pode espionar nginx (e nginx em você). É mais um obstáculo para o ser humano (daí a sua pergunta) do que perigoso para o SO.

Para o kernel unix / linux, o processo e os arquivos são procurados pelo id do usuário (descartarei o grupo para simplificar).

Ao usar ps ou ls -l thoses comandos ( ps e ls ) lerão /etc/passwd para corresponder id com nome de usuário. A regra, se um id for mencionado mais de uma vez, é parar na primeira ocorrência.

Como dois usuários podem ter o mesmo id?

A opção padrão

para useradd impedirá esses problemas conflitantes, no entanto

  1. você pode forçar o useradd a usar um ID existente ( -o , --non-unique options)
  2. você pode editar /etc/passwd manualy ou ter um script que inclua um grupo de usuários

No seu caso, é provável que o administrador não tenha feito isso de propósito, eles simplesmente têm shell, muito host para gerenciar e não se preocuparam em verificar problemas conflitantes.

nginx pode ser instalado na criação do host (o processo de instalação criará o usuário nginx ), adicionando assim

nginx:x:498:498::/var/www:/bin/false

para /etc/passwd

depois, os usuários são adicionados por uma combinação de edição /etc/passwd e mkdir + chown , adicionando por sua vez

user1:x:498:500::/home/user1:/bin/zsh
user2:x:499:500::/home/user2:/bin/zsh

para /etc/passwd

Por que alguém faria isso de propósito?

Você pode desejar ter mais de um shell de login (por exemplo, bash, csh, fish, kde, ...). Nesse caso, você pode usar várias entradas como:

archemar:x:101:101:Archemar:/home/archemar/bash:/bin/bash
arcsh:x:101:101:Archemar:/home/archemar/csh:/bin/csh
arfish:x:101:101:Archemar:/home/archemar/fish:/bin/fish
arkde1:x:101:101:Archemar:/home/archemar/kde1:/bin/bash
arkde2:x:101:101:Archemar:/home/archemar/kde2:/bin/bash

Isso me permitiria usar login diferente, manter arquivo de configuração específico e editar um ao outro sem sudo . No lado negativo existem cinco senhas diferentes, essa não é a maneira correta de trocar o env do KDE, e existe um comando chsh se eu precisar trocar o shell.

Acima de configuração seria (deve ser) frown por sysadmin, diferente $HOME valor, vai render diferentes PATH=$HOME/bin:.. (que é o que você está procurando), mas você ainda tem que ter uma parte comum em $PATH e, no final, não é provável que sua configuração seja mais fácil.

Você também pode executar testes de software automáticos e manter diretórios separados (diretório home, neste caso), com um ID exclusivo para o usuário de teste.

mas, quero dizer ...

pwck (verificação de senha) emitirá um aviso

    
por 21.11.2017 / 14:26