리눅스 시스템을 처음 사용하는 사용자라면 "현재 이 시스템에 누가 로그인해서 접속해 있는가?"라는 질문이 가장 먼저 떠오를 것입니다. 시스템 관리자라면 자신의 계정이 root인지, 일반 사용자 계정인지 정확히 확인하고 어떤 차이가 있는지 분명하게 알아야 한다. 누가 내 집에 들어왔는데 가족이 들어왔는지 아니면 가족을 위장한 도둑이 들어왔는지 알아야 하는 것과 일맥상통한다. 이번 글에서는 리눅스에서 자신이 누구인지, 어떤 사용자 정보와 권한을 가졌는지를 id와 who am i이라는 명령어를 중점으로 중요하게 알아야 할 것을 얘기하고자 한다.
리눅스 시스템?
리눅스 시스템은 오픈 소스 기반의 운영 체제로, 다양한 플랫폼에서 사용되고 있습니다. 사용자와 개발자들이 자유롭게 수정하고 배포할 수 있는 특징 덕분에, 리눅스는 서버, 데스크탑, 모바일 기기 등 다양한 환경에서 널리 활용되고 있습니다. 또한, 보안성과 안정성 면에서도 높은 평가를 받고 있어 많은 기업과 기관에서 선택하고 있습니다. 리눅스의 유연성과 강력한 커뮤니티 지원은 사용자들에게 많은 이점을 제공합니다.
id 명령어로 사용자 정보 확인하기
리눅스에서 사용자 정보를 확인할 때 가장 기본적이고 강력한 명령어는 id
이다.
id
는 “Identification(식별)”의 약어로, 다음과 같은 사용자 정보를 제공한다.
- UID(User ID): 사용자 고유의 ID
- GID(Group ID): 주 그룹의 ID
- Groups: 사용자가 소속된 모든 그룹 정보
기본 사용법
id
위 명령어를 입력하면 현재 로그인한 사용자의 UID, GID, 그리고 소속된 그룹 정보를 한눈에 확인할 수 있다. 예를 들어 id를 입력하면 다음 내용일 출력된다고 가정해보자.
uid=1000(user) gid=1000(user) groups=1000(user), 27(sudo), 114(lpadmin)
위 결과는 user
라는 계정이 UID와 GID 1000을 가지고 있으며, sudo
와 lpadmin
그룹에도 속해 있음을 보여준다. 즉 id를 통해 자신의 id와 자신이 속한 id의 그룹 id를 알 수 있으며 나아가 어디 그룹에 속해 있는지를 알 수 있다. 이를 통해서 특정 id가 서버 내에서 어떤 권한과 어떤 역할을 할 수 있는지를 대략 짐작할 수 있다.
특정 사용자 정보 확인하기
시스템에 로그인한 사용자가 아닌, 특정 사용자에 대한 정보를 확인하고 싶을 때는 id
명령어 뒤에 사용자 이름을 추가하면 됩니다:
id username
예를 들어, id root
를 입력하면 시스템 관리자 계정인 root
의 정보를 확인할 수 있다.
더 나아가서…
UID, EUID, SUID의 차이와 중요성
리눅스에서는 UID, EUID, SUID를 정확히 이해하는 것이 중요하다. 이 세 가지는 사용자의 권한과 관련된 중요한 개념으로, 시스템 관리 및 보안에 있어 필수적인 지식을 제공한다.
- UID(User ID): 사용자의 고유 ID로, 사용자를 식별하는 기본 값이다. 파일 및 프로세스 소유자를 확인하거나 권한을 설정할 때 사용된다.
- EUID(Effective User ID): 유효 사용자 ID로, 실행 중인 프로세스가 어떤 사용자의 권한으로 동작하는지를 나타내는 것으로 일반 사용자라도
sudo
와 같은 명령을 통해 루트 권한을 임시로 사용할 경우, EUID는root
로 변경됩니다. 따라서, 보안 점검 과정에서 해킹이나 의심스러운 권한 사용 여부를 확인할 때 EUID를 분석하여 어떤 UID가 어떤 EUID를 사용했는지 확인한다.- SUID(Set User ID): 특정 실행 파일에 설정되는 특수 권한으로, 해당 파일이 실행될 때 파일 소유자의 권한으로 실행되도록 설정한다. 예를 들어,
passwd
명령어는 SUID 비트를 사용하여 일반 사용자도 비밀번호 변경 작업을 수행할 수 있다. 단, SUID는 보안상 취약점이 될 수 있으므로, 서버 관리자는 SUID가 설정된 파일을 정기적으로 점검해야 한다.SUID 설정 여부 확인
특정 파일에 SUID가 설정되어 있는지 확인하려면 다음 명령어를 사용한다.
ls -l 파일이름
출력 결과에서 파일 권한 부분에
s
가 포함되어 있다면 해당 파일은 SUID가 설정된 것입니다.EUID와 서버 보안 점검
EUID는 실행 중인 프로세스가 어떤 사용자의 권한으로 동작하는지를 나타내며, 서버 보안 점검 과정에서 중요한 역할을 한다. 해킹이 발생했거나 파일 권한이 의심스러운 경우, EUID 정보를 확인하여 누가 해당 프로세스를 실행했는지 파악할 수 있다. 다음 명령어를 통해 현재 프로세스의 EUID의 UID 번호를 확인할 수 있다.
id -u
또는 특정 파일과 관련된 EUID 확인은 다음과 같이 가능합니다.
ls -l 파일이름
이 명령어는 파일 소유자와 권한 정보를 함께 보여줍니다.
who, whoami, who am i 명령어로 사용자 세부정보 확인하기
id
외에도 리눅스에서는 자신 또는 다른 사용자의 정보를 확인할 수 있는 명령어가 여러 가지 있는데 이 중 자주 사용되는 몇 가지를 소개하고자 한다.
who
who
명령어는 현재 시스템에 로그인한 모든 사용자와 관련 정보를 출력합니다. 이를 통해 현재 시스템에 어떤 사용자가 접속해 있는지 확인할 수 있다.
who
다음은 출력 예시로서 user라는 로그인한 사용자가 tt7 가상 콘솔을 통하여 접속해 있다는 것이며 그 이후 시간은 로그인한 시간이며 :0은 X Window System에서 디스플레이 번호를 나타낸다. 즉, 여러 개의 디스플레이가 있다면 첫 번째는 0으로 표시한다.
user tty7 2024-12-16 09:45 (:0)
whoami
현재 로그인한 사용자의 이름(계정명)만 알고 싶다면 whoami
명령어를 사용한다.
whoami
출력 예시
user
who am i
who am i
명령어는 현재 접속한 사용자의 로그인 정보를 보여준다. (특히 원격 접속 상황에서 유용하다)
who am i
출력 예시
user pts/0 2024-12-16 09:45
실습을 통한 이해
리눅스 명령어는 이론적으로 배우는 것보다 직접 실행해보며 이해하는 것이 가장 효과적이다. 다음은 실습 가이드를 적었으니 반드시 순서대로 실습해보면 확인해보자.
- 터미널에서
id
명령어를 실행해 자신의 사용자 정보를 확인 whoami
와who am i
명령어를 실행해 비교- 추가로
id
뒤에 다른 사용자 이름을 넣어 해당 사용자의 정보를 확인 ls -l
명령어로 파일의 SUID 설정 여부를 점검
id와 who am i 구분
앞서 언급한 바와 같이 현재 누가 내 집에 들어 와 있는데 누군지 명확하게 알아야 하는 것처럼
현재 로그인하여 접속한 사람이 누군지 정확하게 알아야 한다. 이쯤에서 예상한 사람도 있을 것같다.
id와 who am i 명령어를 구분해서 인지해야 하는 이유는 id는 현재 id 정보만 알려준다면 who am i는 최초 접속한 사람의 정보만 알려주기 때문이다.
가령 user라는 id가 접속해서 su – susers 명령어를 통해 id를 바꾼다면 현재는 susers 정보만 보여주지만 who am i는 최초 접속한 사람인 user의 정보만 보여준다. 이는 최초 접속한 user가 susers라는 걸로 바꿔 이것 저것 실행해도 결국 who am i 를 통하여 이 사람이 user임을 알 수 있다는 것이다.
이뿐만 아니라 who am i와 whoami도 구분해야 하는데 whoami는 EUID를 확인하는 명령어이다. 즉 어떤 명령어를 하면 그 사용자 권한이 누구 인지를 알 수 있는 명령어 인 것이다. id와 다소 비슷하게 느껴질 수 있다. 하지만 엄밀한 정의를 따지면 id는 UID, GID, 그룹 정보를 확인하는 명령어라면 whoami는 사용자 권한을 확인하는 명령어라는 것을 잊지 않았으면 좋겠다.
정리
리눅스에서 현재 로그인한 사용자의 정보를 확인하는 것은 시스템 관리를 시작하는 첫걸음인 만큼UID, EUID, SUID의 차이를 명확히 이해하여 서버 관리와 보안 점검에서 더 큰 역량을 발휘하도록 해야한다. id
, who
, whoami
와 같은 명령어를 활용하면 간단하고 빠르게 사용자와 그룹 정보를 확인할 수 있음은 물론 해킹이나 의심스러운 권한 사용 여부를 탐지하는 데 유용한 코드이다. 이 과정은 시스템 관리자가 자신과 다른 사용자의 권한을 점검하거나 문제를 해결할 때 중요한 역할을 하는 것임을 잊지 말자.
관련 키워드
- 리눅스 사용자 정보 확인
- 리눅스 id 명령어 사용법
- 리눅스 UID, EUID, SUID 차이
- 리눅스 who, whoami 명령어
- 리눅스 그룹 정보 확인
리눅스를 처음 사용하는 분들에게 이 글이 유용한 참고자료가 되길 바란다. 추가적으로 궁금한 점이 있다면 댓글로!