'login' da sessão X

3

Parece que lembro que costumava ser possível para login através de um terminal GUI. Isso foi útil se (por exemplo) você se adicionou a um novo grupo e deseja usar esses privilégios sem parar o X para efetuar login normalmente (já que a aquisição do novo grupo requer um login). 1 Claro, mude para um VT diferente, mas isso pode ser um problema, especialmente se o que você quer fazer requer um display X.

Mas no meu atual Fedora 20 w / kernel 3.11, login apenas trava indefinidamente. Nos logs do sistema:

login: FATAL: /dev/pts/3: change permissions failed: Operation not permitted

Como posso contornar isso?

1. Acontece que você pode contornar isso via su youself , que realiza um login ...

    
por goldilocks 26.01.2014 / 17:39

1 resposta

3

Esta pode não ser a solução ideal, mas funcionará.

Primeiro, para contornar o problema das permissões, su root . Próximo exec login - a razão para isso é no final de man login :

A recursive login, as used to be possible in the good old days, no longer works; for most purposes su(1) is a satisfactory substitute. Indeed, for security reasons, login does a vhangup() system call to remove any possible listening processes on the tty. This is to avoid password sniffing. If one uses the command login, then the surrounding shell gets killed by vhangup() because it's no longer the true owner of the tty. This can be avoided by using exec login in a top-level shell or xterm.

Você pode então ser enforcado por:

Cannot make/remove an entry for the specified session

Isso será refletido nos registros do sistema junto com:

login: pam_loginuid(login:session): set_loginuid failed

Provavelmente também está relacionado à recursão e que o seu uid não corresponde ao seu nome de usuário: session opened for user golidlocks by golilocks(uid=0) (porque o uid de goldilocks na sessão su foi definido como 0).

Você pode contornar isso comentando a seguinte linha temporariamente em /etc/pam.d/login :

session    required     pam_loginuid.so

Observe que, para acessar a GUI, você provavelmente terá que usar um argumento --display (por exemplo, --display :0 ) para seu aplicativo, como faria em um console de VT.

    
por 26.01.2014 / 17:39