
사용자 계정 정보가 저장된 기본 파일
초창기 유닉스에서는 암호도 파일에 저장했으나 해킹 위험이 증가하면서 암호는 /etc/shadow 파일에 별도로 저장
root 계정으로 수정이 가능하지만 되도록이면 명령으로 변경하는 것을 권장
파일 구조: 콜론(:) 으로 구분된 7개의 항목

로그인 ID: 32자까지 가능, 대소문자 + 숫자 + ‘_’ + ‘-’ 가 가능하지만, ‘-’으로 시작은 안 되고 숫자로만 구성해도 안 됨x: 초창기 유닉스에서 비밀번호를 저장하던 위치인데 지금은 무조건 ‘x’UID: 사용자를 구분하기 위한 번호GID: 그룹을 구분하기 위한 번호.설명 : 사용자의 실명이나 부서명 및 연락처 등 사용자에 대한 일반적인 정보가 기록되는 부분홈 디렉토리 : 사용자 계정에 할당된 홈 디렉터리의 절대 경로를 기록로그인 셸 : 사용자의 로그인 셸보안 문제 때문에 사용자 암호에 관한 정보를 별도로 관리하는 파일
/etc/passwd 는 누구나 읽을 수 있지만, /etc/shadow 파일의 경우 root 사용자만 읽고 쓸 수 있으며, shadow 그룹은 읽기만 가능

로그인 ID : 사용자 계정의 이름으로 /etc/passwd 파일의 로그인 ID암호(패스워드)최종 변경일MINMAXWARNINGINACTIVEEXPIREFlag
그룹의 정보가 저장된 파일
리눅스에서 사용자는 기본적으로 하나 이상의 그룹에 속함

그룹 이름XGID그룹 멤버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 디렉터리: 계정 생성 시 복사할 초기 파일이나 디렉터리를 설정해 놓은 디렉터리를 지정adduser [옵션] 로그인 ID
-uid UID: UID를 지정--gid GID: 기본 그룹의 GID를 지정--home DIR: 홈 디렉터리를 지정--shell 셸: 기본 셸을 지정--gecos 설명: 사용자의 이름 등 부가적인 설명을 지정groupadd [옵션] [그룹명]
-g gid : 그룹의 GID를 지정-o : GID의 중복을 허용addgroup [옵션] 그룹명
gidGID : 그룹의 GID를 지정groupmod [옵션] [그룹명]
-g gid : 그룹의 GID를 수정-o : GID의 중복을 허용-n 그룹명 : 그룹명을 다른 이름으로 변경groupdel [그룹 이름]
gpasswd [옵션] [그룹명]
-a 사용자 계정 : 사용자 계정을 그룹에 추가-d 사용자 계정 : 사용자 계정을 그룹에서 삭제-r : 그룹 암호를 삭제로그인할 때 사용한 계정의 UID를 의미하고 EUID는 현재 명령을 수행하는 주체의 UID를 의미who [옵션]-q: 사용자명만 출력-H: 출력 항목의 제목도 함께 출력-b: 마지막으로 재부팅한 날짜와 시간을 출력-m: 현재 사용자 계정의 정보를 출력-r: 현재 런레벨을 출력w [사용자명]
groups [계정명]
root 권한을 사용하는 방법
sudo 권한 설정
일반 사용자가 sudo 명령으로 root 권한을 실행하려면 특정 권한을 부여받아야 함
권한은 /etc/sudoers 파일에 설정해야 하는데 이 파일은 root 계정으로만 수정할 수 있음
/etc/sudoers 파일은 vi 도 편집할 수 있지만 visudo 명령을 사용해 수정할 것을 권장
- visudo 명령은 파일을 수정한 후 문법이 맞는지 확인하고 저장
# 계정 ALL=명령어절대경로 나열
developowl ALL=(ALL) ALL
developowl ALL=/usr/sbin/useradd
리눅스 설치 후 만든 계정에서 sudo 명령이 안 되면 이 파일을 수정하면 됨
passwd [옵션] [사용자 계정]-l 사용자 계정 : 지정한 계정의 암호를 잠금-u 사용자 계정 : 암호 잠금을 해제-d 사용자 계정 : 지정한 계정의 암호를 삭제chown [옵션] [사용자 계정] [파일명/디렉터리명]-R : 서브 디렉터리의 소유자와 소유 그룹도 변경chgrp [옵션] [사용자 계정] [파일명/디렉터리명]-R : 서브 디렉터리의 소유 그룹도 변경디스크 쿼터 라고 하는데, 디스크 쿼터를 설정하는 방법으로는 하드디스크에서 사용자가 사용할 수 있는 파일의 전체 용량을 설정하는 방법과 사용자가 사용할 수 있는 총 파일 수를 설정하는 방법이 있음하드 리미트는 사용자가 절대로 넘을 수 없는 최대치를 명시한 값이고,소프트 리미트는 일정 시간 내에는 넘을 수 있는 한계치를 설정한 값Application LayerTransport LayerNetwork LayerLink LayerPhysical Layer

IP 주소에서 네트워크 부분을 알려주는 역할을 하는 것이 netmask
하나의 네트워크를 다시 작은 네트워크(서브넷)로 분리할 때도 사용하므로 서브넷 마스크라고 부르기도 함
C 클래스 IP 주소의 경우 기본 넷마스크가 255.255.255.0

