[Linux] 리눅스 기본 I - passwd 파일 & group 파일
passwd 파일
사용자 계정 정보를 저장하고 있는 파일로 콜론 :
을 구분자로 7개의 필드로 구성되어 있다.
- 경로 :
/etc/passwd
* grep
+ 패턴, egrep
+ 패턴 여러개, ^
행의 시작, $
행의 끝 *
① root : ② x : ③ 0 : ④ 0 : ⑤ root : ⑥ /root : ⑦ /bin/bash
① 사용자 계정명 ② 사용자 패스워드 ③ UID ④ GID ⑤ comment ⑥ 홈 디렉터리 ⑦ 로그인 쉘
⑤ 설명 : 사용자 관련 기타 정보(e.g. 이름)
⑥ 홈 디렉터리 : 사용자가 로그인에 성공한 후에 동작할 쉘 프로그램이 설정된다.
② 사용자 패스워드
사용자 패스워드②에 설정된 x
의 의미는 shadow 패스워드 정책을 사용한다는 의미이다. shadow 패스워드 정책이란 별도의 shadow 파일에 암호화된 패스워드를 저장하는 방식이다 ➜ 경로 : /etc/shadow
③ UID
사용자ID(UID)는 시스템 내에서 사용자를 고유하게 식별하기 위한 ID이다.
- 같은 UID가 서로 다른 사용자 계정에 설정될 수 있다. 시스템은 같은 사용자로 판단한다 ➜ 일반적인 경우는 X
- root 계정의 UID는 0으로 예약되어 있다.
일반 사용자 계정의 UID를 0으로 설정하면 일반 사용자는 root 권한을 갖게된다. 공격자가 root 권한을 탈취하기 위해 일반 사용자의 UID를 0으로 조작하는 공격이 발생할 수 있다. 따라서 주기적으로 UID가 0으로 설정된 일반 사용자 계정이 있는지 점검하는 것이 필요하다.
윈도우에서는 administrator, 유닉스/리눅스에서는 root
④ GID
모든 사용자는 하나의 기본 그룹에 필수적으로 속하며 필요시 하나 이상의 보조 그룹에 속할 수 있다.
- 기본그룹 : 사용자에게 그룹 권한 부여와 사용자의 자원(e.g.파일) 생성 시 자원의 소유그룹을 결정
- 보조그룹 : 기본그룹 이외에 추가 그룹 권한 필요 시 다른 그룹에 소속될 수 있음
⑦ 로그인 쉘
사용자가 로그인에 성공한 후 동작한 쉘 프로그램이 설정된다. 리눅스의 경우 기본 쉘로 bash Shell을 사용한다.
- 쉘(Shell) : 사용자와 커널(운영체제) 간 인터페이스 역할을 하는 프로그램으로 사용자가 입력한 명령어를 해석하여 커널에 전달하고 그 결과를 출력해준다.
반드시 로그인 쉘만 설정할 수 있는 것은 아니다. 필요시 별도의 실행파일을 설정하여 로그인 완료 후 실행파일이 동작하게 할 수도 있다. 이를 악용하면 사용자 로그인 시 악성 쉘이 실행되도록 설정하는 경우도 있으므로 주기적인 점검이 필요하다
로그인이 불필요한 계정에 대해서는 로그인을 금지하도록 설정하여 공격자에 의한 불법적인 시스템 접근에 악용되지 않도록 해야한다. 로그인 쉘을 /sbin/nologin 또는 /bin/false 로 설정
사용자 패스워드 변경
passwd [user_account]
- passwd 명령어는 사용자의 패스워드를 변경할 때 사용한다.
- 일반 사용자는 자신의 패스워드만 변경할 수 있고 root는 자신을 포함하여 시스템에 등록된 모든 사용자의 패스워드를 변경할 수 있다.
passwd 명령어만 입력하면 자신의 패스워드를 변경한다. 일반 사용자 계정으로는 다른 사용자의 패스워드를 변경하지 못하며 root 만 passwd 계정명
명령어를 통해 다른 사용자 계정의 패스워드를 변경할 수 있다.
group 파일
그룹 정보를 저장하고 있는 파일로 콜론 :
을 구분자로 4개의 필드로 구성되어 있다.
- 경로 :
/etc/group
root 그룹은 UID와 마찬가지로 GID = 0 으로 예약되어 있다.
사용자 ID와 사용자가 속한 그룹 ID 정보 확인
id
: 현재 사용자ID, 기본그룹과 보조그룹ID 출력id [user_account]
: user_account 계정의 ID관련 정보 출력
- id 명령어는 현재 사용자 또는 지정한 사용자의 ID 관련정보(사용자ID, 기본그룹과 보조그룹ID)를 확인할 때 사용