su para usuário que não existe mais?

1

Eu tenho uma situação interessante, onde a conta de um usuário foi temporariamente removida (papelada não renovada a tempo). No entanto, graças à magia da "tela", seus processos ainda estão em execução.

Eu adoraria poder se reconectar a essas sessões antigas e salvar alguns dados. Isso é possível? Eu tenho poderes sudo, mas não sei como aplicá-los neste caso.

Normalmente eu faria:

  1. chmod 777 'tty'
  2. sudo su <user>
  3. screen -x

mas o usuário não existe mais neste caso. Conectar de forma simples o antigo ID do usuário não funcionou (não que eu realmente esperasse).

Este é o RedHat Enteprise Linux 5: (2.6.18-53.1.14.el5)

    
por Michael H. 21.11.2009 / 05:02

3 respostas

4

Você não pode criar temporariamente a conta de usuário novamente usando o mesmo UID?

    
por 21.11.2009 / 05:12
2

OK, é por isso que os usuários devem ser desativados, em vez de removidos. Existem opções embutidas para passar por esse tipo de coisa (e existem configurações em todos os softwares de gerenciamento centralizado de usuários que eu conheço).

Mas você não está aqui para ser gritado.

Os arquivos do usuário ainda existem ou foram removidos com a conta? A tela usa os arquivos de bloqueio para reconectar, e se eles forem embora, eu honestamente não sei como recuperar as sessões.

Tente a sugestão de Keiran de recriar o UID, se possível. Às vezes, não é viável, especialmente em uma autenticação centralizada, onde os IDs são criptografados a partir de outras informações do usuário, mas se você puder, isso seria ótimo.

Supondo que você não pode, você precisa encontrar uma maneira de assumir o terminal. Eu estou indo supor que o TTYSnoop não está configurado em seu sistema já. Nesse caso, vai ficar peludo.

Assumindo que suas sessões de tela emitem um terminal pts / # como o meu, pode haver (MAIO) uma chance. pt significa pseudoterminal e é uma espécie de cliente / servidor. Existem os pt escravos, que é o terminal com o qual você digita, e existe o ptmaster, que recebe a entrada. Existem muitos escravos (/ dev / pts / *) para um mestre de pt (/ dev / ptmx). Da página man ao ptmx:

   Before  opening  the  pseudo-terminal slave, you must pass the master’s
   file descriptor to grantpt(3) and unlockpt(3).

   Once both the pseudo-terminal master and slave are open, the slave pro‐
   vides  processes  with an interface that is identical to that of a real
   terminal.

Pode (pode!) ser possível assumir a identidade dos terminais que você quer assumir (oh inferno, é melhor também dizer seqüestro neste momento) usando um programa escrito personalizado que convenientemente ignora certas medidas de segurança, como a preexistência dos descritores de arquivos desejados.

Provavelmente, é muito menos trabalhoso neste momento apenas admitir a derrota e perder os dados.

    
por 21.11.2009 / 05:29
0

Você tentou, como root, conectar especificando o nome do soquete da tela em execução na tela? (Eu não tentei isso pessoalmente.)

    
por 21.11.2009 / 05:17

Tags