0. 초기 셋팅
다운 받은 우분투 zip을 압축해제 → ovf를 두번 click → vm name/ubuntu, path는 c:/VM/ubuntu —> import하면 된다.

| VM→Host | 가상머신에서 호스트로 |
| VM←Host | 호스트에서 가상머신으로 |
| VM1↔VM2 | 가상머신끼리 |
| VM→Net/LAN | 가상머신에서 외부 인터넷/랜으로 |
| VM←Net/LAN | 외부에서 가상머신으로 |
Host-only — 호스트와 가상머신만
호스트와 가상머신 사이, 그리고 가상머신끼리는 통신되지만 외부 인터넷으로는 못 나간다. 격리된 내부 네트워크를 만들 때 쓴다. 외부와 완전히 차단하고 싶은 실습에 적합하다.
Internal — 가상머신끼리만
가상머신끼리만 통신되고 호스트와도, 외부와도 안 된다. 가장 폐쇄적이다. 가상머신들만의 독립 네트워크를 꾸릴 때 쓴다.
Bridged — 실제 네트워크에 직접 연결
모든 방향이 +다. 가상머신이 호스트와 같은 네트워크에 직접 붙은 것처럼 동작한다. 가상머신이 공유기로부터 실제 IP를 받아 물리 PC와 대등한 장비가 된다. 외부에서 가상머신으로 직접 접속도 가능하다.
NAT — 나갈 순 있지만 들어오긴 제한
이게 앞서 실습에서 쓴 모드다. 특징을 보면 이렇다.
- VM→Host, VM→Net : +. 가상머신에서 호스트나 외부로 나가는 건 된다
- VM←Net : Port forward. 외부에서 가상머신으로 들어오려면 포트 포워딩 설정이 필요하다
- VM1↔VM2 : -. 기본 NAT에서는 가상머신끼리 통신이 안 된다
NAT는 가상머신이 호스트의 IP를 빌려 외부로 나간다. 나가는 건 자유롭지만, 외부에서 가상머신을 직접 찾아 들어오는 건 막혀 있다. 들어오려면 포트 포워딩으로 특정 포트를 열어줘야 한다.

| 인터넷은 되고 설정은 간단하게 | NAT |
| 가상머신을 실제 장비처럼 외부 노출 | Bridged |
| 외부 차단, 내부만 실습 | Host-only |
| 가상머신끼리만 완전 격리 | Internal |


1. 사용자 관리
사용자 account
사용자 계정을 이루는 요소다.
- User name : 사용자 이름. 로그인할 때 쓰는 이름이다.
- UID : 사용자 ID 번호. 시스템은 이름이 아니라 이 숫자로 사용자를 구분한다. 앞서 배운 대로 0은 root, 1000 이상이 일반 사용자다.
- Password : 비밀번호. 실제 값은 /etc/shadow에 암호화돼 저장된다.
- 인증 목적 : 계정은 누가 접속하는지 확인(인증)하는 데 쓰인다.
student : x : 1000 : 1000 : ...
이름 비번 UID GID
이름과 UID로 사용자를 식별하고, 비밀번호로 본인임을 인증한다.
Groups
그룹은 사용자들을 묶는 단위다.
- Group name : 그룹 이름
- GID : 그룹 ID 번호. 사용자의 UID처럼 그룹도 숫자로 구분한다.
- 파일 접근 제어 목적 : 그룹의 핵심 용도다. 여러 사용자에게 같은 파일 권한을 한 번에 주기 위해 쓴다.
- 사용자 집합 : 그룹은 사용자들의 모임이다.
- 하나 이상의 그룹 멤버가 될 수 있다 : 한 사용자가 여러 그룹에 동시에 속할 수 있다.
그룹의 존재 이유는 파일 접근 제어 때문이다. 예를 들어 개발팀 5명에게 같은 프로젝트 폴더 권한을 주고 싶다면, 각자에게 따로 권한을 줄 필요 없이 dev라는 그룹을 만들어 5명을 넣고 폴더에 그룹 권한을 주면 된다.
Primary Group과 Secondary Group
한 사용자가 여러 그룹에 속할 수 있는데, 그룹은 두 종류로 나뉜다. 이 구분이 중요하다.
Primary Group (주 그룹)
- 저장 위치 : /etc/passwd
- 사용자마다 하나만 있다
- 그 사용자가 파일을 만들 때 기본으로 붙는 그룹이다
/etc/passwd의 4번째 필드(GID)가 primary group을 가리킨다.
student : x : 1000 : 1000 : ...
↑
primary group의 GID
Secondary Group (보조 그룹)
- 저장 위치 : /etc/group
- 여러 개 가질 수 있다
- 추가로 소속돼 권한을 더 얻는 그룹이다
/etc/group 파일에 어떤 사용자가 어느 보조 그룹에 속하는지 기록된다.
관련 설정 파일
- /etc/passwd => 사용자 계정 기본 정보
- /etc/group => 그룹 정보와 멤버
- /etc/shadow => 암호화된 비밀번호와 만료 정보
| 작업 유형 | 관련 명령어 | 기본 option 설정 파일 |
| 사용자 생성 | useradd | /etc/default/useradd, /etc/login.defs |
| 수정 | usermod | |
| 삭제 | userdel, deluser | |
| 그룹 추가 | groupadd | |
| 수정 | groupmod | |
| 삭제 | groupdel | |
| 암호 변경 | passwd | |
| aging | chage |
2-1. 사용자 추가 (useradd 옵션)
useradd [-u uid][-g gid][-G gid[,gid,..]][-d dir][-m][-s shell][-c comment] loginname
| -u uid | UID 지정 |
| -g gid | primary group 지정 |
| -G gid,... | secondary group 지정 (여러 개 가능) |
| -d dir | 홈 디렉터리 경로 지정 |
| -m | 홈 디렉터리를 실제로 생성 |
| -s shell | 로그인 셸 지정 |
| -c comment | 설명(실명 등) 지정 |
| loginname | 만들 사용자 이름 |
user2 : x : 1000 : 1000 : : /home/user1 : /bin/bash
1 2 3 4 5 6 7
| 1 로그인 ID | user2 | 사용자 이름 |
| 2 x | x | 비밀번호는 shadow에 |
| 3 UID | 1000 | -u 1000으로 지정 |
| 4 GID | 1000 | primary group |
| 5 설명 | (빈칸) | -c 안 줘서 비어 있음 |
| 6 홈 디렉터리 | /home/user1 | -d로 지정 |
| 7 로그인 셸 | /bin/bash | -s로 지정 |
useradd -u 2001 -g 2000 -c user -d /home/class1 -m -s /bin/bash class2



