Post

07. 사용자 정보 다루기

07. 사용자 정보 다루기

1. 사용자 정보 관련 파일

/etc/passwd 파일

/etc/passwd 파일은 행별로 사용자 계정 정보를 기록한다. 사용자 계정 정보는 :으로 구분되는 일곱 개의 항목으로 구성되어 있다.

  • 로그인 ID:x:UID:GID:설명:홈 디렉터리:로그인 셸
  • 로그인 ID: 사용자 계정의 이름. 최대 32자까지 사용 가능하고, 소문자, 대문자, 숫자, _, -을 사용할 수 있다. -로 시작하거나 전체가 숫자여서는 안 되고, 중복된 이름을 사용할 수 없다.
  • x: 초기 유닉스 시스템에서 사용자 암호가 기록되던 곳. 현재는 /etc/shadow 파일에 별도로 보관하고 있다.
  • UID: 시스템이 사용자를 구별하기 위해 사용하는 번호. 일반적으로 0~999, 65534은 시스템 계정용 UID로 예약되어 있다. 일반 사용자는 1000번부터 할당된다. 로그인 ID가 다르더라도 UID가 같으면 리눅스 시스템은 동일한 사용자로 판단한다.
  • GID: - 그룹 ID를 나타낸다. 사용자의 기본 그룹은 사용자를 등록할 때 자동으로 설정되며, 특별히 소속 그룹을 지정하지 않으면 로그인 ID가 그룹 ID로 등록된다. 그룹에 대한 정보는 /etc/group 파일에 저장되어 있다.
  • 설명: 사용자 계정의 설명.
  • 홈 디렉터리: 사용자 계정의 홈 디렉터리 경로.
  • 로그인 셸: 사용자 계정의 로그인 셸 경로.

/etc/shadow 파일

/etc/shadow 파일은 사용자 계정의 암호를 관리하는 파일이다. 사용자 계정의 암호 정보는 :으로 구분되는 아홉 개의 항목으로 구성되어 있다.

  • 로그인 ID:암호:최종 변경일:MIN:MAX:WARNING:INACTIVE:EXPIRE:Flag
  • 로그인 ID: 사용자 계정의 이름
  • 암호: 시스템 계정은 * 또는 !로 표시된다.
  • 최종 변경일: 암호가 마지막으로 변경된 날짜. 1970년 1월 1일을 기준으로 경과한 일수로 기록된다. (현재 날짜로 확인법: date -d "1970-01-01 N days")
  • MIN: 암호를 변경한 후 그 암호를 사용해야 하는 최소 기간
  • MAX: 암호를 변경한 후 그 암호를 사용할 수 있는 최대 기간
  • WARNING: 암호가 만료되기 전에 사용자에게 경고를 며칠 전부터 시작할 것인지
  • INACTIVE: 암호 만료 후 로그인이 비활성화되기까지의 기간
  • EXPIRE: 사용자 계정이 만료되는 날
  • Flag: 비워둔 항목

/etc/login.defs 파일

/etc/login.defs 파일은 사용자 계정의 설정과 관련된 기본값을 정의한 파일이다.


/etc/group 파일

/etc/group 파일은 그룹의 정보가 저장된 파일이다. 리눅스에서 사용자는 기본적으로 하나 이상의 그룹에 속해있다. 사용자의 기본 그룹은 /etc/passwd 파일의 GID 항목에 지정되며, 추가로 속한 2차 그룹은 /etc/group 파일에 지정된다. 그룹의 정보는 :으로 구분되는 네 개의 항목으로 구성되어 있다.

  • 그룹 이름:x:GID:그룹 멤버
  • x: 그룹의 암호. 리눅스에서는 암호화된 그룹 암호를 여기에 저장하거나 /etc/gshadow 파일에 저장한다. 그룹 암호는 newgrp 명령을 사용하여 자신이 속하지 않은 그룹으로 전환할 때 사용된다.
  • GID: 그룹 식별 번호
  • 그룹 멤버: 그룹에 속한 멤버들의 사용자 계정 이름

/etc/gshadow 파일

/etc/gshadow 파일은 그룹 암호가 저장된 파일이다. :으로 구분되는 네 항목으로 구성되어 있다.

