Diferença entre $ LOGNAME e logname

9

quando os comandos echo $LOGNAME ou logname são executados normalmente obtêm o mesmo resultado da seguinte forma:

pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya

Então, existe alguma diferença entre eles?

    
por Pandya 02.07.2014 / 06:12

2 respostas

12

De Variáveis de ambiente ,

$LOGNAME é o mesmo que $USER , o que dá

  

O nome do usuário atualmente conectado. Esta variável é definida pelo   sistema. Você provavelmente não deve alterar seu valor manualmente.

De man logname

  

logname - imprime o nome de login do usuário

Expostos usados de maneira diferente pelo seguinte exemplo:

pandya@pandya-desktop:~$ sudo su
root@pandya-desktop:/home/pandya# echo $LOGNAME
root
root@pandya-desktop:/home/pandya# logname
pandya
root@pandya-desktop:/home/pandya# exit
exit
pandya@pandya-desktop:~$

Aqui você pode ver a diferença após o login como root no terminal,

  • $LOGNAME informa o nome do usuário que está com login no terminal (ou seja, root )
  • Considerando que logname imprime o nome de login do usuário que fez login na sessão (por exemplo, pandya )
por Pandya 02.07.2014 / 06:12
4

O logname do utilitário é quebrado em 16.04, aparentemente de propósito, porque é possível hackear o valor que ele retorna, o que pode ser uma falha de segurança. link Eu estava usando logname em alguns scripts, e achei útil porque ele sempre retornava o mesmo valor (meu nome de login) se eu estava chamando de um nível próprio ou de uma chamada sudo, enquanto as variáveis de ambiente $ USER e $ LOGNAME não. Eu não estava preocupado com alguém hackeando meu computador e modificando o valor que ele retorna. Infelizmente ... eu encontrei uma solução alternativa. Eu criei um arquivo no meu diretório home como tal

echo $USER > ~/.logname

Quando quero acessar meu nome de log (por exemplo, atribuir a uma variável de Bash, g_logname), eu o faço assim:

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

Isso funciona para mim, seja como eu ou no nível raiz através do sudo, que mantém a atribuição de "~" como meu diretório pessoal. Eu posso criar um arquivo .logname para o diretório inicial de cada usuário no sistema. Sim, alguém poderia invadir meu computador e alterar esses arquivos, mas não estou realmente preocupado com isso. Eu só quero que meus scripts funcionem.

    
por Randyman99 24.08.2016 / 11:40