Impedindo o acesso ao TTY quando o X é eliminado

Impedindo o acesso ao TTY quando o X é eliminado

Suponha que eu inicie um servidor X manualmente a partir de um console virtual /dev/tty1com xinitou startx, com a linha id:3:initdefault:definida em /etc/inittab. O servidor X é executado e colocado em outro console virtual, normalmente sendo /dev/tty7. Depois de algum tempo, decido bloquear a tela xscreensaver --locke sair do computador. Para desbloquear a tela seria necessário saber a senha do meu usuário. Se alguém decidir encerrar o servidor X em execução, ele retornará ao shell em execução /dev/tty1e praticamente terá acesso ao meu computador. Normalmente, o servidor X pode ser eliminado Ctrl+Alt+Backspaceou alternado para o console inicial e SIGTERMo processo em execução com ^C.

Isso é trivial - o que significa que deve haver maneiras triviais de evitar que isso aconteça. estou a usarvlockpara bloquear meu console virtual /dev/tty1para evitar isso:

$ xinit && vlock || vlock

Quando o servidor X retornar, normalmente &&ou não ||, o console será bloqueado. Esta pode não ser a solução ideal. Eu liessefio eesseartigo wiki, explicando diferentes soluções.

Que outros métodos existem para evitar esse tipo de acesso aos consoles virtuais das sessões X? O método acima é seguro o suficiente? Como você evita isso em seu sistema? Não vou usar um gerenciador de exibição.

Responder1

Você pode evitar trocas de console do Xorg adicionando oOption "DontVTSwitch" "yes"para o seu arquivo de configuração do Xorg.

Para evitar Ctrl+ Alt+ Backspacevocê tem que adicionar oDontZapopção para o seu arquivo de configuração do Xorg. É claro que isso não impedirá completamente o acesso ao console. Se Xfor encerrado por algum motivo, por exemplo, problema com um driver, o invasor ainda terá acesso ao seu console.

Você também pode usar exec startxem vez de startxwhich will substitui bash por startx, isso significa que mesmo que alguém consiga abortar, Xnão conseguirá acessar seu console. Você também pode usar um gerenciador de exibição como lightdm, kdm, gdmou xdmentão não precisará de uma sessão de shell existente para iniciar a sessão ax.

Responder2

Eu tenho a seguinte entrada no meu .profile:

# startx if on tty1 and tmux on tty2
if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/tty1 ]]; then
    exec xinit -- :0 -novtswitch &>/dev/null &
    logout

  elif [[ $(tty) = /dev/tty2 ]]; then
    tmux -f $HOME/.tmux/conf new -s secured
fi

Se eu optar por fazer login X, uso o TTY1. Isso logoutgarante que, após Xiniciar o TTY7, eu esteja desconectado do TTY1. eu usoxautolockecadeadocomo minhas ferramentas de bloqueio de tela.

Se Xfor eliminado, sou levado de volta para um TTY7 vazio e preciso mudar para um dos seis gettys ativos para fazer login novamente.

informação relacionada