cmod.ify

[LINUX] 사용자 관리 및 관련 파일 정리 본문

BASIC/LINUX

[LINUX] 사용자 관리 및 관련 파일 정리

modifyC 2026. 1. 13. 18:30
728x90
반응형

1. 사용자 계정 정보 관리 파일

리눅스에서 사용자 정보는 보안을 위해 여러 파일에 나누어 관리됨. 과거에는 /etc/passwd에 암호까지 저장했으나, 현재는 보안상 /etc/shadow에 별도 저장함.

/etc/passwd: 사용자 기본 정보

모든 사용자가 읽을 수 있는 파일로, 계정의 기본 속성을 정의함.

  • 구조: 로그인ID:x:UID:GID:설명:홈디렉토리:로그인쉘
  • 주요 항목:
    • 로그인 ID: 최대 32자. 영문 소문자, 숫자, _, - 조합 가능 (단, - 시작이나 숫자로만 구성은 불가).
    • x: 과거 암호 저장 위치. 현재는 암호가 /etc/shadow에 있음을 의미함.
    • UID (User ID): 0(root), 1~999(시스템 계정), 1000 이상(일반 사용자).
    • GID (Group ID): 사용자의 기본 그룹 번호. /etc/group 파일과 연계됨.

/etc/shadow: 암호 및 에이징 정보

root 계정만 접근 가능한 파일로, 암호화된 비밀번호와 계정 만료 설정을 담고 있음.

  • 구조: 로그인ID:암호:최종변경일:최소사용기간:최대사용기간:경고기간:비활성기간:만료일:예약항목
  • 주요 항목:
    • 암호: SHA512 등으로 일방향 암호화됨. !나 *는 암호가 설정되지 않았음을 의미함.
    • 날짜 기준: 1970년 1월 1일부터 경과한 일수(Epoch time)로 표시함.

2. 기본 설정 및 그룹 관리

/etc/login.defs

계정 생성 시 적용되는 시스템 기본값을 정의함.

  • MAIL_DIR: 메일 저장 위치.
  • PASS_MAX_DAYS / MIN_DAYS: 패스워드 에이징 기본값.
  • UID_MIN / MAX: 일반 사용자 UID 범위 (보통 1000 ~ 60000).
  • UMASK: 파일/디렉토리 생성 시 기본 권한 설정.

/etc/group

시스템의 그룹 정보를 저장함.

  • 구조: 그룹이름:x:GID:사용자리스트
  • 특징: 사용자는 여러 그룹에 속할 수 있으며, 리스트에는 해당 그룹을 2차 그룹으로 사용하는 사용자들이 명시됨.

3. 사용자 계정 생성 및 수정 명령어

계정 생성: useradd vs adduser

  • useradd: 순수 명령어로 옵션을 직접 지정해야 함. (-m 옵션 없으면 홈 디렉토리 미생성)
    • -u(UID), -g(기본그룹), -G(추가그룹), -d(홈디렉토리), -s(쉘)
  • adduser: 대화식 실행 도구. 홈 디렉토리 생성 및 비밀번호 설정을 자동으로 유도하여 편리함.

기본값 확인 및 수정

  • useradd -D: 현재 설정된 계정 생성 기본값 출력.
  • sudo useradd -D -e 2026-12-31: 만료일 기본값 변경 (파일 직접 수정보다 권장됨).

계정 수정: usermod

이미 생성된 계정의 정보를 변경할 때 사용함.

  • sudo usermod -d /home/newdir user3: 홈 디렉토리 경로 수정.
  • sudo usermod -l newname oldname: 계정 이름 변경.

4. 패스워드 에이징(Aging) 관리

비밀번호의 유효 기간을 설정하여 보안을 강화함. passwd나 chage 명령어를 사용함.

항목 passwd 옵션 chage 옵션 의미
MIN -n -m 암호 변경 후 재변경까지 최소 기간
MAX -x -M 암호 사용 가능 최대 기간
WARN -w -W 만료 전 경고 메시지 출력 기간
INACTIVE (usermod -f) -I 만료 후 계정 잠금까지 유예 기간
EXPIRE (usermod -e) -E 계정 자체가 만료되는 특정 날짜

5. /etc/skel 디렉토리

새로운 사용자를 생성할 때 홈 디렉토리에 기본적으로 복사될 파일들을 보관함. .bashrc, .profile 등 사용자 환경 설정 파일의 템플릿 역할을 수행함.


6. 그룹 관리 명령어

사용자 계정은 효율적인 권한 관리를 위해 반드시 하나 이상의 그룹에 소속되어야 함.

그룹 생성: groupadd / addgroup

  • groupadd [옵션] [그룹명]
    • -g GID: 특정 그룹 ID를 지정하여 생성.
    • -o: GID 중복을 허용함.
  • addgroup [옵션] [그룹명]
    • --gid GID: 그룹의 GID를 지정함.

그룹 정보 수정 및 삭제

  • groupmod [옵션] [그룹명]
    • -g GID: 그룹의 GID를 수정함.
    • -n 새그룹명: 기존 그룹 이름을 변경함.
  • groupdel [그룹명]
    • 시스템에서 그룹을 삭제함. (단, 해당 그룹을 기본 그룹으로 사용하는 유저가 있으면 삭제 불가)

그룹 암호 및 멤버 관리 (gpasswd)

  • gpasswd [옵션] [그룹명]
    • -a 사용자: 사용자를 그룹의 멤버로 추가함.
    • -d 사용자: 사용자를 그룹 멤버에서 삭제함.
    • -r: 설정된 그룹 암호를 제거함.

실습 예시

sudo groupadd gtest1
sudo gpasswd -a test1 gtest1  # test1 유저를 gtest1 그룹에 추가
grep gtest1 /etc/group        # 그룹 소속 인원 확인

7. 사용자 정보 및 권한 관리

리눅스 시스템은 프로세스를 실행할 때 실제 로그인한 사용자와 현재 권한을 행사하는 사용자를 구분함.

UID와 EUID

  • UID (Real UID): 실제 사용자 ID (RUID). 처음 로그인했을 때의 계정 ID임.
  • EUID (Effective UID): 유효 사용자 ID. 현재 명령을 수행하는 실제 주체의 권한을 의미함.
  • ID가 달라지는 경우
    1. su 명령: 다른 계정으로 전환 시, 로그인 계정은 UID가 되고 전환된 계정은 EUID가 됨.
    2. SetUID 설정: 실행 파일에 SetUID가 걸려 있으면 실행 동안 파일 소유자의 권한(EUID)을 가짐.

8. 사용자 확인 명령어

시스템에 접속 중인 사용자 정보를 확인하는 다양한 도구들임.

로그인 정보 확인

  • who [옵션]: 현재 접속 중인 모든 사용자 정보 출력.
    • -q: 사용자 수와 ID만 간략히 출력.
    • -H: 출력 항목의 제목(Header) 표시.
    • -b: 시스템의 마지막 재부팅 시간 확인.
    • -m: 현재 내 세션 정보만 확인.
  • w [사용자명]: 현재 접속자의 정보와 함께 어떤 작업을 수행 중인지 상세히 출력. (ID 생략 시 전체 출력)
  • last: 로그인/로그아웃 이력, 터미널 정보, 시스템 재부팅 기록을 역순으로 출력.

신원 및 소속 그룹 확인

  • whoami / who am i / id:
    • whoami: 현재 유효 사용자(EUID)의 이름 출력.
    • who am i: 처음 로그인한 사용자(UID)의 세션 정보 출력.
    • id: 현재 사용자의 UID, GID, 소속된 모든 그룹 정보 출력.
  • groups [계정명]: 해당 사용자가 현재 어느 그룹들에 소속되어 있는지 명단 출력.

9. Root 권한 사용 및 관리

시스템 관리 작업을 위해 강력한 권한이 필요할 때 사용하는 방법임.

Root 권한 획득 방법

  • su (Substitute User): root 계정으로 완전히 전환함. 모든 시스템 권한을 가지게 되어 보안상 위험하므로 비권장됨.
  • sudo (Substitue User Do): 일반 사용자에게 특정 명령에 대해서만 root 권한을 일시적으로 부여함. 관리 효율과 보안 측면에서 권장됨.

sudo 권한 설정 (/etc/sudoers)

  • 일반 사용자가 sudo를 사용하려면 이 파일에 등록되어야 함.
  • 편집 방법: vi로 직접 수정 가능하나, 문법 체크 기능이 있는 visudo 명령 사용을 강력히 권장함.
  • 설정 형식: [계정명] [호스트]=[(권한계정)] [명령어절대경로]
    • 전체 권한 부여: hapi ALL=(ALL) ALL
    • 부분 권한 부여: adma ALL=/usr/sbin/useradd, /usr/sbin/userdel
  • 리눅스 설치 직후 sudo 명령이 작동하지 않을 경우, 이 파일에 해당 계정을 추가하여 해결함.

10. passwd 명령 활용

사용자 암호 수정 및 계정 상태를 관리함.

  • 형식: passwd [옵션] [사용자 계정]
  • 주요 옵션:
    • -l (lock): 계정 암호를 잠금. 로그인 및 sudo 사용이 차단됨 (이미 로그인된 세션은 유지됨).
    • -u (unlock): 잠긴 암호를 해제함.
    • -d (delete): 계정의 암호를 삭제하여 암호 없이 로그인 가능하게 함.

11. 파일 소유권 및 그룹 변경

파일이나 디렉토리에 접근할 수 있는 주체를 변경하는 명령어임.

chown (Change Owner)

  • 기능: 파일 및 디렉토리의 소유자와 소유 그룹을 변경함.
  • 옵션 -R: 하위 디렉토리와 파일까지 모두 재귀적으로 변경함.
  • 실습 예시:
  • # hosts 파일의 소유자를 user1으로 변경
    sudo chown user1 hosts
    
    # 소유자와 그룹을 동시에 변경 (사용자:그룹 형식)
    sudo chown user1:user1 hosts
    

