Qual é o objetivo do usuário 'nobody'?

78

Depois de ler Listar todos os usuários humanos , notei que existe uma conta de usuário chamada ' nobody 'no meu sistema Ubuntu.

Também notei que posso fazer login nesta conta no terminal usando o seguinte comando e minha senha:

sudo su nobody

Não me importa, mas quero saber qual é o propósito desse usuário? Ele é criado por padrão em uma nova instalação do Ubuntu ou é criado pela instalação de um pacote específico?

    
por Radu Rădeanu 07.08.2013 / 14:52

5 respostas

74

Está lá para executar coisas que não precisam de permissões especiais. Geralmente é reservado para serviços vulneráveis (httpd, etc) para que, se eles forem hackeados, eles tenham um dano mínimo no resto do sistema.

Compare isso com a execução de algo como um usuário real, se esse serviço for comprometido (os servidores da web são ocasionalmente explorados para executar código arbitrário), ele será executado como usuário e terá acesso a tudo que o usuário teve. Na maioria dos casos, isso é tão ruim quanto obter root.

Você pode ler um pouco mais sobre o usuário nulo no Wiki do Ubuntu:

Para responder às suas continuações:

Por que não consigo acessar esta conta com su nobody ?

sudo grep nobody /etc/shadow mostrará que ninguém tem uma senha e você não pode su sem uma senha de conta. A maneira mais limpa é sudo su nobody . Isso vai deixar você em um shell sh bastante desolado.

Você pode dar um exemplo específico quando é indicado para usar esta conta?

Quando as permissões não são necessárias para as operações de um programa. Isso é mais notável quando não há nenhuma atividade de disco.

Um exemplo do mundo real disso é memcached (um cache / banco de dados / coisa em memória de valor-chave), localizado no meu computador e meu servidor sendo executado na conta nobody. Por quê? Porque ele simplesmente não precisa de nenhuma permissão e dar a ele uma conta que tenha acesso de gravação aos arquivos seria apenas um risco desnecessário.

    
por Oli 07.08.2013 / 15:02
27
% bl0ck_qu0te%

Informações obtidas do link .

    
por Paulius Šukys 07.08.2013 / 15:02
15

O usuário nobody é criado por padrão em uma nova instalação (verificado no Ubuntu Desktop 13.04).

% bl0ck_qu0te% % bl0ck_qu0te%     
por Alaa Ali 07.08.2013 / 15:13
15

As respostas acima estão erradas, porque elas assumem que nobody é um id de usuário estilo "anônimo / convidado" genérico.

No modelo de controle de acesso para UNIX / Linux, IDs de usuário de estilo anônimo / convidado não existem e são sugestões incorretas:

  • " comum para executar daemons como nobody , especialmente servidores, para limitar o dano que pode ser feito por um usuário mal-intencionado que obteve o controle deles. " por causa do seguinte: " No entanto, a utilidade desta técnica é reduzida se mais de um daemon for executado assim, porque então ganhar o controle de um daemon forneceria o controle de todos eles ".
  • " Um exemplo real disso é memcached (um cache / banco de dados / coisa em memória de valor-chave), localizado em meu computador e meu servidor sendo executado na conta nobody . Por quê? ele simplesmente não precisa de nenhuma permissão e dar a ele uma conta que tivesse acesso de gravação aos arquivos seria apenas um risco desnecessário. "

O nome do usuário nobody com ID de usuário 65534 foi criado e reservado para uma finalidade específica e deve ser usado apenas para essa finalidade: como um espaço reservado para usuários "não mapeados" e ids de usuário em exportações de árvore NFS.

Ou seja, a menos que o mapeamento de usuário / id seja configurado para exportações de árvore NFS, todos os arquivos na exportação aparecerão pertencentes a nobody . O objetivo é impedir que todos os usuários no sistema de importação acessem esses arquivos (a menos que tenham "outras" permissões), já que nenhum deles (exceto root ) pode ser / tornar-se nobody .

Portanto, é uma péssima idéia usar nobody para any outra finalidade, porque seu propósito é ser um nome de usuário / id de usuário para arquivos que não devem ser acessíveis a ninguém.

A entrada do Wiki também está muito errada.

A prática UNIX / Linux é criar uma nova conta para cada "aplicativo" ou área de aplicativo que precisa de um domínio de controle de acesso separado e nunca reutilizar nobody fora do NFS.

    
por PeterG 15.09.2015 / 14:07
1

ninguém é uma conta especial de usuário e grupo. Como é um nome de usuário real (e nome de grupo) e pode ser usado por processos e até por usuários, não é literalmente ninguém . Por exemplo, algumas configurações do Apache não têm ninguém como o usuário / grupo que possui os arquivos e diretórios do site. O problema surge quando vários processos podem usar o usuário nobody, como diretórios NFS e o servidor da web.

    
por jeffmcneill 11.11.2016 / 08:31