Qual ' s a diferença entre / sbin / nologin e / bin / false

Tecnicamente, a menos que pam está configurado para verificar seu shell com pam_shells nenhum destes pode realmente impedir seu login, se você não estiver no shell. No meu sistema eles têm tamanhos diferentes, então eu suspeito que eles realmente fazem alguma coisa. Então, qual é a diferença? por que ambos existem? Por que eu usaria um em vez do outro?

-rwxr-xr-x 1 root root 21K Feb 4 17:01 /bin/false -rwxr-xr-x 1 root root 4.7K Mar 2 14:59 /sbin/nologin 

Comentários

Resposta

Quando /sbin/nologin é definido como o shell, se o usuário com esse login do shell, eles “receberão uma mensagem educada dizendo” Esta conta não está disponível no momento. “Esta mensagem pode ser alterada com o arquivo /etc/nologin.txt.

/bin/false é apenas um binário que sai imediatamente, retornando falso, quando “é chamado, portanto, quando alguém que tem false como logs de shell , eles “são desconectados imediatamente quando false sai. Definir o shell para /bin/true tem o mesmo efeito de não permitir que alguém faça login mas false é provavelmente usado como uma convenção sobre true, pois é muito melhor um t transmitindo o conceito de que a pessoa não tem um shell.

Olhando a página do manual de nologin “, diz que foi criado no 4.4 BSD (início de 1990 ) por isso veio muito depois de false ter sido criado. O uso de false como shell é provavelmente apenas uma convenção herdada dos primeiros dias do UNIX.

nologin é a opção mais amigável, com uma mensagem personalizável fornecida ao usuário que tenta fazer o login, então, teoricamente, você gostaria de usá-la; mas nologin e false terão o mesmo resultado final de alguém não ter um shell e não ser capaz de fazer o ssh.

Comentários

  • /usr/sbin/nologin para distribuições baseadas em Debian.
  • Pelo menos a implementação BSD também registra as tentativas de login para syslog como visto em opensource.apple.com/source/system_cmds/system_cmds-735/… , enquanto / bin / false wouldn ‘ não registrar nada
  • ISTO – é uma resposta incrível, com uma grande história apresentada aqui. Muito bem, Mark!
  • O /etc/nologin.txt recurso de mensagem personalizada não está disponível no Ubuntu.

Resposta

Alguns servidores FTP permitirão acesso ao FTP apenas se você tiver um shell válido. /sbin/nologin é considerado um shell válido, enquanto /bin/false não é.

(Eu acho que “válido” significa seu o status de saída é 0, mas /etc/shells também pode entrar nele, provavelmente depende do sistema, do software FTP e de sua configuração.)

Comentários

  • sim, que ‘ é provavelmente parte do programa ftp usando pam, e pam usando pam_shells que, como você disse, verifica /etc/shells. Só um palpite … Posso estar errado.
  • Acabei de verificar o Ubuntu 8.04 e 14.04. O comando nologin sai com status 1 semelhante a falso e nenhum de verdadeiro, falso ou nologin é incluído em / etc / shells. Se fossem, um usuário poderia usar chsh para selecionar tal shell e bloquear sua conta.

Resposta

/bin/false é um comando do sistema que é usado sempre que você precisa passar um comando para um programa que não deve fazer nada além de encerrar com um erro. É o complemento de /bin/true. Ambos são utilitários POSIX muito antigos e padrão e nenhum produzem qualquer saída por definição.true às vezes é usado para um script de shell que deve repetir indefinidamente, como:

while true; do ... # Waste time if [ $wasted_time -gt 100000 ]; then exit 0 fi ... done 

/usr/sbin/nologin é projetado especificamente para substitui um shell e produz uma saída reclamando que você não pode fazer login. Antes de existir, era comum usar /bin/false para usuários fictícios, mas pode ser confuso porque o usuário não saiba por que eles foram iniciados.

Comentários

  • vale a pena observar que /bin/true e /bin/false nem sempre são o que você obterá em um script de shell. Em zsh true e false são integrados, onde bash usa as /bin/* versões

Resposta

Na minha máquina, nologin exibe sempre a mesma mensagem, em inglês, ignorando os argumentos . /bin/false responde a --version e --help no idioma indicado por $LC_CTYPE. Além dessas diferenças cosméticas, elas têm o mesmo efeito.

Em termos de usabilidade, nologin é melhor se for usado por conta de uma pessoa real que fala inglês. Em termos de segurança, não há diferença.

Comentários

  • parece que talvez false é mais para contas de sistema que não têm um usuário real e nologin é para contas desabilitadas.
  • Qual é o seu sistema operacional? Centos nologin a versão não tem argumentos, mas pode ler a mensagem de /etc/nologin.txt.

Resposta

No linux, /sbin/nologin vem do projeto util-linux , enquanto /bin/false faz parte do GNU Coreutils . Eles desempenham diferentes funções e nologin tem a opção de imprimir uma mensagem para pessoas que têm como seu shell que está se autenticando. Os comandos do Linux vêm do BS D, onde parecem ter uma longa história de ser diferentes. O FreeBSD false simplesmente retorna 1 , enquanto nologin verifica para certifique-se de que está “s rodando em um TTY e envia uma mensagem para o syslog durante as tentativas de login. As versões do Linux são um pouco mais complicadas (false fazendo todo tipo de coisa divertida com internacionalização para a saída de –help, suponho), mas essencialmente executa da mesma maneira.

Resposta

/ bin / false apenas a tarefa é sair com um código de saída diferente de zero.

Experimente na linha de comando:

$:> /bin/false $:> echo $? 1 $:> 

Algumas instituições usam / bin / false no campo shell do arquivo de senha. Se o usuário tentar fazer o login, o shell é / bin / false, então eles são encerrados imediatamente

Resposta

Eles podem ser o mesmo programa, mas têm significados diferentes. O nome do programa diz tudo.

  • / bin / false destina-se a retornar um valor falso. é executado como um programa.
  • / bin / nologin destina-se a indicar ao usuário que nenhum login é permitido para uma conta. (É usado um shell de login.)

Resposta

Ambos fazem mais ou menos o mesmo trabalho, mas /bin/false é útil para usuários sem privilégios. Por outro lado, /sbin/nologin é para usuários privilegiados.

Comentários

  • Oh, como você chegou a essa conclusão?
  • Provavelmente ele olhou para /etc/passwd. Acabei de dar uma olhada em /etc/passwd de um trecho Debian recém-instalado. Nesta caixa, quase todas as contas do sistema (ids de usuário < 1000) têm /usr/sbin/nologin como shell, com algumas exceções. Observe que não concordo com a resposta de @pythondetective ‘. Estou apenas especulando o que pode tê-lo levado a essa conclusão. Meu comentário está um pouco atrasado, no entanto.
  • não! shell de login padrão não é o mesmo que privilégios.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *