사용자 관리

한준수·2023년 6월 18일

Linux

목록 보기
7/10

📖 사용자 계정 관련 파일

📌 사용자 관리

리눅스는 다중 사용자 시스템이므로 사용자를 구별하고 사용자에게 적절한 자원을 할당해주는 방법이 필요하다.

사용자 계정은 사용자가 시스템에 접근할 수 있는 유일한 방법이다.

📌 etc/passwd 파일

사용자 계정 정보가 저장된 기본 파일이다.

한 행에 사용자 한 명에 대한 정보가 기록되며, 콜론( : )으로 구분되는 일곱개의 항목으로 구성

  • 로그인 ID : 사용자 계정의 이름, 32자를 넘을수 없으나 8자로 제한하는 것이 좋다.
  • x : 초기 유닉스 시스템에서 사용자 암호를 저장하던 항목, 요즘은 /etc/shadow 파일에 별도로 보관한다.
  • UID : 사용자 ID 번호로 시스템이 사용자를 구별하기 위해 사용하는 번호이다.
    • 0~999번과 65534 번은 시스템 사용자를 위한 UID로 예약되어 있다.
    • 일반 사용자들은 UID 1000번부터 할당한다
  • GID : 그룹 ID, 시스템에 등록된 그룹에 대한 정보는 /etc/group 파일에 저장
  • 설명 : 사용자의 실명이나 부서명, 연락처 등 사용자에 대한 일반적인 정보가 기록된다.
  • 홈 디렉터리 : 사용자 계정에 할당된 홈 디렉터리의 절대 경로를 기록한다.
  • 로그인 셸 : 사용자의 로그인 셸을 지정, 우분투에서는 배시 셸(/bin/bash)을 기본 셸로 사용한다.
# /etc/passwd 파일의 예
cat /etc/passwd

📌 /etc/shadow 파일

사용자 암호에 관한 정보를 별도로 관리하는 파일

root 계정으로만 내용을 볼 수 있다.

sudo cat /etc/shadow
  • 로그인 ID : 사용자 계정 이름
  • 암호(패스워드) : 실제 비밀번호가 암호화 되어 저장된다.
  • 최종 변경일 : 암호가 마지막으로 변경된 날짜를 지정, 1970년 1월 1일을 기준으로 날수를 기록한다.
  • MIN : MIN은 암호를 변경한 후 사용해야 하는 최소 시간
  • MAX : 암호를 사용할 수 있는 최대 기간
  • WARNING : 암호가 만료되기 전에 경로를 시작하는 날수
  • INACTIVE : 암호가 만료된 후에도 이 항목에 지정한 날수 동안은 로그인이 가능
  • EXPIRE : 사용자 계정이 만료되는 날
  • Flag : 향후 사용할 목적으로 비워둔 항목

📌 /etc/login.defs 파일

사용자 계정의 설정과 관련된 기본 값을 정의

cat /etc/login.defs

✍ login.defs 파일에서 정의하는 기본 값

📌 etc/group 파일

그룹에 대한 정보가 저장된다.

✍ etc/group 파일의 구조

  • 그룹 이름 : 그룹의 이름
  • x : 그룹의 암호를 저장하는 곳
    • 여기에 암호화된 그룹 암호를 저장하거나 /etc/gshadow파일에 그룹 암호를 저장
  • GID : 그룹을 식별하는 번호
  • 그룹 멤버 : 그룹에 속한 멤버들의 사용자 계정 이름이며 쉼표(,)로 사용자를 구별한다.
# /etc/group 파일의 에
cat /etc/group

📌 /etc/gshadow 파일

그룹의 암호가 저장되어있다.

원래 유닉스에는 없는 파일로 리눅스에서 별도로 만든 파일이다.

✍ /etc/gshadow 파일 구조

  • 그룹 이름 : 그룹의 이름
  • 그룹 암호 : 암호화된 그룹의 이름
  • 관리자 : 그룹의 암호나 멤버를 바꿀 수 있는 사용자 계정으로 여러 개일 경우 쉼표(,)로 구분
  • 그룹 멤버 : 그룹에 속한 멤버들의 사용자 계정 이름이며 쉼표로 구분한다.
sudo cat /etc/gshadow

📖 사용자 계정 관리 명령