chgrp (Change Group)

  • 기능: 파일 및 디렉토리의 소유 그룹만 변경함.
  • 옵션 -R: 하위 항목의 소유 그룹을 일괄 변경함.
  • 실습 예시:
    # temp 디렉토리의 소유 그룹을 user1으로 변경
    sudo chgrp user1 temp
    

12. 소유권 변경 실습 결과 확인

사용자 관리 실습을 위한 파일 생성 및 권한 변경 흐름임.

  1. 테스트 환경 구축: mkdir로 디렉토리 생성 후 /etc/의 설정 파일들을 복사함.
  2. 현재 상태 확인: ls -l 명령으로 소유자(hapi)와 그룹(hapi) 확인.
  3. 소유자 변경 수행: sudo chown user1 hosts 실행 후 소유자가 user1으로 바뀐 것을 확인함.
  4. 그룹 변경 수행: sudo chgrp user1 temp 실행 후 그룹 소유권이 user1으로 바뀐 것을 확인함.
hapi@basic:~$ mkdir linux_ex
hapi@basic:~$ cd linux_ex/
hapi@basic:~/linux_ex$ mkdir usermanagement
hapi@basic:~/linux_ex$ cd usermanagement/
hapi@basic:~/linux_ex/usermanagement$ mkdir temp
hapi@basic:~/linux_ex/usermanagement$ cp /etc/hosts .
hapi@basic:~/linux_ex/usermanagement$ cp /etc/services temp
hapi@basic:~/linux_ex/usermanagement$ ls
hosts  temp
hapi@basic:~/linux_ex/usermanagement$ ls -l
total 8
-rw-r--r-- 1 hapi hapi  220 Jan 13 06:02 hosts
drwxrwxr-x 2 hapi hapi 4096 Jan 13 06:02 temp
hapi@basic:~/linux_ex/usermanagement$ sudo chown user1 hosts
[sudo] password for hapi:
hapi@basic:~/linux_ex/usermanagement$ ls -l
total 8
-rw-r--r-- 1 user1 hapi  220 Jan 13 06:02 hosts
drwxrwxr-x 2 hapi  hapi 4096 Jan 13 06:02 temp

 


13. 디스크 사용량 제한 (Quota) 설정

리눅스에서는 특정 사용자나 그룹이 디스크 전체를 점유하지 못하도록 사용량(용량)과 파일 개수를 제한할 수 있음.

주요 개념

  • 하드 리미트 (Hard Limit): 사용자가 절대로 초과할 수 없는 최대치. 이 용량에 도달하면 더 이상 파일 생성이 불가함.
  • 소프트 리미트 (Soft Limit): 경고 수준의 한계치. 설정된 용량을 넘길 수 있으나 유예 기간(Grace Period)이 적용됨.
  • 유예 기간 (Grace Period): 소프트 리미트 초과 시 하드 리미트가 적용되기 전까지 파일을 정리할 수 있도록 부여된 시간. 기간이 지나면 소프트 리미트가 하드 리미트처럼 작동하여 추가 쓰기가 금지됨.

설정 절차 및 명령어

1) 패키지 설치 및 사용자 생성

  • 쿼터 관리 도구 설치: sudo apt install quota
  • 실습용 사용자 생성: sudo useradd -m -d /home/qtest1 qtest1

2) 쿼터 속성 설정 (/etc/fstab)

  • 해당 파일 시스템에 쿼터 기능을 활성화하기 위해 옵션 추가.
  • 형식: /etc/fstab 파일의 해당 마운트 지점 옵션 부분에 usrquota, grpquota 추가.
  • 예시: UUID=... /home ext4 defaults,usrquota,grpquota 0 2

3) 쿼터 속성 적용 및 활성화

  • 변경 사항 반영: sudo mount -o remount /home (시스템 재부팅 없이 변경된 옵션 적용).
  • 데몬 재설정: sudo systemctl daemon-reload.
  • 쿼터 데이터베이스 생성: sudo quotacheck -ugm /home.
    • -u: 사용자 쿼터 파일 생성.
    • -g: 그룹 쿼터 파일 생성.
  • 쿼터 시작: sudo quotaon /home.

4) 사용자별 제한 값 설정 (edquota)

  • 명령어: sudo edquota -u qtest1
  • 편집기(vi 등)가 실행되면 블록 단위(용량)와 아이노드(파일 개수)의 소프트/하드 리미트를 수정함.

5) 상태 확인 및 점검

  • 전체 사용자 쿼터 확인: sudo repquota -a
  • 개별 사용자 쿼터 확인: quota -u qtest1
  • 마운트 옵션 확인: mount | grep quota (옵션이 올바르게 적용되었는지 확인).
728x90
반응형

'BASIC > LINUX' 카테고리의 다른 글

[LINUX] Virtual Box 전용 네트워크 구성  (0) 2026.01.14
[LINUX] 네트워크  (1) 2026.01.13
[LINUX] 디스크 관리  (1) 2026.01.12
[LINUX] 부팅 시스템  (0) 2026.01.09
[LINUX] 소프트웨어  (0) 2026.01.09