0.0.0.0 → 모든 컴퓨터
255.255.255.255 → 나 혼자만 사용하고 싶을 때
📌 VPC의 원리는 무엇일까?
- Virtual Private Cloud
- 물리적으로 떨어져 있는 자원들을 가상화 기술로 묶어서 마치 옆에 있는 서버처럼 관리하는 것
1. 왜 같은 VPC 내에서는 통신 비용이 발생하지 않을까?
- 보통 클라우드에서 비용이 발생하는 지점은 데이터가 Public Internet(공인 인터넷망) 으로 나갈 때이다.
- 하지만 같은 VPC 내의 통신은 다음과 같은 이유로 비용이 저렴하거나 무료이다.
자체 네트워크망 이용: 데이터가 외부 인터넷으로 나가지 않고, 클라우드 사업자가 미리 구축해둔 거대한 전용 광섬유 네트워크 안에서만 움직인다.게이트웨이 생략: 외부로 나갈 때 필요한 복잡한 검사나 공인 IP 변환 과정을 거치지 않으므로 사업자 입장에서는 추가 리소스 비용이 거의 들지 않음.서비스 유도: 사용자들이 보안과 성능이 좋은 VPC 내부망을 더 많이 쓰도록 유도하기 위한 정책적인 측면도 크다.- <주의>
- 같은 VPC라도 서로 다른 Region 간 통신이나, 가용 영역(AZ) 간 통신에는 데이터 전송료가 발생할 수 있다.
2. VPC 연결을 하면 통신 속도가 향상되나요?
- → 넵, 일반 인터넷망을 거치는 것보다 속도와 안정성 면에서 훨씬 유리합니다.
홉(Hop) 수의 감소: 일반 인터넷은 목적지까지 가기 위해 수많은 통신사 장비(Router)를 거치며 병목 현상이 발생한다. 반면 VPC 내부망은 최적화된 최단 경로로 연결된다.대역폭 보장: 외부 인터넷의 혼잡도에 영향을 받지 않는 고속 전용선을 사용하므로 Latency 가 매우 낮고 일정하다MTU(Maximum Transmission Unit): VPC 내부망은 일반 인터넷보다 더 큰 데이터 덩어리(Jumbo Frames)를 한 번에 보낼 수 있어 효율이 좋다3. Tunneling
- 물리적으로 떨어진 서버가 어떻게 같은 네트워크인 것처럼 행동할까?
- → Encapsulation 기술 덕분에
- A 서버가 보낸 데이터를 가상의 주소가 담긴 특수 봉투에 넣는다
- 이 봉투를 클라우드 사업자의 전용망을 통해 빛의 속도로 전송한다
- 받는 쪽에서 봉투를 까보면 마치 동일한 스위치에 연결된 것처럼 데이터가 나타난다.
정리
- VPC(Virtual Private Cloud)는 ‘클라우드 서비스 이용료’ 라는 패키지 안에 내부 통신 비용이 이미 포함되어 있거나 매우 저렴하게 책정이 되어 있기에 비용이 거의 발생하지 않는다고 한다.
- 실제로는 CSP 등이 자사들의 클라우드 시스템 운영을 위해 전세계에 깔아둔 통신망을 사용하므로 외부 통신사(IPC)에 망 사용료를 낼 필요가 없는 것.
- SDN(Software Defined Networking), 대역폭 보장으로 인해 병목 현상이 없다.
cat /etc/services | grep ftp/etc/services 파일에 저장된 포트 번호는 국제 표준으로 합의하여 사용하고 있는 것우분투에서는 NetworkManager 가 네트워킹 서비스를 제공
네트워크 관리자는 네트워크의 제어와 설정을 관리하는 daemon
네트워크 관리자를 이용해서 IP 주소 설정, 고정 라우터 설정, DNS 설정등을 수행할 수 있음
유닉스와 리눅스가 예전부터 제공하던 ifcfg 형식의 설정 파일도 지원
네트워크 관리와 관련된 도구
네트워크 관리자: 기본 네트워킹 데몬
nmcli 명령: 네트워크 관리자를 사용하는 명령 기반 도구
ip 명령: 네트워크를 설정하는 명령을 제공
GUI 에서는 [설정] - [네트워크]
GUI 에서는 nm-connection-editor
# Install
sudo apt install network-manager
# 확인te
systemctl status NetworkManager
# 부팅하자마자 활성화
systemctl enable NetworkManager
nmcli [옵션] 명령 [서브 명령]
옵션
-t : 실행 결과를 간단하게 출력-p : 사용자가 읽기 좋게 출력-v : nmcli의 버전을 출력-h : 도움말을 출력서브 명령
general {status | hostname} : 네트워크 관리자의 전체적인 상태를 출력하고 호스트 이름을 읽거나 변경할 수 있음networking {on | off | connectivity} : 네트워크를 시작 및 종료하고 연결 상태를 출력connection {show | up | down | modify | add | delete | reload | load} : 네트워크를 설정device {status | show} : 네트워크 장치의 상태를 출력nmcli generalnone : 네트워크에 연결되지 않음limited : 호스트가 네트워크에 연결되어 있지만 인터넷에 연결이 안 된 것full : 네트워크에 연결되어 있고 인터넷도 사용 가능unknown : 알 수 없음# 상태 확인
nmcli net con
# 비활성화
nmcli net off
# 활성화
nmcli net on
# 전체 상태 확인 (loopback - 나 자신)
nmcli dev status
# 특정 장치의 상태
nmcli dev show enp0s3
ip [옵션] 객체 [서브 명령]-V : 버전을 출력-s : 자세한 정보를 출력address [add | del | show | help] : 장치의 IP 주소를 관리route [add l del | help] : 라우팅 테이블을 관리link [set] : 네트워크 인터페이스를 활성화 또는 비활성화# 전체 장치에 대한 상세 정보 출력
ip addr show
# 특정 장치에 대한 상세 정보 출력
ip addr show enp0s8
# ip 주소 추가
sudo ip addr add 192.168.1.20/24 dev enp0s8
# 확인
ip addr show enp0s8
# ip 주소 삭제
sudo ip addr del 192.168.1.20/24 dev enp0s8