📌 사용자 계정 생성하기 - useradd

  • 형식
useradd [옵션] [로그인 ID]
  • 옵션
    • -u uid : UID 지정
    • -o : UID 중복 허용
    • -g gid : 기본 그룹의 GID 지정
    • -G gid : 2차 그룹의 GID 지정
    • -d 디렉터리 명 : 홈 디렉터리 지정
    • -s 셸 : 기본 셸 지정
    • -c 설명 : 사용자의 이름 등 부가적인 설명 지정
    • -D : 기본 값을 설정하거나 출력
    • -e 유효 기간 : EXPIRE 항목을 설정(YYYY-MM-DD)
    • -f 비활성 일수 : INACTIVE 항목 설정
    • -k 디렉터리 : 계정 생성 시 복사할 초기 파일이나 디렉터리를 설정해 놓은 디렉터리를 지정
    • -m : 홈디렉터리 생성

⌨ 옵션없이 계정 생성하기

sudo useradd user2

⌨ 옵션을 지정하여 사용자 계정 생성하기

sudo useradd -s /bin/sh -m -d /home/user3 -u 2000 -g 1000 -G 3 user 3

기본 로그인 셸을 본 셸로 지정하고 UID는 2000, GID는 1000, 2차 그룹은 3으로 지정하고 홈 디렉터리를 생성하고 홈 디렉터리를 /home/user3 으로 지정

⌨ user3 계정의 암호를 설정

sudo passwd user3

📌 /etc/skel 디렉터리의 역할

사용자 계정의 홈 디렉터리에 공통으로 배포해야 할 파일을 /etc/skel 디렉터리에 파일을 만들어 놓으면 사용자 계정 생성시에 자동으로 복사한다.

ls -a /etc/skel

📌 adduser 명령으로 사용자 계정 생성하기

  • 형식
adduser{옵션} 로그인 ID
  • 옵션
    • --uid UID : UID 지정
    • --gid GID : 기본 그룹의 GID 지정
    • --home DIR : 홈 디렉터리 지정
    • --shell 셸 : 기본 셸 지정
    • --gecos 설명 : 사용자의 이름 등 부가적인 설명을 지정

⌨ adduser 명령으로 옵션 없이 사용자 계정 생성하기

sudo adduser user4

⌨ UID를 2001로 지정하여 user5계정 생성

sudo adduser --uid 2001 user5

📖 사용자 계정 정보 수정하기 - usermod

UID, GID, 홈 디렉터리, 기본 셸, 설명, 로그인 ID등 게정과 관련된 모든 정보를 수정 가능하다.

패스워드 에이징 정보 중 INACTIVE와 EXPIRE 값 지정 가능

  • 형식
usermod [옵션] 로그인 ID 
  • 옵션
    • -u uid : UID 수정
    • -o : UID의 중복 허용
    • -g gid : 기본 그룹 수정
    • -G gid : 2차 그룹 수정
    • -s 셸 : 기본 셸 수정
    • C 설명 : 부가 설명 수정
    • -f inactive : 계정 비활성화 날짜 수정
    • -e expire : 계정 만료 날짜 수정
    • -l 새 로그인 이름 : 새 로그인 이름으로 계정 이름 바꿈

⌨ UID 변경 - -u옵션

sudo usermod -u 1003 user3 

user3의 UID를 1003으로 변경

⌨ 로그인 ID 변경 - -l 옵션

기존의 홈 디렉터리에 있던 파일들이 자동으로 옮겨지지는 않으므로 별도로 디렉터리를 생성하고 이동해야한다.

sudo usermod -d /home/user44 -l user44 user4
grep user44 /etc/passwd

홈디렉터리를 /home/user44 로 변경하고 로그인 ID를 user44로 변경

📌 사용자 계정 삭제하기 - userdel

  • 형식
userdel[옵션] 로그인 ID
  • 옵션
    • -r : 홈 디렉터리와 메일 디렉터리 삭제
    • -f : 사용자가 로그인 중이어도 강제로 삭제

⌨ 사용자 계정만 삭제하기

sudo userdel user44

사용자 계정이 삭제될 때 관련된 홈 디렉터리나 파일을 모두 삭제하는 것이 바람직 하다.

