권한 및 그룹 삭제
소유권과 관련된 명령어
- chown: 파일이나 디렉터리의 소유자와 그룹을 변경하는데 사용
-
형식
chown [옵션][:그룹명] 파일명 : 그룹명 앞에 (:)를 붙여 사용자 소유권과 그룹 소유권을 분리
-
옵션
‘-R’: 하위 디렉토리 포함
-
- chgrp: 파일이나 디렉터리의 그룹 소유권을 변경하는데 사용
-
옵션
‘chgrp -h’: 심볼릭 링크 파일 그룹 소유권 변경
-
허가권과 관련된 명령어
-
chmod: 파일의 퍼미션을 변경하는데 사용
-소유자: u, 그룹: g, 기타 사용자(others 혹은 public): o, 모든 사용자: a, 덮어쓰기: =
-t: Stickybit 설정 s(소유자 권한): SetUID, SetGID 설정
-
umask: 새로운 파일이나 디렉터리를 생성할 때 기본적으로 설정되는 권한을 제한
-
옵션
‘-S’: umask값을 u,g,o와 w(2),r(4),x(1)와 같은 문자로 나타냄
- r: 읽기 파일의 내용 확인
- w: 파일의 내용을 수정하거나 새로운 내용 작성
- x: 파일을 실행할 수 있는 권한으로 프로그램이나 스크립트에 해당하는 파일에만 필요
-
기본 권한
파일(666), 디렉터리(777)
Ex)umask가 0022일 경우 생성되는 파일의 허가권 666-022=644 =>rw(6)-r(4)-r(4)
-
특수 권한
- setUID(4): 사용자가 사용할 때만 소유자 권한으로 파일을 실행
- 실행 파일에 부여, 일시적으로 루트 권한이 필요한 경우 사용
- 보안 매우 취약
- setGID(2): 사용자가 사용할 때만 그룹 권한으로 파일 실행
- 파일 생성 시 자동으로 그룹 소유권이 디렉터리로 부여되도록 설정
- wall이라는 키워드가 쓰이면 거의 이거
- 보안 매우 취약
- Sticky Bit(1): 그룹에 속한 사용자들이 디렉터리에서 파일 생성은 자유로우나 삭제는 본인이 생성한 파일만 가능(주로 디렉터리에 부여)
- 권한 기호 ‘t’, /tmp 폴더는 sticky-bit가 설정되어 있음
디스크
디스크 쿼터
파일 시스템마다 사용자/그룹을 생성할 수 있는 파일 용량/개수 제한
- edquota: 편집기를 사용하여 그룹에 디스크 사용량 할당
- ex) edquota -p bookmark ihd
- 옵션 -p: 디스크 할당량 설정을 다른 사용자와 동일하게 설정(bookmark와 ihd와 동일하게)
- setquota: 명령행에서 직접 디스크 사용량 할당(쿼터 설정)
- ex) setquota -u ihd 20M 30M 0 0/home
- setquota -u 계정명 [블록 soft][블록 hard][inode soft][inode hard]
- reequota(report) : 특정 파일 시스템(/home)에서 모든 사용자의 쿼터 정보 확인
- xfs_quota : CentOs에서 디스크 사용량 제한을 설정하고 관리(주로-x -c옵션)
- quota : 디스크 사용량 제한과 관리 및 현재 사용량을 확인하는 명령어,특정 사용자의 쿼터 정보를 확인
- userquota: 사용자 할당량 사용
- uquota: xfs파일에 적용
- xfs_repair: 파일 시스템에서 점검 및 복구를 수행하는 전용 명령
쿼터를 설정하는 과정
quotacheck → edquota → quotaon → repquota
RAID
- RAID-0: 데이터를 여러 디스크에 스트라이핑 방식으로 저장하여 읽기/쓰기 속도 극대화,백업용이 없음
- RAID-1: 미러링 방식, 반반 나눠서 절반은 완전히 복제로 사용
- RAID-5: 패리티 1개,n-1,문제가 생기면 패리티를 이용해 복구 가능
- RAID-6: 패리티 2개,n-2,문제가 생기면 패리티를 이용해 복구 가능
LVM(Logical Volume Mangager)
- 여러 개의 하드디스크를 합쳐서 사용하는 기술
- 파티션의 크기를 줄이거나 늘릴 수 있음
- 서버 환경에서 매우 유용
구성할 때 생성 순서
PV->VG->LV
- PV: 물리적 디스크를 LVM에 사용할 준비를 함
- VG: 여러 PV를 묶어 저장 공간 풀을 만듦
- PE(순서에 들어가지 않음): VG 내부의 작은 블록 단위
- LV: 사용자가 필요한 만큼 할당해서 생성되는 공간으로 물리적 디스크에서 분할하여 사용하는 파티션
관련 용어
- Striping: 연속된 데이터를 여러 개의 디스크에 라운드 로빈 방식으로 기록하는 기술
- RAID-0에서 사용. 여러 개의 디스크를 합쳐서 하나의 디스크처럼 사용
- Mirroring: RAID-1에서 사용, 디스크 이중화
- Parity: RAID-5,6에서 사용, 데이터 복구
- ECC: RAID-3
- 파티션 옵션
- n : 새로운 파티션 생성
- w : 파티션 정보 저장하고 종료
- q : 저장 안하고 종료
- x : 전문가 모드 진입
파일 시스템의 관리
파일 시스템 개요 및 종류
- ext2: 255까지 파일이름, 2GB 단일 파일, 4TB 디스크 (저널링 기능 없음)
- ext3: ext2확장, 저널링 기능(-j옵션), ACL
- nfs: 네트워크 파일 시스템, 파일 공유 및 파일 서버. 리눅스나 유닉스 시스템끼리 파일 공유할 때 사용
- SMB: 파일 및 프린터 공유와 관련된 프로토콜, 주로 윈도우에서 사용
- cifs: SMB의 확장,윈도우 시스템에 공유된 폴더 마운트
- NTFS: 윈도우에서 사용하는 파일 시스템, 대용량 파일 저장 가능
- udf: DVD 파일 시스템, 배포판 리눅스에서 iso9660으로 지정해도 마운트 할 수 있는 파일 시스템
- JFS: IBM사가 개발한 저널링 파일 시스템
대표적 저널링 파일 시스템: FJS,XFS,ReiserFS,ext3
관련 명령어
- mount: 장치와 디렉터리 연결
-
출력 순서
파일시스템->마운트 포인트->타입->옵션->덤프->패스
-
- umount: 연결된 장치, 디렉터리 연결 해제
- floppy, usb메모리 등의 보조기억장치 사용 후에는 반드시 이 명령을 사용한 뒤에 제거해야 데이터 손실이 없음
- eject: 이동식 보조기억장치 제거(꺼낼 때 unmount 해야함)
- fdisk: 파티션 생성,삭제,타입결정
- 옵션
- -l : 현재 디스크의 파티션 테이블 정보를 나타냄
- -v : fdisk 버전을 나타냄
- -t : 파일 시스템 유형 결정(Swap:82)
- -s : 파티션 크기
- 옵션
- mkfs: 마운트,파일시스템 정보 확인,파티션 한 하드디스크 포맷
- mke2fs: 파일시스템 생성(포맷), ext2/ext3/ext4
- fsck: 파일 시스템 검사, 주로 ext 파일 시스템에 사용
- s: 동작을 시리얼 화, 대화형 모드로 파일 시스템 점검 시 유용
- /local+found: 디렉터리에서 작업수행
- /etc/fstab에서 ‘6번째’ 자리값과 연관
- e2fsck: 파일 시스템 점검 및 복구하는 명령 (ext2,ext3,ext4),fsck의 확장 명령어
- 옵션
- -b : 파일 시스템의 블록 사이즈를 정함
- -R : stride는 RAID 장치에 적합한 데이터 구조를 만듦
- 옵션
- du: 디렉터리 및 파일의 전체 디스크 사용량을 확인,단일 객체
- 옵션
- -s : 파일들의 전체 크기를 합한 값
- -h : 용량 단위로 표시
- 옵션
- df: 마운트 된 디스크 용량 정보를 보여주는 명령, 남은 용량 확인할 때 사용(분할 된 파티션 별로 사용량 확인), 시스템 전체의 디스크 공간 확인,파일시스템 쭉 나와있는 그림
- 옵션
- =T : 해당 파티션의 파일 시스템 유형 확인
- -h: 디스크 용량 단위를 사람이 읽기 쉽게 표기
- -a: 0 블록의 파일 시스템을 포함하여 모든 파일 시스템을 나타냄
- 옵션
장치 명령어
- lsblk : 블록 장치에 대한 정보를 트리 형식으로 보여줌, 스토리지 디바이스 정보 출력
- blkid : 블록 장치에 있는 파일 시스템의 UUID와 파일 시스템 유형을 확인
- UUID : UUID(고유 식별자)를 생성하는 데 사용, 파티션 고유 번호
- mke2fs -t 옵션: /dev/sdb1 파티션을 ext4 파일 시스템으로 포맷, -j 옵션은 자동으로 ext3
- ls : 현재 디렉터리에 있는 파일 및 디렉터리의 목록을 보여주는 명령어로 소유자 그룹이 표시
etc 관련
- etc/fstab: 파일 시스템 테이블, 부팅 시 어떤 파일 시스템들을 어떤 디렉터리에 마운트 해야 하는지 정의
- 첫 번째 필드: 장치명=/dev=UUID, 라벨명, 네트워크 주소, 파일명
- 두 번째 필드: 마운트 포인트
- 네 번째 필드: 옵션 정보
- etc/mtab: 현재 마운트 된 파일 시스템에 관한 정보
- etc/mounts: 파일 시스템이 실제로 마운트되어 있는 지 여부와 관계없이 보여줌
셸 개념 및 종류
Bourne shell 계열
- 본셸: /bin/sh, 벨 연구소 스티븐 본 개발
- 콘셀: /bin/ksh, AT&T 데이비드 콘
- 배쉬셀: /bin/bash, 본셀 기반으로 GNU 프로젝트에 의해 개발
- 지셸: /bin/zsh
- 가장 먼저 등장함
C shell 계열
- C셸: /bin/csh, 버클리 대학 빌 조이 개발, C언어 기반
- tsch셸: /bin/tcsh, 확장 C셸
Bash
GNU프로젝트의 일환으로 만들어진 셀,히스토리 기능,alias기능,작업 제어 등 여러 기능 제공하지만 1989년에 개발
Dash
데비안 시스템에서 sh의 대체품으로 사용, 경량화 셸로 bash보다는 빠르지만 csh처럼 복잡한 기능 제공 안함,POSIX 표준을 준수하여 작은 크기로 만들어짐
csh
히스토리 기능, Alias 기능, 작업 제어 등과 같은 유용한 기능이 포함된 셸로 1978년에 빌 조이가 개발
등장 시기
sh(1977) - csh(1978) - tcsh(1981) - ksh(1983) - bash(1989) - zsh(1990) - dash(1997)
Shell 확인
- /etc/shells: 시스템에서 사용 가능한 셀의 목록 포함
- /etc/passwd: 시스템에 등록된 각 사용자의 계정 정보를 저장,시스템 환경설정 파일 사용자 목록 저장,로그인 시에 부여되는 셸 정보를 확인하려고 할 때 사용
- chsh -l
- 시스템에서 사용 가능한 셸 목록을 확인하는 명령어
- /etc/shells의 파일 안의 지정된 셸들을 나열
- ‘echo $SHELL’: 시스템에 로그인 후 사용 중인 셸 확인
- 큰 따옴표는 있으나 마나
- 작은 따옴표는 작은따옴표 안의 문자가 그대로 출력 Ex) echo ‘$user’ => $user
- USER와 같이 환경변수는 앞에 $붙이면 사용자 이름(계정)이 출력
- ‘cat /etc/shells’: 현재 시스템에서 사용할 수 있는 셸들을 확인
shell 변경 명령
- chsh: 사용자의 로그인 셀을 변경하는 데 사용
- 옵션
- -l : 사용 가능한 쉘 출력
- -u : help 설명 제공
- -s : 사용자의 기본 셸을 변경
- -c: comment 제공
- 옵션
- usermod: 계정자의 정보를 변경할 때 사용
- 관리자가 셸 변경 후 다음 변경 전까지 해당 셸을 반영구적으로 사용
- ‘usermod -s /bin/bash ihd’: 지정된 계정자의 설정을 변경하기 위한 명령어
그 밖에 명령어
- “환경 변수” = 전역 변수
- env: 현재 셸 세션의 환경 변수를 출력하거나 , 변경된 환경에서 명령을 실행하는데 사용, 글로벌 환경 변수 조회
- printenv: 현재 셸 환경의 환경 변수들을 출력
- “쉘 변수” = 지역 변수
- set :옵션이나 인자 없이 사용하면 선언된 변수 및 함수 출력, 로컬 환경 변수 조회
- 옵션
- Set –o : 쉘의 옵션 활성화
- Set +o : 쉘의 옵션 비활성화
- 옵션
- unset: 지정된 환경 변수나 함수를 제거하는데 사용
- set :옵션이나 인자 없이 사용하면 선언된 변수 및 함수 출력, 로컬 환경 변수 조회
환경 설정
주요 환경변수
- TERM: 터미널 유형을 나타내는 환경변수
- TMOUT: 로그아웃 관련 시간 제어
- LANG: 프로그램 사용 시 기본 지원 언어
환경 설정 파일
- 전역 설정 파일
- /etc/profile: 시스템 전체의 로그인 셸 세션을 위한 초기화. 모든 사용자의 로그인 셸 세션 시작 시 실행, 시스템 전체(모든 사용자)에 적용되는 환경변수와 시작관련 프로그램을 설정하려고 한다.
- /etc/bashrc: 시스템 전체의 기본 설정을 위한 스크립트 파일, 모든 사용자의 글로벌 구성 제공
- 지역 설정 파일
- ~/.bashrc: 개인 사용자가 정의한 alias와 함수들이 있는 파일, bash가 수행 시 실행되는 함수를 지역적으로 제어
- ~/.bash_profile: 개인 사용자가 정의한 alias와 함수 설정 파일, 일반 사용자가 PATH와 같은 환경변수 변경할 때 사용
- ~/.bash_history: 사용자가 명령어나 키보드로 입력한 내용들을 파일로 모두 기록
- ~/.bash_logout
- etc/profile.d: 몇몇 응용 프로그램들이 시작 시 자동 실행 할 스크립트 파일 경로를 넣어 둠
셸 환경변수
- /etc/passwd: 시스템에 등록된 각 사용자의 계정 정보를 저장
- /etc/hosts: DNS에 쿼리를 보내기 전 해당 파일에서 먼저 도메인을 탐색할 수 있도록 함,ip와 hostname을 매핑하는 역할을 함,가상의 도메인 설정
- /etc/resolv.conf: DNS에 보낼 도메인 쿼리를 단축하여 지정(도메인 없이 네임스페이스),네임서버 설정
- /etc/sysconfig/network: 시스템 전체에 대한 global한 기본 게이트웨이 주소, 호스트 이름, 네트워크 허용 여부 등을 설정
- /etc/sysconfig/network-scripts: 네트워크 인터페이스 환경 설정과 관련 파일들이 저장된 디렉터리
- /usr/bin/passwd: 사용자의 비밀번호를 변경할 때 사용되는 실행 파일, 일반 사용자도 자신의 비밀번호를 변경할 수 있도록 setuid 특수권한이 설정되어 있음
- /etc/shadow: 시스템에 등록된 모든 계정의 패스워드를 암호화된 형태로 저장 및 관리하고 있는 중요 파일로, root 계정을 제외한 모든 사용자의 접근을 제한
History 기능
- 옵션
- !! : 직전에 실행한 명령을 재실행
- !문자열: 가장 최근에 ‘문자열’로 시작하는 명령문 실행
- !?문자열: 최근에 실행된 명령 중에 ‘문자열’을 포함하고 있는 단어 나타냄
- !n: n번째 명령어 실행(history 기준)
- !*문자열: 현재 명령 라인의 문자열을 포함하는 명령어 실행
- History -1 : 최근에 실행한 명령의 히스토리를 출력 -1은 가장 최근에 실행한 명령
- 환경변수
- HISTSIZE: 히스토리 스택의 크기
- HISTFILE: 히스토리 파일 위치
- HISFILESIZE: 물리적인 히스토리 파일 크기
프롬프트 형식
- PS1=’[/u@ \w]$’
- -\h: 호스트명을 표시
- -\u: 현재 사용자의 이름 표시
- -\t: 24시로 현재 시간을 표시
- -\d: ‘요일 월 일’형태로 날짜 표시
- -\w: 현재 작업 디렉터리를 절대 경로로 표시
- -\W: 현재 작업 디렉터리의 전체 경로 중 마지막 디렉터리만 표시
- -\s: 사용 중인 셸 이름 표시
- PS1: 주 프롬프트에 사용되며, 보통 사용자 이름, 호스트 이름, 현재 디렉토리 등의 정보 표시, 프롬포트 환경 변수를 저장
- PS2: 보조 프롬프트에 사용되며, 주로 명령어가 다음 줄로 이어지는 경우 표시, 역 슬래시를 쓰고 다음 줄 이어서 입력할 때 나오는 프롬프트(>)를 변경
- PROMPT : C 셸에 사용되며, 현재 프롬프트의 형식을 지정
프로세스 개념 및 유형
inetd vs standalone
- inetd: 필요한 서비스이나 자주 사용하지 않는 서비스들을 관리할 때 유용한 방법으로 특히 메모리 관리에 효율적
- standalone: 독립적으로 수행되며 서비스 요청에 응답하기 위해 항상 메모리에 상주하는 데몬
- 데몬: 주기적이고 지속적인 서비스 요청을 처리하기 위해 계속 실행되는 프로세스로 백그라운드로 실행
프로세스 유형 fork()와exec()
- exec: 시스템 호출 함수로 호출하는 프로세스가 새로운 프로세스로 변경되는 방식
- fork: 새로운 프로세스를 위해 메모리를 할당 받아 복사본 형태의 프로세스를 실행
명령어
- halt: 시스템을 종료하는 명령
- suspend: 작업 중인 프로세스를 일시 중지 시키는 명령어
NI 값
- 조정할 수 있는 NI값 범위: -20~19
- -20은 가장 높은 우선권을 가지며 19는 가장 낮음
- 일반 사용자는 NI값을 증가 시키는 것만 가능, root 사용자만 NI값 감소 시킬 수 있음
시그널 번호
- SIGKILL – 9 : KILL 강제 종료(POSIX)
- SIGINT – 2: 터미널 인터럽트(ANSI)-ctrl+c
- SIGHUP: 1번
- SIGTSTP – 20 : 프로세스를 대기로 전환 (POSIX)
- SIGTERM – 15: kill 호출 시 ,가능하면 정상 종료 시키는 시그널 (ANSI)
- SIGQUIT - 3: ctrl+w,종료
- SIGCONT - 18
참고
- /etc/rc.d/init.d/nfs start
- inetd 기반 방식
- 클라이언트 서비스가 요청이 있는 경우 메모리에 상주하는 것
- 운영 빈도수가 낮은 프로세스에 설정하는 것이 효율적 (telnet, pop3, finger 서비스가 이에 해당)
프로세스 유틸리티(관련 명령어)
ps
- 실행중인 프로세스 상태를 보여줌
- 옵션
- a: 현재 실행중인 모든 프로세스 출력
- u: 사용자 이름과 프로세스 시작 시간 출력
- x: 접속된 터미널뿐만 아니라 사용되고 있는 모든 프로세스들 출력
- ‘ps aux’: 실행 중인 모든 프로세스 정보를 소유자 정보와 함께 출력
- l: PRI와 NI값을 확인
- 상태
- USER(프로세스 소유자)
- RSS(실제 사용되는 메모리량)
- TTY(프로세스와 연결된 터미널 번호), TIME(총 CPU 사용시간)
- STAT(상태) 코드
- -R: 프로세스가 현재 실행 중 혹은 실행될 수 있는 상태
- -S: 프로세스가 현재 실행 대기 중인 상태
- -T: 프로세스가 현재 중지된 상태
- -Z: 작업이 종료되었으나 부모 프로세스로부터 회수되지 않아 메모리를 차지하고 있는 상태
- -D: 디스크 I/O에 의해 대기하고 있는 상태
pstree
- 실행중인 프로세스들을 트리 구조로 나타냄
- 옵션
- ‘-p’: 프로세스ID 표시
- ‘-a’: 명령행 인자를 포함한 정보를 트리구조에 표시
- ‘h’: 현재 프로세스와 해당 프로세스의 부모 프로세스를 음영으로 강조해서 출력
jobs
- 작업이 중지된 상태, 백그라운드로 진행중인 상태, 변경되었지만 보고되지 않은 상태 등을 표시
- 출력 된 목록 중에서 기호 ‘-’는 대기 상태 작업을 나타냄
bg와 fg
- 명령어 뒤에 ‘&’를 붙여주면 백그라운드로 작업
- bg: 중지된 작업을 다시 실행
- <ctrl+c>: 포그라운드 작업 종료
- 포그라운드에서 백그라운드로 전환: 먼저 실행 중인 작업을 일시 중지 시킨 후(<ctrl+z>), bg 명령 수행
- fg 형식: ‘fg %작업번호’ 또는 ‘fg 작업번호’
- Background: bg상태에 잇지만 동작 code가 있는 상태
- Foreground: 앱이 실행되어 사용자에게 보여지는 상태
kill - PID
- 프로세스를 종료 시킴
- Kill 2 : PID가 2인 프로세스 종료
- Kill %2: 현재 쉘 세션에서 2번째 백그라운드 작업을 종료
- Kill -l: 시그널에 부여된 번호값을 확인
- PID 1 = 시스템의 핵심이 되는 초기화 프로세스, 유일한 PID 1 존재
- PID 0 = 특별한 목적을 가진 프로세스를 나타냄
- 뒤에 아무 옵션을 넣지 않으면 디폴트 값인 15번 시그널 사용
killall - 프로세스명
같은 데몬의 여러 프로세서를 한번에 종료
nice - 프로세스명
- 프로세스 사이의 우선순위를 확인하고 우선순위를 변경할 수 있는 명령
- NI 범위: -20 ~ 19
- 옵션
- ‘-숫자’: 사용하지 않으면 디폴트 10
- ex) nice -10 bash (기존NI:-5): 기존 -5값임으로 ‘-5+(10)=5’ 임
renice - PID
- 이미 실행 중인 프로세스의 우선순위를 변경
- 기존 NI 값에 상관없이 NI값을 설정
top
- 운영 상태를 실시간으로 모니터링 하거나 프로세스 상태를 확인(%CPU,%MEM 사용률 확인)
- ex) top -d 1 -p 4056: 프로세스 4056의 상태와 시스템 상태 정보를 1초 간격으로 화면에 출력
- 옵션
- -k: kill과 동일
- -n: 표시되는 프로세스 개수 지정
- -i: 좀비 프로세스나 idle 프로세스의 정보 출력 제어
- -r: NI값을 조절할 때 사용하는 명령
- -s: 화면 갱신시간 변경
- -q: top종료
- 실행 상태에서 ‘t’키를 입력하면 명령어라인 항목을 on/off 할수 있음
nohup
- 프로세스가 중단되지 않고 백그라운드로 작업을 수행할 수 있게 한다
- 실행 중인 프로세스의 터미널이 닫히더라도 계속적으로 작업이 수행
tail
- 마지막 행을 기준으로 지정한 행까지 파일 내용의 일부 출력
조작 키
- <ctrl+d>: 진행중인 작업 정상종료 또는 shell 상태면 로그아웃
- <ctrl+c>: 진행중인 작업 취소
- <ctrl+z>: 프로세스를 대기
init
초기화 프로세스를 제어하는 명령어
cron
- 주기적으로 반복되는 일을 자동적으로 실행
- 데몬: crond
- 관련 파일: /etc/crontab
- 옵션
- ‘-u’(특정 사용자의 일정 수정)
- ‘-e’(crontab을 작성하거나 수정)
- 형식: 분 시 일 월 요일 /경로/스크립트.sh
- 매주 1회 ex) 매주 월요일 1시 1분 ( 1 1 * * 1)
- 10분 주기? 0-59/10으로 표기
에디터 종류 및 활용
pico
- 워싱턴 대학의 aboil kasar가 개발한 유닉스 기반의 텍스트 에디터, 자유 소프트웨어 라이선스가 아님
메뉴의 키
- <ctrl+o>: 파일 저장
- <ctrl+x>: 파일 종료
- <ctrl+a>: 커서를 해당줄 시작으로 이동
- <ctrl+e>: 커서를 해당줄 마지막으로 이동
vi
- 1976년 빌 조이가 초기 BSD 릴리즈에 포함될 편집기로 만듦
- 모드형 편집기 (명령모드, 입력모드, 편집모드로 구성)
- 옵션
- ‘-r’:갑작스러운 사고로 인해 파일이 손상되었을 경우 파일 복구
- ‘-u’: undo로 바로 직전에 삭제한 줄을 다시 복원
- ‘-c’: 변경 명령을 시작하는데 사용
- ‘-R’: 읽기 전용 모드
- ‘+’: 파일을 열면서 커서를 특정 위치에 놓을 때
- ‘vi +[num] 파일명’: 해당줄로 커서 이동, [num]이 없는 경우 마지막 줄로 커서 이동
- ‘vi $ 파일명’: 커서가 줄의 맨 끝으로 이동하는 명령
- ‘vi 파일명’: 앞줄의 첫 문자로 이동
- 문자열 검색
- n: 같은 방향으로 다음 문자열 검색
- N: 검색어로 찾은 이전 위치로 이동
- /정규표현: 커서위치 아래 방향으로 검색
- /?정규표현: 커서위치 윗방향으로 검색
- 입력 모드 전환 명령
- a,i,o
- [참고] 명령 ‘p’: 명령 모드에서 수행되며 커서 위치 오른쪽에 붙여 넣기를 함
- 편집 모드
- -p: 커서 위치 오른쪽에 붙여 넣기
- -dd: 한 라인 삭제
- -yy: 한 라인 복사
- -x: 현 커서 위치 문자를 삭제
- ‘.exec‘: vi편집기 환경 등록 파일
- 명령 모드
- set nonu / set nonumber: 행 번호 제거
- set ts: vi편집기에서 탭 간격 조절
- set ai: 자동 들여쓰기,행 바꿈
- set sm: 괄호 입력 시 자동으로 대응되는 괄호 표시
- set number / set nu: 행 번호 표시
- set ic: 검색 패턴 사용 시 대소문자 구별 X
- set list: 눈에 보이지 않는 특수 문자를 표시
- 치환할 때 규칙
- 기호 ’^’: 줄의 시작을 의미
- 특수 문자 앞에는 반드시 \
- 문자열 일괄 치환 % s/[변경대상]/[변경 결과]/g
- <% s/linux$/linux./>
- %는 전체 파일의 범위 s: 찾은 패턴을 치환 linux$: 찾을 패턴($는 줄의 끝 의미)
- linux. : 찾은 패턴을 대체할 문자열을 나타냄(여기서는 linux로 끝나는 부분에 마침표 추가)
- 관련 파일
- .virc = 비주얼 모드인 vim을 위한 설정 파일
- .exrc = vi 편집기에서 사용자가 환경 설정을 등록하는 파일
vim
- 브람 무레나르가 만듦
- 편집 시 다양한 색상을 이용하여 가시성을 높일 수 있음
- vim ~/.vimrc: vim 실행 시 설정 파일
gedit
- 그놈 데스크톱 환경용으로 개발된 자유 소프트웨어 텍스트 편집기
- 마이크로소프트 윈도우, 맥OS X에서도 사용
- GUI 기반 X윈도에서만 사용할 수 있는 편집기로 윈도우 운영체제의 메모장처럼 손쉽게 사용 가능
emacs
- 리처드 스톨만이 매크로 기능이 있는 텍스트 교정 편집기로 개발
- 제임스 고슬링이 LSIP 언어를 기반하여 emacs에 다양한 기능을 개발하여 추가
- 비모드형 편집기로 ctrl 또는 alt와 다른 키를 조합하여 이용
- 편집기 형식
- <ctrl+x>, <ctrl+c>: 편집종료
- <ctrl+c>: emacs 종료
- <ctrl+s>: 편집된 내용 저장
- <ctrl+f>: 커서를 오른쪽으로 이동
- <ctrl+j>: 행 끝을 나란히 맞춘다
nano
- Ctrl+a : 현재 행의 시작 부분으로 커서 이동
- Ctrl+e : 현재 행의 끝 부분으로 커서 이동
- Ctrl+o : 파일 저장
- Ctrl+I : 탭을 삽입
- Ctrl+x: 나가기
참고
- Nano,emacs,vim: CUI 환경 텍스트 에디터
- emacs(이미지 상단에 file edit이라 표시)
- 귀도 반 로섬 : IDLE
프로그램 설치
리눅스 배포판과 패키지 관리 기법
- RedHat: yum
- Debian: DPKG(온라인X),apt-get,Dselect(패키지 형식 변환에는 사용 X)
- SuSe: YAST(주로 시스템 설정 도구로 사용),zypper
- CentOS: rpm
- CentOS 7버전에서 모든 프로세스의 시작이 되는 프로세스명: systemd 이전에는 init
- Alien: 레드햇 패키지(rpm)->데비안 패키지(.deb)로 변환
확장 패키지 관련 저장소 설치 과정
- epel-release: EPEL 저장소의 구성 파일과 공개 키를 포함하는 패키지
- Yum(레드햇 계열)과 같은 도구를 사용하여 EPEL저장소에서 패키지와 의존성 패키지를 설치할 수 있음
rpm
- 레드햇 사에서 만들어낸 패키지 관리 툴
- 옵션
- ‘-h’: 패키지 설치 과정을 해시(#) 마크로 표시
- ‘-V’: 파일이 침입자에 의해 권한 획득이나 변조 되었는지 검사. S(파일크기), 5(MD5), T(파일 수정일)
- ’–force’ 포함 옵션: replacepkgs(패키지 재설치), replacefiles(강제설치), oldpackage(다운그레이드)
- ‘-e’: 패키지 제거
- ‘-U’: 기존 패키지 업그레이드, 설치된 패키지가 존재하지 않으면 새로운 버전 설치
- ‘-q’: 패키지 설치 여부 확인
- ‘-l’: 설치되는 파일 목록(list) 출력
- ‘-i’: 패키지 설치
- ‘-a’:모든 패키지 확인
- ‘-qf’:질의의 결과를 원하는 형태로 출력 시 사용 (–quaryformat), 설치한 패키지 이름 확인
- ‘-ip’ : 패키지 파일에 대한 정보를 출력
- ‘–nodepes’: 의존성 관계를 무시하고 패키지 설치
- ‘-F’: 기존 패키지가 있는 경우에만 업그레이드
- ‘-f’: 특정 파일을 설치한 패키지 명 확인
- ‘-v’: 상세 내용 출력
- ‘-p’: 설치되거나 설치되지 않은 패키지 파일에 대한 질문의 수행
- rpm -qa grep 패키지명: 설치 확인
- ‘-qi’: 설치된 패키지의 상세정보 보기
yum
- rpm의 의존성 문제를 해결하기 위한 유틸리티
- 사용법
- yum remove 패키지명: 지정한 패키지 제거
- yum search 문자열: 해당 문자열이 포함된 패키지 검색
- yum groupinstall 패키지명: 지정한 패키지 그룹 설치
- yum install 패키지명: 의존성을 고려하며 패키지 설치
- yum list: 전체 패키지에 대한 정보 출력
- yum list update: 업데이트시 필요한 패키지 정보
- yum info: 패키지 정보 출력
- yum check-update: 업데이트가 가능한 패키지 목록 확인
- yum history: 작업 이력 확인
- 최초 설치 시 진행
- 패키지 설치 전 먼저 지정한 패키지가 설치되었는지 검사 후 해당 패키지를 설치
- ‘yum search’후 ‘yum install [검색결과]’ 수행
dnf
- 페도라 22에서부터 적용된 패키지 관리 도구, 레드햇 리눅스 사용
- 기존 도구인 yum의 문제점을 보완한 도구
dpkg
- 데비안의 저(low)레벨 패키지 관리 툴, deb 패키지의 설치, 삭제, 정보 제공을 위해 사용됨
- 파일형식: 패키지이름_버전_릴리즈번호_아키텍처.deb
- 옵션
- ‘-s’: 패키지 버전, 관리자, 간략 설명 등 패키지 정보 출력
- ‘-p [패키지]’:패키지의 환결 설정 파일을 포함하여 모두 제거
- ‘-L [패키지]’:해당 패키지로부터 설치된 모든 파일 목록들을 출력
- ‘-l’: 설치된 패키지 목록 확인
apt-get
- 데비안 리눅스에서 소프트웨어 설치와 제거를 위한 패키지 관리 유틸리티
- /etc/apt/sources.list: 패키지 정보를 확인, 설치시 발생되는 의존성/충돌 문제를 해결하기 위해 참조
- 패키지 설치: apt-get install 패키지명
aptitude
- 우분투의 패키지 관리 유틸리티, APT 처럼 패키지를 관리 자동화
소스 파일 설치
tar
- 사용 방법: tar [옵션] [압축파일 이름][압축할 파일들]
-
옵션
ex)‘tar -zxvf home.tgz /home’
- x: tar 파일을 풂
- z: 아카이브파일을 gzip 파일로 압축 해제
- c: 파일이나 디렉터리를 아카이브(tar)파일로 묶음
- f: 아카이브 파일명 지정
- v [파일명]: 작업 대상이 되는 파일의 이름을 지정
- v: 어떤 명령을 실행할 때 대상이 되고 있는 파일들의 처리과정을 화면에 출력
- t: tar(아카이브 파일) 안에 묶여있는 파일 목록 출력
- P: 절대 경로로 정보 출력
- r: 기존 tar 파일 뒤에 파일 추가
- j: 압축 파일인 tar.bz2에 사용
- J: xz 옵션으로 압축 파일인 tar.xz에 사용
- C: 디렉터리 변경
- zcat: 압축되어 있는 텍스트 파일 내용 확인
파일 압축과 해제
- compress, uncompress (압축명: .Z)
- gzip, gunzip (압축명: .gz)
- bzip, bunzip (압축명: .bz2)
- xz, unxz (압축명: .xz), 옵션 ‘-d’(압축해제)
- 압축률 순위: compress(Z)<gzip(z) < bz2(j) < xz(J)
파일 압축과 해제
- 컴파일 순서 : configure -> make -> make install
- Configure: 소스 코드를 컴파일하기 전에 시스템 환경을 검사 및 Makefile 생성,설치될 경로를 지정할 수 있음.
- Make: Makefile에 기록된 지시에 따라 소스코드 컴파일 및 실행 파일 생성
- Make install: 컴파일 된 프로그램을 시스템의 적절한 위치에 설치
- CMake(Cross Platform Make): 스스로 기존의 make과정을 수행하지 않고 지정한 운영 체제에 맞는 make 파일의 생성만 수행
- 소스 설치 방법 cmake- MySQL,KDE,LMMS
- PHP는 전통적으로 ./configure 스크립트와 make를 사용하는 빌드 시스템을 사용
주변 장치 연결 및 설정
프린터 설치 및 설정
- LPRng(Line PRinter next generation)
- 리눅스 초기에 사용되었던 인쇄 시스템
- 설정 파일: /etc/printcap
- BSD 계열 유닉스
- CUPS(CommonUnix Printing System)
- 애플이 개발한 오픈 소스 프린팅 시스템
- 설정 디렉터리: /etc/cups
- 웹 기반으로HTTP기반의 IPP 사용하여 제어 http/631 port
- 클라이언트와 프린트서버로 구성되어 있는 유닉스/리눅스 호환 OS 운영체제를 위한 모듈러 프린팅 시스템
- IPP: 인터넷 상에서 원격으로 인쇄하기 위해 사용되는 프로토콜
프린터 관련 명령어
- BSD 계열
- lpr: 프린터 작업 요청, 옵션 ‘-#’(인쇄할 매수 지정), ‘-r’(관련 파일 삭제)
- lpq: 프린터 큐의 작업 목록 출력
- lprm: 프린터 큐에 대기 작업 삭제
- lpc: 라인 프린터 컨트롤 프로그램
- system V 계열
- lp: 프린터 작업 요청, 옵션 ‘-n’(인쇄할 매수 지정),’-d’: 기본 설정 프린트 이외에 다른 프린터로 지정,프린터 디바이스 path를 이용해 직접 인쇄
- lpstat: 프린터 큐 상태 확인
- cancel: 프린트 작업 취소
사운드 카드 설치 및 설정
- OSS(Open Sound System): 리눅스에서 사운드를 만들고 캡쳐하는 인터페이스 표준
- ALSA(Advanced Linux Sound Architechture): 사운드 카드 용 장비 드라이버를 제공하기 위한 리눅스 커널 요소, GPL 및 LGPL 라이선스 기반으로 배포, OSS에 비해 훨씬 많은 양의 복잡한 API 제공
사운드 카드 관련 명령어
- alsactl: ALSA 사운드 카드를 제어
- alsamixer: 커서 라이브러리 기반의 오디오 프로그램
- cdparanoia: 오디오 CD로부터 음악 파일을 추출 시 사용
스캐너 설치 및 설정
- SANE(Scanner Access Now Easy): 이미지 관련 하드웨어를 제어하는 API
- XSANE(X based interface for the SANE)
- SANE 스캐너 인터페이스를 이용하여 X-Window 기반의 스캐너 프로그램
- GTK+ 라이브러리로 만들어 졌음
- 실행 명령은 xsane
스캐너 관련 명령어
- sane-find-scanner: SCSI 스캐너와 USB 스캐너 정보 출력 명령어
- scanimage: 이미지 스캔
- scanadf: 여러 개의 사진 스캔
- xcam: GUI 기반으로 평판 스캐너나 카메라로부터 이미지 스캔
로컬 접속 프린트 연결
- /dev/lp0: 직렬포트 연결
- /dev/usb/lp0: USB 포트 연결
X-Window 개념 및 사용법
X윈도우의 특징과 구성요소
- 개념과 특징
- 네트워크 프로토콜 기반의 클라이언트/서버 시스템
- 오픈 데스크톱 환경으로 KDE, GNOME, XFCE 등이 있음
- 구성 요소
- XProtocol
- Xilb
- XCB: xlib를 대체하기 위해 등장, 향상된 쓰레드 기능 지원, 확장성 우수
- Xtoolkit
- XFree86
- XF86Config
- Xsession: 사용자가 로그인 할 때 실행되는 스크립트
- Xsetup: XDM을 사용하는 로그인 화면 설정에 사용
- Xinitrc: 사용자가 startx 명령을 통해 X윈도우 시스템을 시작할 때 실행되는 스크립트로, 사용자 정의 초기화 명령을 포함할 수 있다
- Xauthority: X 클라이언트가 X서버에 접근할 수 있도록 하는 인증 키를 저장
- Xfce는 리눅스와 unix-like os들을 위한 데스크탑 환경
- startx: 텍스트 모드로 부팅 된 상태에서 X 윈도를 실행하는 명령
- VISUAL: 사용자의 기본 텍스트 에디터를 나타내는 환경변수
- Systemctl : 시스템 부팅 시 X 윈도가 실행되도록 설정
- (set-default)-부팅모드 변경
- 텍스트 모드 부팅: multi-user.target
- x윈도 실행: graphical.target , runlevel5.target
- Get-default는 현재 설정된 기본 대상을 조회하는 명령어(부팅모드 확인)
- XTERM: X윈도우에서 사용되는 터미널 에뮬레이터의 종류를 나타내는 환경변수
- xrandr : 명령행에서 화면 크기 및 방향 등을 확인 및 변경하는 명령
- xrandr → 현재 화면의 크기 정보를 출력한다.
- xrandr -s 1024768 → 화면의 크기(해상도)를 1024768 로 변경한다.
- 라이브러리
- Xlib – XCB
- KDE – Qt
- GTK+ - GNOME
용어 설명
- 데스트톱 환경: GUI 환경을 이용하기 위해 사용자에게 제공되는 인터페이스 스타일, (파일관리자, 아이콘,창 도구 모음, 배경 화면 등이 포함)
- 윈도우 매니저: X-윈도우상에서 윈도우의 배치와 표현을 담당하는 시스템 프로그램
- Kwin,Mutter,Windowmaker…
- 유저 인터페이스: 사람들이 컴퓨터와 상호 작용하는 시스템
- 디스플레이 매니저: X-윈도우 구성요소 중 사용자 로그인 및 세션 관리 역할 수행 프로그램,사용자 이름과 암호가 유효한 값일 때 세션을 시작한다.
용어 정리
- 윈도 매니저: 도크(Dock), 태스크 바(Task bar), 프로그램 런처(Program launcher), 데스크톱 아이콘(Desktop Icon), 바탕화면(Wallpaper) 등과 같은 다양한 유틸리티 제공
- X 프로토콜: X 윈도우 시스템에서 서버는 디스플레이를 전담하는 기능을 하며, X 클라이언트의 요구에 따라서 화면 출력과 사용자의 입력 처리를 담당
- 데스크톱 환경: GUI 환경을 이용하기 위해 사용자에게 제공되는 인터페이스 스타일
- 데스크톱 환경에서 작동하는 것들 KDE, GNOME, LXDE, XFCE
- 디스플레이 매니저: 그래픽 모드에서 실행되는 것으로 XDM, GDM, KDM 등이 있음
- X 윈도 시스템 상에서 작동하는 디스플레이 매니저: XDM, GDM, KDM
기타
- KDE: QT라이브러리 기반
- GNOME: LGPL을 따르는 GTK+ 라이브러리 기반
X-윈도우 설정과 실행
- 파일 /etc/inittab: 리눅스 부팅모드 설정
- X-윈도우 실행
- X윈도우 강제 종료: ‘
+ + ’ - xinit에 전달하는 옵션: ‘–’
- 환경변수 display
- DISPLAY: X클라이언트를 원격지로 전송하기 위한 환경 변수 (DISPLAY면 열에 아홉은 xauth)
- 형식: export DISPLAY=”IP주소:디스플레이번호.스크린번호” (번호는 0부터 시작)
KDE,GNOME,GRUB
- 데스크톱 매니저: KDE, GNOME, Xface
- GNU 프로젝트 부트로더: GRUB
- Windows maker: GNOME과 KDE에 통합
GNOME
- GNOME: nautilus (파일 관리자)
- GNOME2: metacity (파일 관리자)
- GNOME3: Mutter (윈도우 매니져)
- GDM: GNOME 디스플레이 매니저
참고
- lsmod: 커널에 로드되어 있는 모듈 확인
- modprobe: 리눅스 커널에 모듈을 추가하거나 제거하는데 사용
- ‘ip addr add’: 지정된 인터페이스(eth1)에 IP 주소를 지정할 경우에 사용한다
- ‘system-config-network’: GUI 환경에서 네트워크 설정 명령어이다.
- IP 주소 지정 형식은 ‘ifconfig [interface명][IP주소][netmask 서브넷마스크][up down]’ 이다
- /etc/services: 인터넷 서비스 관련 포트 번호를 확인할때 사용
- /etc/protocols: 서비스 가능한 프로토콜 목록이 정의
- 네트워크 설정 파일 /etc/sysconfig/network-scripts/ifcfg-eth(n)를 이용하여 인터페이스의 IO 주소를 지정할수 있다. (번호는 0부터 시작)
- /etc/sysconfig/network-scripts: 네트워크 인터페이스 환경설정과 관련된 파일이 저장
- /etc/init.d/network
: 네트워크 서비스 시작/정지 - X 컨소시엄에 의해서 X11버전이 처음으로 개정되어X01R02에서 X01R6까지 발표되었다
- Nautilus:파일관리자 Metacity: GNOME 윈도우 매니저
- Mutter: GNOME 3 데스크톱 환경에서 사용되는 윈도우 매니저
- Plasma: KDE 커뮤니티에 의해 개발된 데스크탑 환경
X-윈도우 활용
xhost
- X 서버에 접속할 수 있는 클라이언트를 지정하거나 해제
- +/- 사용하여 IP나 도메인 지정 접근 허가 정책 지정
- 형식: xhost [+ -][IP 도메인명]
xauth
- MMC 방식의 인증 방식을 사용하기 위한 필수 유틸리티
- xauth list $DISPLAY
- 지정된 호스트 표시창의 쿠키값을 확인하는 명령
- DISPLAY: X클라이언트를 원격지로 전송하기 위한 환경변수 (DISPLAY면 열에 아홉은 xauth)
- 서버에서 인증키 생성 -> 클라이언트 보냄 -> 홈디렉터리에 저장
X-윈도우 응용 프로그램
- 오피스: LibreOffice, gedit, kwrite
- 그래픽: GIMP(이미지 편집), ImageMagick(X윈도 기반 이미지 편집 프로그램), eog(이미지 뷰어), kolourpaint, gThumb, gwenview(KDE의 기본 이미지 뷰어)
- 멀티미디어: Totem(동영상 재생), PHYTHMBOX CHEESE
- 파일 관리: nautilus, konqueror(KDE에서 사용하는 웹브라우저/파일관리 프로그램)
- 개발: ECLIPSE
- 기타: KSnapshot(스크린샷 프로그램)
참고
- LibreOffice Drow – 그림판
- LibreOffice writer - 워드
- LibreOffice Calc – 스프레드시트
-
LibreOffice Impress – 파워포인트
- Totem: GNOME 환경의 기본 동영상 플레이어
- Evince: GNOME을 위해 설계된 문서 뷰어.PDF.
- Eog: GNOME 환경의 기본 이미지 뷰어
- Gimp: GNU에 의해 개발된 강력한 오픈 소스 이미지 편집 툴
네트워크 개념
통신망 종류
- LAN(Local Area Network): 근거리 통신망, 집/사무실 등 가까운 지역은 묶는 소규모 네트워크
- MAN(Metropolitan Area Network): 도시권 통신, 도시 하나정도의 범위
- WAN(Wide Area Network): 광역 통신, MAN이 모여서 만들어진 것, 국가/대륙과 같은 넓은 범위
- SAN: 저장 영역 네트워크, 원격 컴퓨터 기억 장치를 서버에 부착하는 구조
OSI 7 Layer
- 애플리케이션: 최종 사용자에게 가장 가까운 계층, 사용자와 직접적인 상호작용
- 표현: 사용자의 명령어를 완성 및 결과 표현. 포장/압축/암호화
- 세션: 응용 프로그램 간의 통신을 관리하기 위한 방법과 동기화를 유지하는 서비스 제공
- FTP, SSH, Telnet, SMTP, DHCP, TFTP, HTTP, POP3, IMAP, SNMP
- 트랜스포트(전송): 송수신 측(end-to-end system) 사이의 연결 설정, 유지, 해제 기능
- TCP(3-handshaking), UDP
- 네트워크: 패킷 단위로 데이터를 전송하여 경로 선택에 관한 서비스 제공
- IP, ICMP, IGMP, ARP, RARP,BGP
- 데이터 링크
- 하위 계층에서 발생할 수 있는 오류를 검출 및 수정하는데 필요한 기능
- 데이터를 전송하는 단위로 분할하는 기능
- 프레임 전달, 전송 단위 순서 제어 기능, 에러 제어 기능, 데이터 흐름 제어 기능 등 제공
- 물리: 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송
네트워크 개요
- 토폴로지
- 버스형: 장애 발생 시 발생지의 위치 추적이 어렵고 버스의 연결 부위나 종단 장치에 문제가 발생하면 전체 네트워크가 중단됨
- 링형: 노드의 숫자가 늘어도 전체적인 성능의 저하가 적다. 노드의 추가는 비교적 어려움.
- 스타형: 포인트 투 포인트, 중앙 집중식 형태로 고속의 대규모 네트워크에 이용. 일부 장애가 발생해도 전체 네트워크에 영향을 주지 않음. 단말기 추가나 오류 진단 용이. 중앙 컴퓨터 고장 시 전체 네트워크 중단.
- 망형: 장애발생 시에도 영향이 적음
프로토콜 구성요소
- 구문: 데이터의 구조나 형식을 하는 것으로 부호화 신호 레벨 등을 규정하며
- 의미: 전송의 조작이나 오류 제어를 위한 제어 정보에 대한 규정
- 순서: 속도 일치 및 순서 제어이다.
네트워크 장비
- 리피터: 신호의 재생 및 증폭기능을 수행하여 물리적인 거리를 확장시키는 장비
- 브리지: 주소에 따라 목적지 포트로 프레임을 전달하는 장비
- X.25: 패킷망에서 가변 길이 프레임 전송하는 장비
- 라우터: OSI 모델의 물리 계층, 데이터 링크 계층, 네트워크 계층의 기능을 지원하는 장치
클래스 별 기본 서브넷 마스크
- A클래스: 255.0.0.0
- B클래스: 255.255.0.0
- 사설IP 주소 대역: 172.16.0.0 ~ 172.31.255.255
- C클래스: 255.255.255.0
- [참고] 0.0.0.0 (디폴트 경로), 255.255.255.255(브로드캐스트 IP 주소)
- C클래스 netmask값이 255.255.255.128인 경우 분할되는 서브넷 개수와 사용 가능한 총 IP개수
- 서브넷 ID비트수(1), 호스트ID 비트수(7)
- 서브넷 개수(21=2), 서브넷 당 들어가는 호스트 수(2^7-2 = 126)
- 사용 가능 한 총 IP 주소: 252(2x126)
- 루프백
- 자기 자신을 검사하는 IP
- 범위: 127.0.0.0 ~ 127.255.255.255
- 대표적인 루프백 IP: 127.0.0.1
인터넷 서비스 종류
- RPC(remote Procedure Call)
- DNS 서비스
- /etc/hosts: IP 주소와 호스트명을 매핑시켜 DNS 기능을 제공함
- www
- 메일 서비스
- NFS(Network File System)
- FTP 서비스
Telnet(port-23)
- 관련 메세지 파일
- /etc/motd: 내부/외부 접속 시 로그인 후 출력
- /etc/issue: 내부(로컬) 접속 시 로그인 전 출력
- /etc/issue.net: 외부 접속 시 로그인 전 출력
- 다른 계정 전환 방법: ‘telnet -l 계정ID 서버IP’
- 평문 사용으로 보안에 취약하지만 원격 접속이 된다
- 옵션
- -u : UDP 모드로 telnet 실행
- -n : 호스트 이름을 숫자로 변환하지 않고, 주소로 처리
- -p : 원격 호스트의 포트를 지정
- -l : 로그인 할 때 사용할 사용자 이름을 지정
SSH(port-22)
- ssh -p 180 192.168.1.1
- ‘-p’ 포트, IP 주소
- 계정명 기반 접속: ‘ssh-l 아이디 서버IP주소’ 또는 ‘ssh 아이디@IP주소 [명령어]’
- 원격 호스트에 로그인하거나 원격 호스트에서 명령을 실행하고 다른 호스트로 파일을 복사할 수 있게 해주는 응용 프로그램 또는 프로토콜
- telnet에 비해 강화됨
- telnet과 FTP 대체 가능
- anonymous(익명) 접속을 허용하지 않음
- 인증파일 경로: /home/[USER_ID]/.ssh/authorized_keys
- 보안 강화가 되며 원격 접속이 된다
- http = 80, https =443
- 옵션
- -n: ssh가 끝날 때까지 터미널을 차지하지 않고 백그라운드에서 실행
- -p: 포트 변경
- -x : x11 포워딩을 비활성화
- -l : SSH서버에 계정을 변경해서 접속
기관 관련
- IANA: ICANN이 등장하기 전에 IP 주소 및 도메인을 관리한 기관
- ISO: 국제적으로 인정받는 표준을 개발하는 비정부 기구, OSI 7계층
- CCITT: 국제 전신전화 자문위원회
- ITU-T: 국제 전기 통신 연합
- IEEE: 전기공학과 전자공학 분야의 전문가 단체, LAN 및 MAN 관련 표준
- ICANN: 인터넷의 도메인 이름과 IP 주소 할당을 관리
- TIA: 통신 분야 기업들이 모여 있는 협회
- EIA: LAN 케이블 관련 표준, 미국 전자 산업 협회, RS-232 규격
- ANSI: 미국의 산업 표준을 제정하는 기구
기타
- Gopher: 인터넷 기반의 문서 검색 시스템으로 텍스트 기반의 메뉴 인터페이스를 통해 정보 검색 기능을 제공
- Usenet: 텍스트 형태의 기사들을 사용자들이 공개된 공간에서 주고받아 토론할 수 있게 고안된 분산 네트워크
- Newgroup: 인터넷 사이트 특정 주제에 관해 짧은 글들을 올려서 서로 토론할 수 있도록 만들어진 인터넷 서비스
프로토콜 종류
- IRC: 실시간 인터넷 채팅 프로토콜
- SCP: SSH 기반의 원격 파일 전송 프로토콜
- RSG: 원격 명령을 실행하는 프로토콜 SSH로 대체
- SFTP: SSH 파일 전송 프로토콜 FTP의 SSH버전
- ICMP: 네트워크 내 장치가 데이터 전송과 관련된 문제를 전달하기 위해 사용되는 프로토콜
- UDP: 사용자 데이터그램 프로토콜, 비연결형, 신뢰성 낮음
- TCP: 전송 제어 프로토콜. 연결 지향 방식, 패킷 교환 방식, 높은 신뢰성
- SMTP(port-25): 메세지 교환에 사용하는 프로토콜
- SNMP(port-161): 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는데 사용함
- IMAP(port-143): 원격 서버로부터 TCP/IP 연결을 통해 이메일을 가져오는데 사용함
- POP3(port-110): 응용 계층 인터넷 프로토콜 중 하나로 원격 서버로부터 TCP/IP 연결을 통해 이메일을 가져오는 데 사용하는 프로토콜
- SAMBA: 윈도우 파일 공유 프로토콜인 SMB/CIFS를 구현. 윈도우와 리눅스/유닉스 시스템 간에 파일이나 프린터를 공유할 수 있게 해줌
- FTP: 파일을 컴퓨터 간에 전송하기 위해 사용되는 프로토콜. 웹 브라우저나 전용 클라이언트를 통해 파일 업로드, 다운로드 할 때 사용, 익명의 계정을 이용하여 접속 가능
- (get: 파일을 로컬 시스템으로 다운)
- put: 파일을 FTP 서버로 업로드 할 때)
- 포트번호(20,21)
- 20: 데이터(파일 전송)
- 21: 신호/명령 제어
- mget: 클라이언트가 서버에서 여러 파일을 동시에 다운로드 할 때 사용
- hash(#): 파일 전송 중에 해시 기호 표시를 활성하거나 비활성하는데 사용
- ARP : IP->MAC (반대: RARP)
인터넷 서비스의 설정
네트워크 관련 명령어
- ifconfig: 네트워크 인터페이스의 상태 확인, IP 주소 설정, 네트워크 인터페이스 활성/비활성 등,mac 주소 uuid, dns-sever 등 나옴
- ping: 특정 호스트 또는 네트워크 장비까지 통신 가능 여부 점검(ICMP 기반)
- traceroute: 어떤 통신 경로를 걸쳐 패킷이 전달되는지 확인
- route: 라우팅 테이블 확인
- nslookup: 인터넷 도메인 네임서버에게 특정 호스트에 대한 정보 질의(대화식 명령어)
- mii-tool: 네트워크 인터페이스 상태(속도와 전송 모드 등)를 점검하고 설정하는 명령, 리눅스의 네트워크 설정 확인 및 이용
- ethtool: 이더넷카드의 설정 정보를 출력하거나 변경, 네트워크 인터페이스의 물리적 연결 여부 확인
- arp: 시스템이 가지고 있는 arp 테이블을 확인하고 추가/삭제
-
- ‘arp-a’를 통해 arp 캐시정보 확인
-
- Ss : 소켓 통계를 보여주는 명령어 네트워크 연결 상태, 포트 사용 현황 체크(netstat대안 가능)
- ip: 네트워크 인터페이스,라우팅 테이블, 네트워크 디바이스 등을 관리하고 정보를 확인,ip 주소 정보나 ip 설정
참고
- Ip route show: 라우팅 테이블을 보여주며, 게이트웨이 정보 포함
- 게이트웨이 주소 확인 명령어: route,ip,netstat
- 포트 연결 정보: netstat,ss
- TCP 포트번호 6000+
netstat
- 네트워크 연결 상태를 확인할 수 있는 명령어
- 어느 포트로 어떤 ip가 접근을 시도하는 지 확인하여 SYN Flooding 같은 디도스 공격의 네트워크 상태 정보를 확인
- 옵션을 이용하면 수신 중인 포트번호, IP주소, 라우팅 테이블 정도 등도 확인 가능
- 명령의 상태(state)값
- LISTEN: 서버에서 클라이언트로부터 들어오는 패킷을 위해 소켓을 열고 기다리는 상태
- SYS-SENT: 로컬에서 원격으로 연결요청(SYN 신호를 보냄)을 시도한 상태
- ESTABLISHED: 3-way handshaking이 완료된 후 서버와 클라이언트가 서로 연결된 상태
- SYN_RECEIVED: 원격지로부터 접속을 요구 받아 응답 했지만 아직 클라이언트에게 확인되지 않은 상태
- 옵션
- -r: 라우팅 테이블 표시
- -t: TCP 연결 표시
- -m: 소켓 버퍼의 메모리 사용 상태 표시
- -n: 주소와 포트번호 등을 숫자 형태로 표시
기술 동향
클러스터
- LVS(Linux Virtual Server, 부하분산) 클러스터
- 실제 서버를 통해 IP 로드 밸런스를 맞추기 위한 통합된 소프트웨어 구성 요소 모음
- linux virtual server, 여러 개의 서버가 부하 분산기에 연결되어 서비스 제공
- HA(High Availability, 고가용성) 클러스터
- 긴 시간동안 지속적으로 운영이 가능한 시스템이나 컴포넌트를 가리킨다. 고가용성 클러스터는 로드밸러서와 백업 시스템을 이용하여 지속적인 서비스를 제공한다
- 장애 발생 시 다른 서버가 서비스를 이어받아 계속 운영되는 클러스터. 로드 밸런싱을 통해 여러 서버로 트래픽을 분산시켜 서비스의 가용성을 보장
- HPC(High Performance Computing, 고계산용) 클러스터
- 고성능의 계산 능력을 제공하기 위한 목적으로 여러 대의 컴퓨터를 병렬로 묶어서 슈퍼 컴퓨터를 제작하는 방식
하이퍼 바이저
- KVM
- 2000년대 초반에 설립된 Qumranet에서 개발한 하이퍼바이저
- x86시스템을 기반으로 CPU 전가상화 방식을 사용
- 이더넷 및 Disk I/O 반가상화를 지원
- QEMU을 이용한 CPU 에뮬레이터 방식
- CPU 가상화 기술인 인텔의 VT 및 AMD-V 기반으로 동작
- CPU 및 그래픽 카드 반가상화를 지원
- VMWare: x86 호환 컴퓨터를 위한 가상화 소프트웨어를 공급하는 회사
- XEN
- CPU 반가상화, 전가상화 모두 이용 가능
- 반가상화 구성시 호스트와 다른 아키텍처의 게스트는 실행 할 수 없다
- 케임브리지 대학교에서 개발이 시작되어 2003년에 첫 공개 버전이 발표
- VirtualBox
- 이노테크(InnoTek)가 개발 현재는 오라클이 개발 중인 상용, 사유 소프트웨어(제한된 GPL 버전)
- 가상머신 생성시 기본 확장자: vdi
- 하이퍼 바이저 통합 관리 플랫폼: Cloudstack, Openstack(오픈 소스 클라우드 컴퓨팅 플랫폼,XEN, KVN 등으로 나눠서 운영되는 가상화 환경 통합 관리에 유용), OpenNebula
활용 기술
클라우드 서비스
- IaaS: 서버와 스토리지 같은 IT 하드웨어 자원을 빌려주는 클라우드 서비스
- PaaS: 소프트웨어 서비스를 개발하기 위한 플랫폼을 제공하는 클라우드 서비스
- SaaS: 클라우드 환경에서 동작하는 응용 프로그램들을 서비스
- DaaS: 사용자에게 가상화된 데스크톱을 아웃소싱 형태로 전달하는 서비스
- ZaaS(Zebra as a Service): 현재로서는 기업 IT용어가 아니다. 셀링 투 지브라스라는 기업이 자사를 마케팅하기 위해 사용하는 용어
- 알파벳 순으로 이용자의 설정이 많음
컨테이너화 된 애플리케이션
- Kubernetes: 컨테이너화된 앱의 ‘자동’ 배포,확장 및 ‘관리’를 위한 오픈 소스 플랫폼,Docker 자동화 플랫폼->cncf 기증(현재 리눅스 재단에 의해 관리)
- Docker: 경량화된 가상화기술/ 컨테이너화된 애플리케이션의 개발,배포 및 실행(관련 키워드 KVM,XEN),하이퍼바이저나 게스트OS 없이 서버 운영에 필요한 프로그램과 라이브러리 만 격리해서 설치 및 운용 가능
- Ansible: 오픈 소스 IT 자동화 플랫폼,소프트웨어 프로비저닝, 구성관리, 다양한 운영체제에서 사용 가능한 공개 프로그램. 2015년 레드햇에 인수되어서 관리
Ethernet
- MAC 주소 기반 통신, 가장 널리 사용되는 네트워크 기술
- CSMA/CD: 이더넷에 연결된 여러 컴퓨터들이 하나의 전송 매체를 공유할 수 있도록 함
패킷 교환 방식
- 회선 교환 방식에 비해 지연이 더 발생
- 오버헤드 비트 존재
- 패킷 별로 우선순위 부여
- 고정 대역을 할당하지 않는 관계로 이론상으로는 무제한 수용 가능
관련 용어
- Token Ring(IEEE 802.5): 토큰을 사용하여 데이터 충돌 방지, 주로 소규모 네트워크에서 사용
- FDDI: 광섬유 케이블 사용, 이중 링 구조, 대규모 네트워크에서 고속 데이터 통신
- X.25: 패킷 스위칭 네트워크, 공공 전화망에서 사용, 신뢰성 있는 데이터 전송
- MAN(DQDB): 도시와 같은 공중 영역을 상호 연결하기 위해 개발된 것으로 IEEE 802.6으로 표준화
LAN 케이블 규격
CAT-5 : 대역폭 100MHz, 전송 속도 100Mbps
CAT-5E : 대역폭 100MHz, 전송 속도 1Gbps
CAT-6 : 대역폭 250MHz, 전송 속도 1Gbps
CAT-7 : 대역폭 600MHz, 전송 속도 10Gbps
Start the conversation