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

74

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

70

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
24
  

Em muitas variantes do Unix, "nobody" é o nome convencional de um usuário   conta que não possui arquivos, não está em grupos privilegiados e não tem   habilidades, exceto aquelas que todos os outros usuários têm.

     

É comum executar daemons como ninguém, especialmente servidores, para   limitar o dano que poderia ser feito por um usuário mal-intencionado que ganhou   controle deles. 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. A razão é que   processos de propriedade de ninguém têm a capacidade de enviar sinais uns aos outros   e até depurar uns aos outros, permitindo-lhes ler ou até modificar cada   memória do outro.

Informações obtidas do link .

    
por Paulius Šukys 07.08.2013 / 15:02
14

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

  

Em muitas variantes * nix, nobody é o nome convencional de um usuário   conta que não possui arquivos, não está em grupos privilegiados e não tem   habilidades, exceto aquelas que todos os outros usuários têm (o usuário nobody   e o grupo não tem nenhuma entrada no arquivo /etc/sudoers ).

     

É comum executar daemons como nobody , especialmente servidores, em   Para limitar os danos que poderiam ser causados por um usuário mal-intencionado que   ganhou controle deles. No entanto, a utilidade desta técnica é   reduzido se mais de um daemon for executado assim, porque então ganhar   o controle de um daemon forneceria o controle de todos eles. A razão é   que nobody -owned processos têm a capacidade de enviar sinais para cada   outros e até mesmo depurar uns aos outros, permitindo-lhes ler ou até modificar   memória do outro.

     

Fonte :    Wikipedia - Ninguém (nome de usuário)

  

Os processos nobody -owned são capazes de enviar sinais para os outros   e até mesmo usar um ao outro no Linux, o que significa que um   processo pode ler e escrever a memória de outro processo de propriedade de ninguém.

     

Esta é uma entrada de amostra do usuário nobody no arquivo /etc/passwd :

alaa@aa-lu:~$ grep nobody /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
     

Como você pode perceber, o usuário nobody tem /bin/sh como um shell de login   e /nonexistent como o diretório inicial. Como o nome sugere, o   O diretório /nonexistent não existe, por padrão.

     

Se você é paranóico, pode definir o shell padrão de nobody como    /usr/sbin/nologin e assim, negue o login do ssh para o usuário nobody .

     

Fonte :    LinuxG.net - O usuário Linux e Unix Ninguém

    
por Alaa Ali 07.08.2013 / 15:13
12

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