그룹 이름:그룹 암호:관리자:그룹 멤버

  • 그룹 이름: 그룹의 이름
  • 그룹 암호: 그룹 암호
  • 관리자: 그룹의 암호나 멤버를 바꿀 수 있는 사용자 계정
  • 그룹 멤버: 그룹에 속한 멤버들의 사용자 계정

2. 사용자 정보 보기 명령

사용자 로그인 정보 확인하기: who

  • 기능: 현재 시스템을 사용하는 사용자의 정보를 출력한다.
  • 형식: who [옵션]
  • 옵션
    • -a: 전체 옵션을 모두 적용하여 출력한다.
    • -q: 사용자명과 사용자 숫자를 출력한다.
    • -H: 출력 항목의 제목도 함께 출력한다.
    • -b: 마지막으로 재부팅한 날짜와 시간을 출력한다.
    • -m: 현재 사용자 계정의 정보를 출력한다.
    • -u: 현재 로그인하고 있는 사용자 계정의 정보를 출력한다.
    • -d: 종료된 프로세스들을 출력한다.

사용자 로그인 정보 확인하기: w

  • 기능: 현재 시스템을 사용하는 사용자의 정보와 작업 정보를 함께 출력한다.
  • 형식: w [옵션] [사용자명]
  • 옵션
    • -s: 일부 항목을 제외하고 출력한다.

로그인하고 있는 사용자 확인하기: users

  • 기능: 시스템에 로그인한 사용자명을 출력한다.

사용자 계정의 로그인 기록 확인하기: last

  • 기능: 시스템 부팅 시간 정보와 사용자 계정이 로그인하고 로그아웃한 정보를 출력한다.

소속 그룹 확인하기: groups

  • 기능: 사용자 계정이 속한 그룹을 출력한다.
  • 형식: groups [계정명]

3. root 권한 사용 방법

su(substitute user) 명령

  • 기능: 현재 로그인하고 있는 사용자 계정을 로그아웃하지 않고 다른 사용자 계정으로 전환하여 명령을 실행할 수 있도록 한다.
  • 형식: su [옵션] [대체할 사용자 계정]
  • 옵션
    • -s: 지정한 셸로 적용하며, 셸의 경로는 절대경로로 지정한다. (su -s /bin/bash userid)
    • -: 대체할 사용자 계정의 사용자 환경을 적용한다. (대체 사용자의 홈 디렉토리로 이동됨)

sudo(superuser do) 명령

sudo 명령은 root 권한으로 명령을 실행할 수 있게 한다. /etc/sudoers 파일에 권한을 설정할 수 있으며 오직 root 계정으로만 수정이 가능하다. vi로 편집이 가능하지만 sudo visudo 명령을 사용하여 편집하는 것을 권장한다.


4. UID와 EUID

UID와 EUID의 개념

  • UID(RUID): 실제 사용자 ID, 사용자가 로그인할 때 사용한 계정의 UID.
  • EUID: 유효 사용자 ID, 현재 명령을 수행하는 주체의 UID.
  • 달라지는 경우
    • 실행파일에 SETUID가 설정되어 있는 경우
    • su 명령을 사용하여 다른 계정으로 전환한 경우

UID와 EUID 확인하기

  • UID 출력: who am i, who -m
  • EUID 출력: whoami, id

5. 사용자 계정 관리 명령

새로운 사용자 생성

  • sudo adduser [옵션] 사용자명: 사용자 계정을 생성한다.
  • useradd라는 명령어도 있지만, adduser를 사용해야 홈 디렉터리와 기본 셸 설정까지 자동으로 생성된다.

Sudo 권한 부여

  • sudo usermod -aG sudo 사용자명: 특정 사용자에게 sudo 권한을 부여한다.
    • -G: 특정 그룹에 소속시킨다.
    • -a: 기존 그룹 목록을 유지하면서 추가한다.
  • sudo visudo: sudoers 파일을 편집하여 특정 사용자에게 sudo 권한을 부여한다.
  • [유저명] ALL=(ALL) NOPASSWD: ALL를 추가하여 비밀번호 없이 sudo 명령을 사용할 수 있다.

    파일의 맨 마지막에 적어야 기존 설정들에 덮어씌워지지 않고 확실하게 적용된다.

사용자 삭제

  • sudo deluser [옵션] 사용자명: 사용자 계정을 삭제한다.
    • --remove-home: 사용자의 홈 디렉터리와 정보까지 모두 삭제한다.
This post is licensed under CC BY 4.0 by the author.