Por padrão no RHEL 5.5 eu tenho
[deuberger@saleen trunk]$ sudo cat /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
Qual é a diferença entre cada um dos tipos de entrada ( console
, vc/*
, e tty*
)? Especificamente, qual é o resultado final da adição e remoção de cada tipo de entrada?
Meu entendimento é que eles afetam como e quando você pode fazer login, mas há algum outro efeito? E quando você pode e quando não pode fazer login, dependendo de quais entradas existem?
EDITAR 1
O que eu sei é que isso tty1-6
corresponde a saber se você pode fazer login nos primeiros 6 consoles que você acessa usando Ctrl- Alt- F1até Ctrl- Alt- F6. Sempre pensei que fossem consoles virtuais, então estou um pouco confuso. E a que console
corresponde?
Obrigado.
EDITAR 2
Qual é o efeito, se houver, no modo de usuário único?
Responder1
/etc/securetty
é consultado por pam_securetty
módulo para decidir de quais terminais virtuais ( tty*
) root
é permitido fazer login.
No passado, /etc/securetty
era consultado diretamente por programas login
, mas agora o PAM cuida disso. Portanto, as alterações /etc/securetty
afetarão qualquer coisa que use o PAM com um arquivo de configuração que use pam_securetty.so
. Portanto, apenas o login
programa é afetado por padrão.
/etc/pam.d/login
é usado para logins locais e /etc/pam.d/remote
para logins remotos (como telnet).
Os principais tipos de entrada e seus efeitos são os seguintes:
- Se
/etc/securetty
não existir,root
é permitido fazer login de qualquertty
- Se
/etc/securetty
existir e estiver vazio,root
o acesso será restrito ao modo de usuário único ou programas que não são restritos porpam_securetty
(ou sejasu
,sudo
, ,ssh
,scp
,sftp
) - Se você estiver usando
devfs
(um sistema de arquivos obsoleto para manipulação/dev
), adicionar entradas no formuláriovc/[0-9]*
permitirá o login root a partir do número do console virtual fornecido. - Se você estiver usando
udev
(para gerenciamento dinâmico de dispositivos e substituição dedevfs
), adicionar entradas do formuláriotty[0-9]*
permitirá o login root a partir do número do console virtual fornecido. - A listagem
console
normalmente/etc/securetty
não tem efeito, pois/dev/console
aponta para o console atual e normalmente é usado apenas como otty
nome do arquivo no modo de usuário único, que não é afetado por/etc/securetty
- Adicionar entradas como
pts/[0-9]*
permitirá programas que usam pseudoterminais (pty
) epam_securetty
fazer loginroot
assumindo que o alocadopty
é um dos listados; normalmente é uma boa ideianãoincluir essas entradas porque é um risco à segurança; permitiria, por exemplo, que alguém fizesse login no root via telnet, que envia senhas em texto simples (observe quepts/[0-9]*
é o formatoudev
usado no RHEL 5.5; será diferente se usardevfs
ou alguma outra forma de gerenciamento de dispositivos).
Para o modo de usuário único, /etc/securetty
não é consultado porque sulogin
é usado em vez de login
(veja a sulogin
página de manual para mais informações). Além disso, você pode alterar o programa de login usado /etc/inittab
para cada nível de execução.
Observe que você não deve usar /etc/securetty
para controlar root
logins via ssh
. Para fazer isso altere o valor de PermitRootLogin
in /etc/ssh/sshd_config
. Por padrão /etc/pam.d/sshd
não está configurado para consultar pam_securetty
(e portanto /etc/securetty
). Você poderia adicionar uma linha para fazer isso, mas ssh
não define o real tty
até algum tempo após o auth
estágio, portanto não funciona conforme o esperado. Durante os estágios auth
e account
- pelo menos para openssh
- o tty
( PAM_TTY
) é codificado para ssh
.
A resposta acima é baseada no RHEL 5.5. Muito disso pertencerá às distribuições atuais de outros sistemas *nix, mas há diferenças, algumas das quais observei, mas não todas.
Eu mesmo respondi porque as outras respostas estavam incompletas e/ou imprecisas. Muitos outros fóruns, blogs, etc. on-line também contêm informações imprecisas e incompletas neste tópico, por isso fiz extensas pesquisas e testes para tentar obter os detalhes corretos. Se alguma coisa que eu disse estiver errada, por favor me avise.
Fontes:
- http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/ch-sec-network.html#s1-wstation-privileges
- http://www.mathematik.uni-marburg.de/local-doc/centos5/pam-0.99.6.2/html/sag-pam_securetty.html
- http://linux.die.net/man/1/login
- http://www.tldp.org/HOWTO/html_single/Text-Terminal-HOWTO/
- http://www.kernel.org/doc/Documentation/devices.txt
- http://en.wikipedia.org/wiki/Virtual_console
- http://en.wikipedia.org/wiki/Linux_console
- http://www.kernel.org/doc/man-pages/online/pages/man4/console.4.html
- http://www.unix.com/security/8527-restricting-root-login.html
- http://www.redhat.com/mirrors/LDP/HOWTO/Serial-HOWTO-11.html#ss11.3
- http://www.mathematik.uni-marburg.de/local-doc/centos5/udev-095/udev_vs_devfs
Responder2
vc/X
e ttyX
são sinônimos: caminhos diferentes para os mesmos dispositivos. O objetivo da redundância é capturar vários casos para não bloquear você.
Tradicionalmente login
(e possivelmente getty
, não me lembro com certeza) verificaria /etc/securetty
e negaria root
logins em terminais não listados. Nos sistemas modernos, existem outras maneiras de fazer isso e também outras medidas de segurança. Confira o conteúdo de /etc/login.defs
(que também aborda securetty
a funcionalidade do e é recomendado pela securetty(5)
página de manual) e também de /etc/pam.d/login
, onde você pode controlar o comportamento deste recurso.
Como securetty
só é verificado por login
, os meios de login que não são usados login
(por exemplo, SSH com use_login=no
, gerenciadores de exibição X, etc.) não são afetados.