cmod.ify
[LINUX] 사용자 관리 및 관련 파일 정리 본문
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가 달라지는 경우
- su 명령: 다른 계정으로 전환 시, 로그인 계정은 UID가 되고 전환된 계정은 EUID가 됨.
- 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. 소유권 변경 실습 결과 확인
사용자 관리 실습을 위한 파일 생성 및 권한 변경 흐름임.
- 테스트 환경 구축: mkdir로 디렉토리 생성 후 /etc/의 설정 파일들을 복사함.
- 현재 상태 확인: ls -l 명령으로 소유자(hapi)와 그룹(hapi) 확인.
- 소유자 변경 수행: sudo chown user1 hosts 실행 후 소유자가 user1으로 바뀐 것을 확인함.
- 그룹 변경 수행: 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 (옵션이 올바르게 적용되었는지 확인).
'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 |