Eu tenho um antigo servidor Solaris 5.10. Estou migrando os produtos tomcat para o Centos 7. Há duas contas no servidor Solaris que preciso migrar. Os shells para ambas as contas são identificados como "/usr/local/bin/ftponly". Isso parece um script SH simples, mas não posso dizer se ele veio com o servidor ou se um administrador anterior (ou técnico do fornecedor) o escreveu. Este script e "/bin/sh" são os únicos itens em "/etc/shells".
No novo servidor Centos 7, escolhi "/usr/sbin/nologin" como os shells dos dois usuários. "/usr/local/bin/ftponly" no servidor antigo é um script legível por humanos, mas "/usr/sbin/nologin" parece ser um arquivo binário. As transações de FTP no novo servidor com as duas contas de usuário em questão estão funcionando e o SSH é negado.
Estou pronto para ir ou existem considerações maiores com os shells disponíveis? Meu sistema operacional Linux de pão com manteiga é o Ubuntu, então alguns dos recursos internos de segurança do Centos me fazem coçar a cabeça às vezes.
Isso não é algo que varia de acordo com o sistema operacional. Varia de acordo com o software do servidor FTP.
O que conta como uma conta de usuário de pessoa real no Unix não é trivial para determinar programaticamente. As contas de usuário impessoais podem ter campos de shell não vazios no banco de dados de contas do sistema que apontam para executáveis reais (por exemplo
uucico
, ) e diretórios pessoais válidos e existentes (por exemplo,/var/spool/news
).A convenção empregada por pelo menos dois servidores FTP não anônimos é que uma conta de usuário é uma pessoa real para fins de FTP e, portanto, pode realizar login por FTP, se o campo shell em seu registro no banco de dados de contas do sistema não estiver vazio e tiver um valor que pode ser encontrado na tabela "user shells" do sistema (
/etc/shells
para um desses dois, de acordo com agetusershell()
função da biblioteca no caso do outro).Claramente, como se pode dizer apenas pelo nome, o
/usr/local/bin/ftponly
shell está aproveitando isso para ter contas de usuário que executam o que provavelmente é um programa muito simples de emissão de mensagem e logoff quando o usuário tenta um terminal log-on, mas que funcionam para log-on FTP .nologin
fará o mesmo trabalho se estiver na tabela de shells do usuário. Mas isso é específico para o software do servidor FTP que você está usando. Outro software de servidor FTP no mesmo sistema operacional terá regras bem diferentes.O twoftpd de Bruce Guenter , por exemplo, testa o valor do campo shell em relação a duas definições de configuração. Se corresponder a um, o cliente obtém o serviço FTP somente leitura com o
twoftpd-anon
programa. Se corresponder ao outro, o cliente obtém o serviço FTP somente para upload de arquivos com otwoftpd-drop
programa.Mesmo o software que você está usando pode ter opções de configuração complexas que afetam isso. No vsftpd, por exemplo, a
check_shell
opção, alocal_enable
opção, apam_service_name
opção e a configuração do PAM para esse serviço (incluindo a presença e a configuração dopam_shells
módulo) estão todas envolvidas.Leitura adicional