Security/Linux

[리눅스]-[3번]

chimita 2022. 3. 29. 21:38

tty란?

 콘솔의 한 종류로 OS 에서 제공하는 가상콘솔 입니다. ctrl + alt + F1~6 키로 접근할 수 있습니다. 

tty는 tty1 ~ tty6까지 있습니다. 원래의 GUI(윈도우화면)로 돌아오려면 ctrl + alt + F7 키를 누르면 됩니다. 

 

콘솔이란?

컴퓨터를 조작할 때 사용하는 입출력 장치 를 콘솔이라고 합니다. 명령 조작에 사용하는 애플리케이션이나 OS자체를 콘솔 또는 콘솔애플리케이션이라고 하는데, 보통 콘솔이라고 부릅니다. cmd와 터미널 도 콘솔에 해당합니다. 

 

1.tty1로 이동하여 user1 계정으로 로그인

tty1이니까 ctrl + alt + F1 을 누르어 이동합니다.

2. w, who, whoami, who am i 명령어 실행

user1로 로그인 하여 w, who, whoami, who am i실행해보니, 

현재 로그인 한 사용자 ,현재하고 있는 작업 정보, 시스템을 사용하고 있는 사용자의 정보, 현재 로그인 한 사용자의 ID  user1의 적용되어 출력된 것을 알 수 있었습니다.  

 

3. user2 계정 생성

adduser 명령어를 통해 user2 계정 생성 후 su - [계정명] 을 통해 user2로 변경

4. w, who, whoami, who am i 명령어 실행 후 2번(user1)과 비교

user2로 변경하고 user1과 동일한 명령어 실행해보니, 

user2 계정으로 변경했음에도 불구하고 user1의 정보들이 나오는 것을 보고 신기했습니다.

 

왜 user1의 정보가 나올까?

  이는 w, who, whoami, who am i 명령어의 기능을 이해한다면 쉽게 이유를 알 수 있습니다.

리눅스 기본 명령어에서 공부한 것을 떠올려 봅시다.

 

w : 로그인 한 사용자와 현재하고 있는 작업 정보

who : 시스템을 사용하고 있는 사용자의 정보 

whoami : 현재 로그인 한 사용자(로그인ID)

who am i : 현재 로그인 한 사용자, 시스템에 접속했을 당시에 사용했던 계정명과 접속 정보

 

이를 참고해 생각해보면 3번 과정에서, 시스템(tty)에서 user1 계정을 로그아웃(exit)을 하지 않고, user1의 계정으로 로그인 된 채 user2의 계정을 생성하고 su - 명령어를 통해 사용자 계정과 홈 디렉토리를 user2로 변경한 것을 깨달을 수 있습니다.

 

따라서

위와 같은 이유 때문에, 현재 로그인 한 사용자의 ID를 출력하는 whoami 명령어에서만 user2의 정보가 출력되는 것입니다.

'로그인 ID이면 user1 아니냐?' 하는 생각이 들 수 있습니다.

조금 복잡하지만, 아닙니다.

 

왜냐하면, user1에서 user2의 계정으로 변경 할 때 su - 명령어를 사용하여 홈 디렉토리(환경변수)를 바꾸었기 때문에 현재 로그인 ID는 user2가 됩니다. 또한, w, who, who am i 명령어를 입력했을 때 현재 시스템(tty)에 로그인 되어 있는 계정은 user1이기 때문에 사용자인 user1의 정보가 출력되는 것입니다.