예를 들어 기본값 umask 022라면
디렉토리: 777 - 022 = 755 → drwxr-xr-x
파일: 666 - 022 = 644 → rw-r--r--
umask는 권한을 제한(제거) 한다. umask를 설정 한 다음 새로 만드는 파일, 디렉토리에 적용된다.

| groups / id | 내가 속한 그룹 확인 |
| newgrp | 주 그룹 임시 전환 (이번 세션만) |
| usermod -g | 주 그룹 영구 변경 |
| usermod -aG | 보조 그룹 추가 |
docker group에 사용자 추가하기
==========root===========
root@rocky10:~# id -a student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
root@rocky10:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@rocky10:~# usermod -aG docker student
root@rocky10:~# id -a student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel),980(docker)
root@rocky10:~#
========student=========
student@rocky10:~$ id
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
student@rocky10:~$ newgrp docker
student@rocky10:~$ id
uid=1000(student) gid=980(docker) groups=980(docker),10(wheel),1000(student) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
student@rocky10:~$ docker ps


2-2. 사용자 삭제 (userdel 옵션)
userdel [-r] 사용자명
| userdel kim | 계정 정보만 | 홈 디렉토리 /home/kim, 메일함이 그대로 남음 |
| userdel -r kim | 계정 정보 + 홈 디렉토리 + 메일 스풀 | 깔끔하게 정리됨 |
2-3. 암호 관리
chage는 비밀번호의 유효 기간과 만료를 관리하는 명령이다. 설정은 /etc/shadow에 저장된다.
Last change date(마지막 변경일)를 기준으로 각 옵션이 기간을 정한다.
옵션 정리
| -d | 마지막 변경일 | 기준점 |
| -m | 최소 사용 기간 | 변경 후 며칠간 못 바꿈 |
| -M | 최대 사용 기간 | 며칠 후 변경 강제 |
| -W | 만료 전 경고 일수 | 만료 며칠 전 알림 |
| -I | 만료 후 유예 기간 | 만료 후 며칠간 기회 |
| -E | 계정 만료일 | 계정 자체 수명 |
비밀번호 변경(-d)
→ 최소 기간(-m) 동안은 못 바꿈
→ 이후 자유롭게 변경 가능
→ 만료 임박, 경고 시작(-W)
→ 최대 기간(-M) 도달, 만료
→ 유예 기간(-I) 동안 마지막 기회
→ 완전 잠김
그리고 이와 별개로 -E 날짜가 되면 계정 자체 만료

chage -l로 현재 상태를 먼저 확인하는 습관이 좋다.

2-4. 그 외 사용자 관리 tool 및 파일

/etc/issue — 로그인 전 메시지
로그인 프롬프트 앞에 표시되는 메시지다. 이스케이프 문자로 시스템 정보를 넣을 수 있다.
- \r : 커널 릴리스
- \m : 머신 타입
- \o : 도메인 이름
/etc/motd — 로그인 후 메시지
motd(message of the day)는 로그인 성공 후 표시되는 안내문이다. 시스템 점검 공지 같은 전체 공지에 쓴다.

'{Bootcamp} > KT Cloud Tech up 클라우드 인프라' 카테고리의 다른 글
| [KT Cloud] 쉘 프로그래밍 (2) (0) | 2026.08.28 |
|---|---|
| [KT Cloud] 쉘 프로그래밍 (1) (0) | 2026.08.27 |
| [KT Cloud] 리눅스 기본 및 실습 정리 (4) (0) | 2026.08.26 |
| [KT Cloud] 리눅스 기본 및 실습 정리 (3) (0) | 2026.08.25 |
| [KT Cloud] 리눅스 기본 및 실습 정리 (2) (0) | 2026.08.24 |