Sudo como usuário diferente e tela em execução

153

Descobri hoje que a tela de execução como um usuário diferente no qual eu sudo não funciona!

ou seja,

ssh bob@server         # ssh into server as bob
sudo su "monitor" -
screen                 # fails: Cannot open your terminal '/dev/pts/0'

Eu tenho um script que é executado como o usuário "monitor". Nós o executamos em uma sessão de tela para ver a saída na tela. O problema é que temos um número de usuário que faz login com sua própria conta (ou seja, bob, james, susie, etc ...) e, em seguida, eles sudo para o usuário "monitor". Dar-lhes acesso ao usuário "monitor" está fora de questão.

    
por luckytaxi 25.02.2010 / 16:07

7 respostas

223

Tente executar script /dev/null como o usuário a quem você su antes de iniciar a tela - é um hack do gueto, mas deve deixar a tela feliz.

    
por 25.02.2010 / 17:46
32

Estou usando uma função de wrapper em torno de screen para o (s) usuário (s) para o qual eu sudo su . Esta é a função do wrapper que adicionei ao (s) usuário (s) ~/.bashrc :

function screen() {
  /usr/bin/script -q -c "/usr/bin/screen ${*}" /dev/null
}

Isso me permite usar todas as opções e parâmetros para screen que eu possa querer usar. Estou pensando em colocar essa função em todo o sistema.

    
por 13.08.2014 / 15:45
7

Supondo que eles sejam SSH no host, você pode adicionar as chaves ssh públicas para cada usuário que precisa acessar a conta do monitor no arquivo ~ monitor / .ssh / authorized_keys. Em seguida, na máquina remota de cada usuário, eles podem executar

ssh -t [email protected] screen -RD

    
por 25.02.2010 / 17:52
6

Supondo que estamos falando sobre esse erro:

$ sudo su - bob
$ screen
Cannot open your terminal '/dev/pts/5' - please check.

Aqui está um one-liner (pode ser usado como "alias gobob", por exemplo):

sudo su - bob -c "script -c bash /dev/null"'

Explicação:

Isso iniciará um shell (como shell de login) como user bob. Usuário bob começa script , que é dito para invocar um bash (pode ser traço ou ksh ...) e uma cópia da sessão é jogada fora.

    
por 22.02.2015 / 09:36
0

Provavelmente, teria que alterar as permissões no dispositivo em questão ou adicionar um monitor a um grupo que tenha permissão para ler esse dispositivo. Essa seria minha primeira inclinação. Mas você teria que pesar as implicações de segurança disso.

    
por 25.02.2010 / 16:51
0

Você diz que faz:

sudo su "monitor" -

Eu estou querendo saber sobre o traço à direita. Eu costumo fazer:

sudo su - username

O traço (pela página su man) diz ao su para "fazer do shell um shell de login". Isso significa que ele irá fornecer todos os scripts de inicialização do shell e definir coisas como PATH e HOME corretamente.

    
por 25.02.2010 / 19:44
-3

Acabei de acertar este problema. Resolvi com chmod +rw $(tty) antes de executar o sudo. O problema com essa solução é que qualquer um pode se conectar e espionar seu terminal depois disso.

    
por 22.06.2010 / 04:09