$ LOGNAME과 logname의 차이점


12

echo $LOGNAME또는 logname명령이 정상적으로 실행될 때 다음과 같은 결과가 나타납니다.

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

그래서 그들 사이에 차이점이 있습니까?

답변:


17

에서 환경 변수 ,

$LOGNAME$USER어느 것과 동일하다

현재 로그인 한 사용자의 이름입니다. 이 변수는 시스템에 의해 설정됩니다. 값을 수동으로 변경해서는 안됩니다.

에서 man logname

logname-사용자의 로그인 이름을 인쇄하십시오


다음 예제 에서는 다르게 사용 되었습니다.

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:~$

터미널에서 루트로 로그인 한 후 차이점을 볼 수 있습니다.

  • $LOGNAME현재의 이름 부여 로그인 한 사용자 단말기 (예를 root)
  • 반면 logname인쇄 user's 로그인 이름 세션에서 로그인 (예 pandya)


6

유틸리티 로그 이름은 16.04에서 깨졌습니다. 반환 된 값을 해킹 할 수 있기 때문에 보안 상 결함이있을 수 있습니다. https://bugzilla.gnome.org/show_bug.cgi?id=747046 일부 스크립트에서 logname을 사용하고 있었는데,에서 호출했는지 여부에 관계없이 항상 동일한 값 (내 로그인 이름)을 반환했기 때문에 유용하다는 것을 알았습니다. 환경 변수 $ USER 및 $ LOGNAME은 내 자신의 수준 또는 sudo 호출에서 가져옵니다. 누군가 내 컴퓨터를 해킹하고 그 가치를 수정하는 것에 대해 걱정하지 않았습니다. 아아 .... 해결 방법을 찾았습니다. 홈 디렉토리에 파일을 만들었습니다.

echo $USER > ~/.logname

내 로그 이름에 액세스하려면 (예 : Bash 변수 g_logname에 할당) 그렇게합니다.

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

이것은 나 자신이나 루트 레벨에서 sudo를 통해 작동하며, "~"를 내 홈 디렉토리로 할당합니다. 시스템에서 각 사용자의 홈 디렉토리에 대한 .logname 파일을 작성할 수 있습니다. 예, 누군가 내 컴퓨터를 해킹하여 파일을 변경할 수는 있지만 걱정할 필요는 없습니다. 스크립트가 작동하기를 원합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.