Tecnicamente, a menos que pam
esteja configurado para verificar seu shell com pam_shells
nenhum deles, pode realmente impedir seu login, se você não estiver no shell. No meu sistema, eles têm tamanhos ainda diferentes, então eu suspeito que eles realmente fazem alguma coisa. Então qual a diferença? por que os dois existem? Por que eu usaria um sobre o 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
/bin/false
deve existir em qualquer lugar, mas não/sbin/nologin
: '/ sbin / nologin': esse arquivo ou diretório não existe . Alguma idéia do porquê/usr/sbin/nologin
do/sbin/nologin
Debian e do Ubuntu?Respostas:
Quando
/sbin/nologin
é definido como o shell, se o usuário com esse shell efetuar login, eles receberão uma mensagem educada dizendo 'Esta conta não está disponível no momento'. Esta mensagem pode ser alterado com o arquivo/etc/nologin.txt
./bin/false
é apenas um binário que sai imediatamente, retornando false, quando é chamado; portanto, quando alguém que temfalse
como shell efetua login, é imediatamente desconectado quandofalse
sai. Definir o shell para/bin/true
o mesmo efeito de não permitir que alguém faça login, masfalse
provavelmente é usado como uma convenção,true
pois é muito melhor transmitir o conceito de que a pessoa não tem um shell.Olhando para
nologin
a página de manual, ela diz que foi criada no 4.4 BSD (início dos anos 90), por issofalse
foi criada muito tempo depois . O uso defalse
como shell é provavelmente apenas uma convenção herdada dos primeiros dias do UNIX.nologin
é a opção mais fácil de usar, com uma mensagem personalizável dada ao usuário tentando efetuar login, portanto, teoricamente, você deseja usá-la; mas ambosnologin
efalse
terão o mesmo resultado final de alguém que não possui uma concha e não pode fazer o SSH.fonte
/usr/sbin/nologin
para distribuições baseadas no Debian.Alguns servidores FTP permitirão o acesso ao FTP somente se você tiver um shell válido.
/sbin/nologin
é considerado um shell válido, enquanto/bin/false
não é.(Acho que "válido" significa que o status de saída é 0, mas
/etc/shells
também pode aparecer, provavelmente depende do sistema, do software FTP e da sua configuração.)fonte
/etc/shells
. Apenas um palpite ... Eu posso estar errado./bin/false
é um comando do sistema usado sempre que você precisa passar um comando para um programa que não deve fazer nada além de sair com um erro. É o companheiro para/bin/true
. Ambos são utilitários POSIX muito antigos e padrão e nem produzem nenhuma saída por definição. Às vezes, true é usado para um script de shell que deve executar um loop indefinidamente, como:/usr/sbin/nologin
foi projetado especificamente para substituir um shell e produz reclamações de saída que você não pode fazer login. Antes de existir, era comum o uso/bin/false
para usuários fictícios, mas poderia ser confuso, pois o usuário não sabe por que foi expulso.fonte
/bin/true
e/bin/false
nem sempre é o que você obterá em um script de shell. Emzsh
true
efalse
são built-ins, ondebash
usa as/bin/*
versõesNa minha máquina,
nologin
exibe sempre a mesma mensagem, em inglês, ignorando argumentos./bin/false
responde--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.fonte
false
seja mais para contas do sistema que não têm usuário real enologin
para contas desativadas.nologin
versão do Centos não usa argumentos, mas pode ler a mensagem/etc/nologin.txt
.O trabalho / bin / false only é sair com um código de saída diferente de zero.
Experimente na linha de comando:
Algumas instituições usam / bin / false no campo shell do arquivo de senha. Se o usuário tentar fazer login, o shell será / bin / false e, portanto, será encerrado imediatamente
fonte
No linux,
/sbin/nologin
vem do projeto util-linux , enquanto/bin/false
faz parte do GNU Coreutils . Eles desempenham diferentes funções, e o nologin tem a opção de imprimir uma mensagem para pessoas que a possuem como shell que estão efetuando login. Os comandos linux vêm do BSD, onde parecem ter um longo histórico de diferenças. O FreeBSDfalse
simplesmente retorna 1 , enquantonologin
verifica se está 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 executam da mesma maneira.fonte
Eles podem ser o mesmo programa, mas têm significados diferentes. O nome do programa diz tudo.
fonte
Ambos fazem mais ou menos o mesmo trabalho, mas
/bin/false
são úteis para usuários não privilegiados. Por outro lado,/sbin/nologin
é para usuários privilegiados.fonte
/etc/passwd
. Eu apenas dei uma olhada em/etc/passwd
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 eu não concordo com a resposta do @ pythondetective. Estou apenas especulando o que poderia ter levado a essa conclusão. Meu comentário é um pouco tarde, no entanto.