who / w / logname quebrado em múltiplos terminais O

3

Eu tenho um problema estranho: Em uma sessão da GUI, dependendo do terminal em uso, os dois problemas (relacionados) a seguir aparecem:

  1. who e w não listam a sessão ativa do usuário
  2. logname retorna logname: no login name

Isso acontece nos seguintes terminais:

  • lxterminal
  • xfce4-terminal
  • rxvt

Por outro lado, nos seguintes cenários funciona perfeitamente (quem / w lista as funções user e logname):

  • ssh-ing em
  • xterm / lxterm / uxterm
por hyperknot 21.02.2014 / 17:16

2 respostas

0

Eu encontrei o mesmo problema em 16.04. Eu tinha vários scripts usando o logname e agora eles não funcionam. Eu criei uma solução alternativa. Enquanto logado como eu, eu solto um arquivo no meu diretório pessoal com o meu nome de usuário de login:

echo $LOGNAME > ~/.logname;

Quando quero acessar meu logname, eu o recupero assim:

g_logname="$(<~/.logname)";

Isso funciona quer eu esteja executando um script como eu ou como root, porque o sudo root mantém a definição de "~" como meu diretório pessoal. Eu posso criar um arquivo .logname para cada usuário no sistema. Esse método funciona, enquanto o uso de $ USER e $ LOGNAME não ocorre ao chamar de um nível raiz. É verdade que alguém poderia hackeá-lo e alterar o valor do arquivo, mas não estou preocupado com isso. Você sempre pode alterar as permissões no arquivo para 444 e o proprietário: group para root: root, que impedirá qualquer pessoa sem privilégios de root.

    
por Randyman99 24.08.2016 / 11:57
0

A melhor resposta que encontrei está aqui: link

ou seja,

echo ${SUDO_USER:-${USER}}

Ou alternativamente

logname 2>/dev/null || echo ${SUDO_USER:-${USER}}

FWIW, isso funciona no MacOS 10.8, 10.11 e também confirmado desde o Ubuntu 12.04.

O 2> é para suprimir o erro logname: no login name que irá logar ao console a partir do Ubuntu 16.04 devido a um erro gnome-terminal upstream .

:-${USER} significa que se $SUDO_USER estiver em branco (para horários em que o sudo não estiver sendo usado), substitua o valor de $USER .

    
por tresf 14.11.2016 / 20:37