[Linux] User & Group

조성열·2025년 9월 23일

Toss - Linux

목록 보기
2/15
post-thumbnail

User & Group 정보 저장

리눅스에서 사용자와 그룹은 다음과 같은 파일에 저장한다.

  • /etc/passwd: 시스템에 등록된 사용자 정보
  • /etc/shadow: 시스템에 등록된 사용자 pw, pw 설정
  • /etc/group: 시스템에 등록된 그룹 정보
  • /etc/gshadow: 시스템에 등록된 그룹의 pw, pw 설정

/etc/passwd

총 7개의 필드로 구성되어 있고 각 필드는 : 으로 구분된다.

USER:x:UID:GID:GECOS:HOME:SHELL

  • USER: 사용자 이름. 시스템에서 유일 해야함.
  • x(place holder): 현재는 사용되지 않지만 사용자 비밀번호를 저장하는 필드
  • UID: 시스템에서 사용자 식별자. 0은 root, 1~1000은 시스템 사용자, 1001 ~ 은 일반 사용자
  • GID: 시스템에서 그룹 식별자. 0은 root, 1~1000은 시스템 그룹, 1001 ~ 은 일반 그룹
  • GECOS: General Electric Comprehensive Operating 형식의 주석 필드
  • HOME: 홈 디렉토리를 절대경로로 나타냄
  • SHELL: 사용자 기본 쉘
    주요 시스템 사용자는 1번은 bin, 2번은 daemon, 3번은 adm(시스템 관리), 38번 ntp(컴퓨터 시간 동기화), 42번 gdm(그래픽 화면 관리) 계정이 있다.

/etc/shadow

원래 사용자 계정의 비밀번호는 /etc/passwd 필드에 저장되어 있었는데, 해당 파일은 누구나 접근 가능하기 때문에 보안상 이유로 암호화 된 형태로 shadow에 별도로 저장되게 되었다. shadow 파일은 관리자 외 접근이 불가능하고 강력한 해시 알고리즘으로 암호화 된 형태로 저장되어 있기 때문에 보안성이 높아졌다.

USER:HASH:LASTCHANG:MIN:MAX:WARNING:INACTIVE:EXPIRE:BLANK

  • USER: 사용자 이름
  • HASH: 해시 비밀번호가 저장되어 있음. $를 기준으로 해시 알고리즘, salt, 해시 pw로 나뉜다.
  • LASTCHANGE: 마지막으로 비밀번호를 변경한 날짜. 해당 필드 숫자를 1970년 1월 1일부터 더하면 마지막 변경 날짜가 나온다.
  • MIN: 비밀번호 변경 후 최소 사용 기간.
  • MAX: 비밀번호 변경 후 최대 사용 기간. 이 기간이 지나기 전까지 변경 해야한다.
  • WARNING: 만료일 전 사용자에게 경고 메시지 출력 여부
  • INACTIVE: 비밀번호 만료 후 계정 잠금 상태로 변경
  • EXPIRE: 사용자 계정 만료일
  • BLANK: 예약된 필드로 사용하지 않음
    각 필드 값을 변경하기 위해선 change 명령을 사용한다.

/etc/group

사용자 그룹 정보를 확인할 수 있다.

GROUP:x:GID:MEMBER

  • GROUP: 그룹 이름
  • x: 비밀번호 저장 필드였지만 현재는 gshadow에 저장
  • GID: 그룹 ID
  • MEMBER: 해당 그룹을 보조 그룹으로 지정하고 있는 사용자 목록

/etc/gshadow

그룹의 비밀번호가 해싱된 상태로 저장한 파일이다.

GROUP:PASSWORD:ADMIN:MEMBER

  • GROUP: 그룹 이름
  • PASSWORD: 암호화 된 비밀번호
  • ADMIN: 그룹 관리자
  • MEMBER: 그룹의 멤버

User & Group 정보 관리

정보 저장과 관리는 따로 하게 되는데, 관리는 /etc/skel/etc/login.defs에서 하게 된다.

/etc/skel

사용자에 대한 기본적인 초기화 파일들을 저장하고 있는 디렉토리다. 사용자 생성시 해당 디렉토리의 모든 파일이 해당 사용자 홈 디렉토리로 복사된다.
사용자를 생성할 때마다 사용자 설정을 하는게 번거롭기 때문에 초기 설정 파일을 배포한다.

/etc/login.defs

사용자 또는 그룹 생성시 참고하는 기본 값들이 저장되어 있다.

  • 사용자 메일 박스 위치 설정
    오류 메시지 등을 메일 박스로 전송하는데 해당 메일을 받을 위치를 설정
  • 패스워드 에이징 설정
    비밀번호 최대, 최소 사용 기간, 최소 길이, 경고 값을 설정
  • 사용자 생성 시 부여되는 UID 설정
    사용자 생성시 부여되는 UID의 최소, 최대값을 설정.
  • 그룹 생성시 부여되는 GID 설정
    그룹 생성시 부여되는 GID의 최소, 최대값을 설정.
  • 사용자 생성시 홈 디렉토리 생성 여부 설정
    사용자 생성시 홈 디렉토리의 생성 여부를 설정.
  • 홈 디렉토리 생성에 관계된 umask 설정
    사용자를 생성할 경우 해당 umask의 영향을 받아 홈 디렉토리가 생성됨.
  • 사용자 생성시 UPG 스키마 사용여부
    사용자 생성 시 같은 이름의 그룹을 생성한다. 이를 UPG 스키마라고 한다.
  • 패스워드 설정 시 해시 알고리즘 설정
    사용자 비밀번호 암호화 방식을 설정.

사용자 전환

sudo

예전엔 업무 편의상 root 비밀번호를 공유 했지만, 이 방법은 문제 발생시 추적에 어려움이 있었다. 그래서 요즘은 sudo 명령을 이용해 root 권한을 이용한다.
sudo 명령을 사용하기 위해선 두 가직 조건이 만족되어야 한다.
1. 현재 사용자 pw
2. /etc/sudoer 등록 여부

/etc/sudoers

sudo 명령을 사용하려면 조건이 필요한데, 만약 모든 사용자가 sudo 명령을 사용할 수 있다면 이는 root 계정의 비밀번호를 공유하는 것과 같다. sudo 명령은 visudo 또는 편집기로 /etc/sudoers에 직접 접근하여 사용자를 등록하는 것인데, 최신 리눅스에선 파일을 직접 수정하지 않고, 특정 명령으로 사용자를 "wheel" 그룹에 포함시켜 sudo 명령을 사용할 수 있도록 한다.
root 부분은 사용자가 사용할 수 있는 명령을 정의한다. ALL이라고 되어 있으니 모든 명령을 사용할 수 있다.
wheel 부분에서 % 기호는 그룹을 의미한다. 따라서 wheel 그룹의 구성원들은 sudo 명령을 사용할 수 있다.

su/sudo logging

특정 사용자 권한을 빌리게 되면 시스템에 로그가 기록된다. 해당 로그는 /var/log/secure에 기록되고, 이 파일은 인증과 관련된 로그를 담는 파일이다.

profile
Blue Team

0개의 댓글