No login ou na saída, o shell congela para um usuário em particular até que pressione Ctrl + C

1

estamos usando o CentOS 6.9 e um dos meus usuários tem um erro, onde se eles fizerem login, a tela ficará congelada até que eles pressionem Ctrl + C. A mesma coisa acontece quando eles saem. Também acontece quando estou root e su - como o usuário problemático. O usuário usa tcsh mas eu não vi nenhum outro usuário com o tcsh sofrer esse problema

[root@boop] # su - troublesome_user
(hangs until terminate)    
^C[troublesome_user@boop ~]$ exit
logout
(hangs until terminate)
^C [root@boop] #

Eu estou mais familiarizado com o bash, então eu verifiquei para .bash_profile e .bash_rc, mas agora sei que o tcsh usa um conjunto diferente de arquivos .profile. Eu olhei em seus arquivos .cshrc e não notei nada de estranho.

Este é o conteúdo:

setenv LC_ALL C
set path = ($path /nfs/bin) 

Alguém tem alguma pista se existe algum recurso do tcsh que possa causar isso?

Obrigado!

    
por PolkaRon 07.07.2017 / 06:54

1 resposta

2

Primeiro, eu verificaria todos os locais onde o tcsh executa comandos quando ele for iniciado.

A página man tem isto a dizer (eu coloquei os locais dos arquivos em negrito):

A login shell begins by executing commands from the system files /etc/csh.cshrc and /etc/csh.login. It then executes commands from files in the user's home directory: first ~/.tcshrc (+) or, if ~/.tcshrc is not found, ~/.cshrc, then ~/.history (or the value of the histfile shell variable), then ~/.login, and finally ~/.cshdirs (or the value of the dirsfile shell variable) (+). The shell may read /etc/csh.login before instead of after /etc/csh.cshrc, and ~/.login before instead of after ~/.tcshrc or ~/.cshrc and ~/.history, if so compiled; see the version shell variable. (+)

Se isso não levar você a lugar nenhum, tentarei as duas coisas a seguir:

  • Faça login como o usuário ofensivo e deixe-o travado, mude para um console diferente e verifique w - que deve mostrar o que esse usuário está executando.
  • Ctrl+Z em vez de Ctrl+C - que deve suspender o processo em execução em vez de interrompê-lo. Então jobs para ver o que foi suspenso.

EDIT: Como JdeBP apontou nos comentários, você também pode definir as opções -x e -V para tcsh em su - embora eu ache que você poderia encontrar a coisa ofensiva com -X . Algo parecido com isto:

su - troublesome_user -- -X
  • -x ecoa todos os comandos antes da execução
  • A entrada do comando
  • -v é ecoada após a substituição do histórico
  • -X igual a -x mas aplica-se mesmo antes de o .tcshrc ser processado
  • -V mesmo que -v mas aplica-se mesmo antes de o .tcshrc ser processado
por 07.07.2017 / 08:29