Linux

[Linux] 리눅스 기본 I - passwd 파일 & group 파일

gangintheremark 2024. 3. 13. 22:11
728x90

passwd 파일

사용자 계정 정보를 저장하고 있는 파일로 콜론 : 을 구분자로 7개의 필드로 구성되어 있다.

  • 경로 : /etc/passwd

/etc/passwd 형식

* grep + 패턴, egrep + 패턴 여러개, ^ 행의 시작, $ 행의 끝 *

① root : ② x : ③ 0 : ④ 0 : ⑤ root : ⑥ /root : ⑦ /bin/bash
① 사용자 계정명 ② 사용자 패스워드 ③ UID ④ GID ⑤ comment ⑥ 홈 디렉터리 ⑦ 로그인 쉘

⑤ 설명 : 사용자 관련 기타 정보(e.g. 이름)
⑥ 홈 디렉터리 : 사용자가 로그인에 성공한 후에 동작할 쉘 프로그램이 설정된다.

② 사용자 패스워드

사용자 패스워드②에 설정된 x 의 의미는 shadow 패스워드 정책을 사용한다는 의미이다. shadow 패스워드 정책이란 별도의 shadow 파일에 암호화된 패스워드를 저장하는 방식이다 ➜ 경로 : /etc/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 로 설정

gangintheremark 계정에 접속 가능
/sbin/nologin 일 때 접속 불가능


사용자 패스워드 변경

passwd [user_account]

  • passwd 명령어는 사용자의 패스워드를 변경할 때 사용한다.
  • 일반 사용자자신의 패스워드만 변경할 수 있고 root자신을 포함하여 시스템에 등록된 모든 사용자의 패스워드를 변경할 수 있다.

root 계정으로 gang 계정의 비밀번호 변경

passwd 명령어만 입력하면 자신의 패스워드를 변경한다. 일반 사용자 계정으로는 다른 사용자의 패스워드를 변경하지 못하며 root 만 passwd 계정명 명령어를 통해 다른 사용자 계정의 패스워드를 변경할 수 있다.

 

group 파일

그룹 정보를 저장하고 있는 파일로 콜론 :을 구분자로 4개의 필드로 구성되어 있다.

  • 경로 : /etc/group

/etc/group 형식

root 그룹은 UID와 마찬가지로 GID = 0 으로 예약되어 있다.

사용자 ID와 사용자가 속한 그룹 ID 정보 확인

id : 현재 사용자ID, 기본그룹과 보조그룹ID 출력
id [user_account] : user_account 계정의 ID관련 정보 출력

  • id 명령어는 현재 사용자 또는 지정한 사용자의 ID 관련정보(사용자ID, 기본그룹과 보조그룹ID)를 확인할 때 사용

현재 사용자(root)의 ID정보 및 gang 계정의 ID 정보

728x90