Control-C dispara logout da raiz no bash

4

Estou enfrentando um problema realmente frustrante neste servidor específico, toda vez que eu pressiono ctrl + c , eu efetuo logout da sessão raiz

Executando o lançamento do CentOS Linux 7.3.1611 & Bash (4.2.46-21.el7_3.x86_64)

[root@server ~]# uname -a  
Linux server 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux  
[root@server ~]# ^C   
[root@server ~]# logout
[user@server ~]$   
    
por Sir Dave 09.08.2017 / 17:15

3 respostas

6

trapping-ctrl-c-em-bash descreve como interceptar CTRL + C para acionar alguma ação.
Por favor, verifique sua conta root ( bashrc etc), se você está executando uma armadilha similar para forçar logout ao pressionar CTRL + C

Trapping ctrl-c in Bash

You can use the trap builtin to handle a user pressing ctrl-c during the execution of a Bash script. e.g. if you need to perform some cleanup functions.

#!/bin/bash

# trap ctrl-c and call ctrl_c()
trap ctrl_c INT

function ctrl_c() {
        echo "** Trapped CTRL-C"
}

for i in 'seq 1 5'; do
    sleep 1
    echo -n "."
done
    
por 09.08.2017 / 17:24
2

Você pode verificar se o seu ambiente bash não é realmente um wrapper em torno do bash que apenas executa o bash abaixo.

Usamos uma solução semelhante em nosso local de trabalho e ela é usada para rastrear tudo que é feito usando SSH, mas o problema é exatamente o seu, sempre que ctrl + c estiver envolvido, ele gosta de abandonar o shell.

    
por 09.08.2017 / 17:21
0

Em todos os SO você pode encontrar sinais que devem ser manipulados. Existem três reações aos sinais: 1 - ignorá-lo, 2 - manipulá-lo por si mesmo, 3 - deixá-lo para o sistema operacional. Ctrl + C é sinal de desligamento por padrão. você usa o comando trap para manipular o sinal. Verifique também o padrão ASCII no seu sistema, alguns códigos podem ser diferentes. verifique man ascii para o sinal HUP e seu afretador pertence. Exemplo de comando de trap: trap "echo hi" SIGINT que imprime oi toda vez que você pressiona Ctrl + C. Além disso, você pode encontrar uma lista de sinal pelo comando kill -l .

    
por 13.08.2017 / 21:42