
Suponha que eu inicie um servidor X manualmente a partir de um console virtual /dev/tty1
com xinit
ou 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 --lock
e 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/tty1
e praticamente terá acesso ao meu computador. Normalmente, o servidor X pode ser eliminado Ctrl+Alt+Backspace
ou alternado para o console inicial e SIGTERM
o processo em execução com ^C
.
Isso é trivial - o que significa que deve haver maneiras triviais de evitar que isso aconteça. estou a usarvlock
para bloquear meu console virtual /dev/tty1
para 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 oDontZap
opção para o seu arquivo de configuração do Xorg. É claro que isso não impedirá completamente o acesso ao console. Se X
for encerrado por algum motivo, por exemplo, problema com um driver, o invasor ainda terá acesso ao seu console.
Você também pode usar exec startx
em vez de startx
which will substitui bash por startx, isso significa que mesmo que alguém consiga abortar, X
não conseguirá acessar seu console. Você também pode usar um gerenciador de exibição como lightdm
, kdm
, gdm
ou xdm
entã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 logout
garante que, após X
iniciar o TTY7, eu esteja desconectado do TTY1. eu usoxautolockecadeadocomo minhas ferramentas de bloqueio de tela.
Se X
for eliminado, sou levado de volta para um TTY7 vazio e preciso mudar para um dos seis gettys ativos para fazer login novamente.