⌨ 사용자 계쩡과 홈 디렉터리 삭제하기 - -r 옵션

sudo userdel -r user3

📖 사용자 정보 관리 명령

📌 사용자 로그인 정보 확인하기 : who(중요)

현재 시스템을 사용하는 사용자의 정보를 출력한다.

  • 형식
who[옵션]
  • 옵션
    • -q : 사용자명만 출력
    • -H : 출력 항목이 제목도 함께 출력
    • -b : 마지막으로 재시작한 날짜와 시간 출력
    • -m : 현재 사용자 계저으이 정보 출력
    • -r : 현재 런레벨 출력

옵션 없이 사용하면 사용자 이름, 사용자가 접속한 단말기 번호, 로그읺나 시간, 외부 네트워크에서 접속했을 경우 외부 컴퓨터 이름이나 IP주소가 출력된다.

⌨ 각 항목의 제목을 출력 - who -H

⌨ 로그인한 사용자의 수와 게정 이름 출력 - who -q

⌨ 시스템이 마지막으로 부팅한 날짜와 시간 정보를 출력 - who -b

📌 w 명령

현재 시스템을 사용하는 사용자의 정보와 작업정보를 출력

who 명령에서 나온 출력 외에 활동에 대한 정보와 CPU 사용량, 시스템 로드 정보등이 추가로 출력된다.

📌 last (중요)

사용자의 이름과 로그인한 시간, 로그아웃한 시간, 터미널 번호나 IP 주소를 출력한다.

📌 소속 그룹 확인하기 - groups

사용자 계쩡이 속한 그룹을 출력한다.

현재 본인이 가진 권한을 알기 위해 확인해야 한다.

✍ 사용자를 지정하지 않으면?

현재 사용자 계정이 속한 그룹을 출력한다.

✍ 사용자 계정을 인수로 지정하면?

해당 사용자 계정이 속한 그룹 정보를 출력한다.

📌 passwd 명령 활용하기

사용자 계정의 암호를 수정한다,.

  • 형식
passwd [옵션] [사용자 계정]
  • 옵션
    • -l 사용자 계정 : 지정한 계정의 암호를 잠금
    • -u 사용자 계정 : 암호 잠금을 해제
    • -d 사용자 계정 : 지정한 계정의 암호를 삭제

✍ 암호 잠그기 - -l옵션

/etc/shadow 파일을 보면 암호의 맨 앞에 ! 가 있는데 이는 암호가 잠겼음을 의미한다.

sudo passwd -l user5

✍ 암호 잠금 해제 - -u 옵션

sudo passwd -u user5

✍ 암호 삭제 - -d 옵션

sudo passwd -d user5

📖 파일 및 디렉터리의 소유자와 소유 그룹 변경 - chown/chgrp

파일이나 디렉터리는 해당 파일이나 디렉터리를 생성한 사용자의 계정과 그룹이 소유자와 소유 그룹으로 설정된다

파일이나 디렉터리의 소유자를 변경할 필요가 있을 때 chonw(change owner)과 chgrp(change group) 명령 사용

📌 chown 명령

파일과 디렉터리의 소유자와 소유 그룹 변경

  • 형식
chown[옵션] 사용자 계정 파일명/디렉터리명
  • 옵션
    • -R : 서브 디렉터리의 소유자와 소유 그룹 변경

⌨ 변경 예시

# root 권한으로 hosts 파일의 소유자를 user5로 변경
sudo chown user5 hosts

# hosts 파일의 소유자를 다시 ubunt로, 그룹은 han01로 동시에 변경
sudo chown ubuntu:han01 hosts

⌨ 서브 디렉터리의 파일까지 한 번에 소유자나 소유그룹 변경 예시

sudo chown -R user5:han01 temp

temp 디렉터리와 그 안의 파일까지 한번에 소유자를 user5로 그룹을 han01로 변경

📌 chgrp 명령

파일과 디렉터리의 소유 그룹을 변경

  • 형식
chgrp[옵션] 그룹명 파일명/디렉터리명
  • 옵션
    • -R : 서브 디렉터리의 소유 그룹도 변경

⌨ temp디렉터리와 그 아래 파일까지 한번에 그룹을 user5로 변경

sudo chgrp -R user5 temp

0개의 댓글