PS(Process Status)

프로세스는 실행 중인 프로그램을 나타내는 추상적인 개념으로, 

예를 들어 사용자가 HDD(Non-Volatile Memory)와 같은 저장장치에 있는 프로그램을 실행하게 되면

프로그램이 프로세스 상태로 메모리에 적재되어 실행되며, 모든 프로세스는 부모 프로세스, 자식 프로세스로 분류되게 된다. 

리눅스에서는 init(~CentOS6), systemd(CentOS7~)와 같은 시스템 최초의 프로세스로 "시스템 초기화 프로세스"라고 불린다. 

프로세스 상태 조회에 자주 사용되는 명령어 'ps'를 알아보자

 

 

■ 명령어 'ps'의 활용방식

아무런 옵션 없이 사용하게 되면 현재 사용자의 화면에 표기되는 프로세스에 관해서만 보임

 

▼ 주로 사용되는 옵션은 코드블럭을 참조

ps -f '''현재 실행되는 프로세스에 관해 자세히 출력'''
ps -a '''다른 사용자의 프로세스까지 함께 출력'''
ps -u '''해당 프로세스를 실행중인 사용자의 정보와 시간을 함께 출력'''
ps -x '''백그라운드 프로세스까지 출력'''

ps -aux '''리소스 사용률을 기반으로 프로세스의 상태를 확인'''
ps -ef '''실행중인 모든 프로세스의 상속관계를 기반으로 자세히 확인'''

 

명령어 'ps'에 옵션 '-aux'를 함께 사용

해당 출력내용의 상단부를 보면 필드별로 나누어진 모습을 볼 수 있는데,

 

- USER : 프로세스의 소유자

- PID(Process ID) : 프로세스의 번호

- %CPU : 프로세스가 CPU를 차지하는 비율

- %MEM : 프로세스가 메모리를 점유하는 비율

- VSZ(Virtual Set siZe) : 프로세스에 할당된 가상 메모리의 크기

- RSS(Resident Set Size) : 프로세스가 현재 사용하는 메모리 비율

- STAT : 프로세스의 상태

- START : 프로세스가 시작된 시간

- TIME : 프로세스의 총 실행 시간

- COMMAND : 프로세스를 실행시킨 명령

 

 

 ▶ 프로세스의 상태(status)를 알려주는 필드 'STAT' 값의 의미

 

- R(Run/Runable) : 프로세스가 실행중 또는 실행가능

- D(in Disk wait) : 입출력이 완료될 때까지 깨울 수 없는 상태(수면상태)

-  S(Sleeping) : 대기 중, 수면상태(전환 가능한 상태)

- T(sTopped) : 외부 시그널로 인해 일시 정지된 상태

- Z(Zombie) : 부모 프로세스가 종료 시그널을 정상적으로 수신 못해, 수습되지 않고 남은 상태 

- < : 우선순위가 높은 프로세스

- N : 우선순위가 낮은 프로세스

- I(Idle) : 유휴(쉬고있는) 프로세스

 

명령어 'ps'에 옵션 '-ef'를 함께 사용

'-aux' 옵션을 사용했을 때와는 필드에 중복되지 않는 새로운 정보가 표기되는 것을 확인할 수 있다.

 

- PPID(Parent Process ID) : 부모 프로세스의 ID

- C : 프로레스의 CPU 점유 상태

- STIME : 프로세스가 시작된 시간

- TTY(TeleTYpewriter) : 프로세스가 실행되고 있는 콘솔

 

등을 확인할 수 있다.

 

 

'Linux_System' 카테고리의 다른 글

[Linux]PAM  (0) 2023.01.12
[Linux]Process(2)_top  (0) 2022.11.08
[Linux]Software_Compile  (0) 2022.10.31
[Linux]YUM_LocalRepository  (0) 2022.10.26
[Linux]Basic_Command(2)  (0) 2022.10.10

프로그램 수동 설치 (Source Compile)

소프트웨어 컴파일이란, 프로그램을 설치할 때 환경변수를 주면서 설치하는 경우이다.

풀어서 얘기하면 소스파일(Source File)직접 컴파일 하여 프로그램을 설치,

일반적으로 패키지 매니저로 프로그램을 설치하게 되면 기본설정(Default)으로 설치가 진행되지만,

환경변수를 주며 설치하면 목적(환경)에 맞는 설치를 진행할 수 있다.

 

소프트웨어 컴파일을 활용하는 대표적인 예시로

APM(Apache Web Server + PHP Web Programming Language + MySQL Database)을

상호 연동하여 설치한다면 소프트웨어 컴파일로 설치해야 한다.

 

 

● 소프트웨어 컴파일의 순서

./Configure(환경설정) make(사용자 프로그램을 기계어로 변환) → make install(컴퓨터에 프로그램을 설치)

순으로 과정이 진행된다. 

 

 

● Source Compile 실습

'yum list installed' 명령어를 이용해 컴파일러와 설치될 프로그램과 연계시킬 'httpd' 패키지 설치의 유무를 확인

 

wget http://www.dest-unreach.org/socat/download/Archive/socat-1.4.2.0.tar.gz
### download tarball source

** ~.tar.xx / ~.tar 형식 파일의 경우 TAR(Tape ARchiver) 프로그램으로, 

묶여있거나 압축이 된 파일들을 의미한다.

일반적으로 이런 형식의 파일들을 "tarball source" 라고 칭한다.

 

 

외부에서 다운받은 tarball source를 압축해제

** 대부분 배포하려는 파일을 압축할 때에는 압축효율이 가장 좋은 '~.gz' 방식을 사용한다.

'unzip'의 경우 디폴트 설치가 되어있지 않은 리눅스 배포판이 존재하니 확인 후 사용할 것

 

 

▼ 명령어를 이용하여 tarball source를 압축해제 (해당 소스파일의 경우 tar.gz)

tar xvfz ~.tar.gz   # ~.gz 파일의 압축해제 옵션 'z'
tar xvfj ~.tar.bz   # ~.bz 파일의 압축해제 옵션 'j'
unzip ~.zip         # ~.zip 파일의 압축해제 명령어 'unzip'

 

 

압축해제 후 생성된 socat-1.4 디렉토리로 작업 경로를 이동

어느 프로그램을 다운받은 후(압축을 풀고), 보았을 때 configure 파일이 있으면 컴파일하여 설치하라는 의미이고

해당 파일에 대한 정보나 사용법 등이 궁금하면 해당 파일에 있는 README 파일을 읽어보면 된다.

 

** configure 시 사용 가능한 옵션 등을 확인하고 싶은 경우에는 ./configure --help 옵션을 활용하여 

확인해볼 수 있다.

 

** 기본 설정값으로 설치를 진행하고자 한다면, 옵션을 사용하지 않고 ./configure 만 실행해주면 된다.

 

./configure --prefix=/usr/local/apache --enable-ssh --disable-ipv6

● prefix=/usr/local/apache = 연계를 맺을 대상 프로그램을 지정

● --enable-ssh = SSH 접속을 허용할 것

disable-ipv6 = IPv6는 사용하지 않을 것

 

등 간략하게 정책을 설정 해주었다.

 

'make'와 'make install'을 정규표현식을 활용해 동시에 진행

"기계어로 변환시킨 후에 프로그램을 설치해라" 를 한 줄에 입력하여 다중명령을 사용한 예시인데,

; 의 경우 첫 번쨰 명령이 실패해도 두 번째 명령어로 넘어가서 실행되기 때문에

&& 를 사용하는 것을 추천(첫 번째 명령어 실패 시 두 번째 명령어는 실행 X)

 

 

컴파일 하여 설치된 프로그램이 정상적으로 설치 된 것을 확인

 

'Linux_System' 카테고리의 다른 글

[Linux]Process(2)_top  (0) 2022.11.08
[Linux]Process(1)_ps  (0) 2022.11.05
[Linux]YUM_LocalRepository  (0) 2022.10.26
[Linux]Basic_Command(2)  (0) 2022.10.10
[Linux]Basic_Command(1)  (0) 2022.10.06

OSI Model (Open Systems Interconnection Reference Model)

사진출처 : https://commons.wikimedia.org/wiki/File:Osi-model-7-layers.png

OSI 참조 모델이란 국제표준화기구(ISO)에서 개발한 계층적 모델로 네트워크를 통해 

데이터를 송수신하는데 필요한 과정등을 단계별로 분류 해두었다.

OSI 모델은 각 계층에서 '무엇을 해야 하는지' 만을 정의하고 그것을 

'어떻게 구현해야 하는지'에 대해서는 정의하지 않고 있는데, 개발자나 제조사가 자신의 판단에 따라

가장 좋은 방법으로 그것을 수행하게 자유를 준 것이라고 볼 수 있다고 한다.

 

네트워크를 학습함에 있어서 전반적인 데이터의 흐름을 파악하기 위해 이 7개의 계층에서

각각 어떤 역할을 어떻게 수행 하는지에 대한 이해가 중요하다. 각 계층은 다른 계층과 분리되어서

자신만의 기능을 캡슐화(Encapsulation)해서 데이터의 헤더부분에 추가(Over Head)한 다음, 이웃한 층으로 전송한다.

 

간단한 예시로 우리가 응용계층에서 어플리케이션을 실행해 문서 작업을 마친 뒤

수신자에게 문서를 전송한다고 가정 한다면, 송신자의 데이터7(응용) ~ 1(물리)계층을 거치며 캡슐화가 진행되고

수신자는 송신자의 역순으로 1(물리) ~ 7(응용)계층을 거쳐 캡슐을 하나하나 벗겨낸 후 최종적으로 

순수한 데이터를 확인해 볼 수 있는 것이다.

 

또 하나의 예시로는 우리가 OSI 7계층의 역할을 인지한 상태에서 통신간의 문제가 발생한다면

각 계층을 대입해서 생각해볼 수 있는 것이다.

 

ex) 로컬(LAN)로 묶인 PC끼리 통신은 가능하나, 외부(WAN)의 인터넷 접속은 불가하다.

1, 2계층에서 문제가 없지만, 3계층 장비 라우터(Router)의 문제일 가능성이 높다.. 

---> 식의 문제의 원인을 유추해 볼 수 있다.

 

** 각 층은 바로 이웃한 층과의 통신만 가능하다.

 

 

● 각 계층에 대해서

1. 물리계층 (Physical Layer) : 데이터를 전기적 신호(0, 1)로 전송해주는 역할을 하며 별도로 오류를 체크하지는 않는다,

fiber-optic, re-232 등의 통신 케이블과 리피터, 허브 등이 대표적인 장치이다.

데이터의 단위는 'bit' 로 표현한다.

 

2. 데이터 링크 계층 (Data Link) : 통신 노드 간 데이터 전송, 오류체크를 담당하며, 

LLC(Logical Link Control) / MAC(Media Access Control) 으로 장치를 구분한다. 

대표적으로 스위치, 브릿지 등의 장치가 있고, Ethernet, FDDI, ATM, HDLC .. 등의 프로토콜이 존재,

데이터의 단위는  'Frame' 으로 표현한다.

** 오류체크 시에는 : CRC, Parity를 이용한다. 

 

3. 네트워크 계층 (Network Layer) : 데이터 전송을 위해 최적의 '경로'를 찾아주는 역할을 하며, 

데이터의 흐름과 에러를 제어한다. 대표적인 장치로는 라우터와 L3-Switch가 있으며,

IP, IPX, IPSEC, ICMP .. 등의 프로콜이 존재,

데이터의 단위는 'Packet' 으로 표현한다.

 

4. 전송 계층 (Transport Layer) : 가상회로를 설정하거나 패킷의 분할, 재조립 등을 담당하고

에러를 수정하는 역할을 한다. 대표적으로 TCP(연결지향적) / UDP(비연결지향적) 프로토콜이 있고,

그 외로도 SPX, RIP, BGP, SSL .. 등 다양한 프로토콜이 존재,

데이터의 단위는 'Segment' 로 표현한다.

 

5. 세션 계층 (Session Layer) : 통신수립 및 통신 제어(Full / Half - Duplex), 연결을 설정/해제 해주는 역할을 하며

NetBIOS, SAP, TLS, SSH .. 등의 프로토콜이 존재, 

데이터의 단위는 'Data / Message' 로 표현한다.

 

6. 표현 계층 (Presentation Layer) : 그림, 음악 등 데이터의 변환을 담당해주고 데이터의 압축과 암호화를 담당한다.

EBCDIC, MP3, MPEG, MIDI .. 등의 프로토콜이 존재,

데이터의 단위는 'Data / Message' 로 표현한다.

 

7. 응용 계층 (Application Layer) : 응용 프로그램을 사용하거나 서비스를 제공, 대역폭 확인, 통신 동기화 등의

역할을 하고 대표적으로 HTTP, FTP, SMTP, Telnet .. 등의 프로토콜이 존재 실제 사용자(User)들이

접하는 환경이다. 데이터의 단위는 'Data / Message' 로 표현된다.

'Network' 카테고리의 다른 글

[Network]STP_Algorithm  (0) 2022.11.11
[Network]FDDI  (0) 2022.11.11
[Network]Ethernet  (0) 2022.11.09
[Network]MAC_Address  (0) 2022.11.09
[Network]Network  (0) 2022.10.28

Network

네트워크의 어원으로는 Net(망, 그물) + Work(일하다)의 합성어로,

"망 안에 얽혀서 일을한다" 정도의 행위로 볼 수 있다.

우리가 생각하는 정보통신 분야에서의 Network는 특정 통신망을 형성하여 

송 / 수신자 간의 데이터를 주고받는 등의 행위를 뜻한다.

 

컴퓨터(Machine)의 초창기에는 IBM Mainframe(서버)가 존재했는데, 이 시기에는 

서버가 모든 작업을 처리했었다고 한다. 이 때의 클라이언트는

마우스가 없는 Dummy Terminal(모니터와 키보드만 존재) 이라고 칭했는데,

모든 작업들을 서버가 혼자 도맡아 처리하다 보니 병목현상(Bottle Neck) 현상이 자주 발생되었다고 한다. 

 

** Server : 서비스를 제공하는 머신, 호스트를 의미

** Client : 서비스를 요청하는 호스트 머신을 의미

---> IT분야 뿐만 아니라 서버(주인) 클라이언트(고객)는 어디에나 존재한다.

 

이런 문제를 해결하기 위해서 연구를 진행했는데,  "Xerox"라는 회사에서 "마우스"를 개발하고, 

발생되는 모든 트래픽이 서버에만 치우치면 문제가 많아지기 때문에 각 머신들을 묶어서 데이터를 처리하는 기법인

"Ethernet"을 개발 해냈다. Dummy Terminal에 각자의 리소스(HDD, RAM, CPU ...)를 부여한다.

 이 시기 이후부터 PC(Personal Computer)의 본격적인 발전이 시작되었다고 한다.

 

** 여기서 말하는 문제는 모든 데이터가 서버에만 저장되어 서버를 통해서만 작업을 

처리해야 한다고 가정했을 때, 서버에 문제가 발생되면 다른 모든 Terminal에서 작업이 불가해지는 등의 문제이다.

 

 

● 간단한 용어정리

- Host : 일반적인 네트워크 상 서버 등의 컴퓨터를 일컫는다, NIC(Network Interface Card)의 수에 따라서 호스트가 달라짐

- Workstation : 일반 PC에 비해서 고성능의 PC를 일컫는 말이기도 하지만, 도메인에 가입된 클라이언트를 뜻한다.

- Machine, Can : 일반 컴퓨터를 뜻하며, 성능이 탁월하지 않은 저사양의 컴퓨터를 뜻 하는 슬랭 정도를 의미 

- Node : 네트워크에 묶여 있는 모든 장치들(Device, Concentrator(집중화기), Distributor(분배기), Equipment(대형장비) ...) 등을 일컫는다.

 

** Multi-Homed : 하나의 호스트에 여러 개의 NIC가 있을 때를 뜻함

 

 

● 네트워크의 대표적인 운영 방식

- Peer to Peer(P2P) : 모두가 동등하게 연결된 상태로 어느 한 쪽이 서비스를 제공하면 그 쪽은 서버,

나머지는 클라이언트가 되는 구조이다.

(보안적인 측면에서 매우 취약)

 

- Server-Client : 서버가 단독으로 서비스를 제공하고, 클라이언트는 서비스를 요청하는 형태

(XSS와 같이 서버가 오염되면 서버에 연결된 모든 클라이언트가 전부 오염)

 등의 특징과 취약점이 존재한다.

 

** Server Contamination 이라고도 표현한다.

 

 

● 통신망의 종류

- LAN (Local Area Network) : 라우터(도메인 안) 이내의 공간을 의미 (LAN을 나누면 세그먼트(Segment)가 된다)

- MAN (Metropolitan Area Netowrk)현재는 사용하지 않지만 영단어가 의미하는 바와 동일한 도시 단위의 통신망을 의미

- WAN (Wide Area Network) : 라우터(도메인 밖) 이후의 네트워크를 의미한다.

 

 - Internet(work) : 무수한 서버들의 집합체

- Intranet(work) : 브라우저로 도메인 내의 리소스를 검색

- Extranet(work) : 브라우저로 도메인 내 / 외의 리소스를 검색

'Network' 카테고리의 다른 글

[Network]STP_Algorithm  (0) 2022.11.11
[Network]FDDI  (0) 2022.11.11
[Network]Ethernet  (0) 2022.11.09
[Network]MAC_Address  (0) 2022.11.09
[Network]OSI_7_Layer  (0) 2022.10.29

YUM(Yellow dog Update Modified) Repository

우리가 리눅스(RHEL 계열)에서 프로그램의 설치/삭제를 도와주는 패키지 관리 도구이다.

여기서 '도와주는' 이라고 표현을 했는데, 그 이유는 저 수준(Low Level) 패키지 관리 도구인

'RPM(Redhat Package Manager)'의 경우 패키지 종속성의 문제로 인해

내가 만약 "Game" 이라는 패키지를 설치하겠다고 하면,

"Game" 이라는 패키지 하나만 설치하면 되는 것이 아닌

종속되어 있는 패키지들을 전부 설치해야 하는 것이다.

 

.. 이게 맞는 비유일지는 모르겠으나 "책상" 이라는 물체를 이루려면

"책상다리", "못", "받침대" 등이 서로 연결되어 책상을 이루는 것과 비슷하다.

 

이렇듯 우리가 하나의 패키지를 손수 설치하려면 그 과정이 짧을 수도 있겠지만 

대부분의 패키지는 갖가지 다른 패키지(요소)들로 이루어져 매뉴얼로 

설치하기는 굉장히 귀찮고 어려울 수도 있는 일이다.

 

이런 점을 보완해 원하는 패키지만 설치를 요청하면 그에 종속된 패키지까지 

전부 설치를 도와주는 "YUM" 이라는 패키지 관리 툴이다.

 

▼ yum 명령어의 사용 방식으로는 아래 코드블럭을 참고하자

yum
# Yellow dog Update Modified

yum ~ install         
# 패키지를 설치

yum ~ check-update    
# 설치된 패키지 중에서 업데이트 가능한 패키지를 출력

yum update ~          
# 패키지를 업데이트 해주는 명령어
# 전체 업데이트도 가능하나, yum update -x [package] 처럼 
# 특정 패키지를 제외하고 나머지를 업데이트 하는 것도 가능

yum search ~          
# Repository 에서 설치될 수 있는 가용한 패키지를 검색

yum list ~            
# 패키지의 설치 여부 등을 학인할 때 사용

 

 

● YUM Repository

yum에 패키지 연결경로를 추가시킬 때 소스 패키지와 이와 관련된 패키지들을 모아놓은 곳을

"리포지터리(Repository)" 라고 칭한다, "저장소"의 의미를 가지고 있다.  

몇 가지 대표적인 방법으로 리포지터리를 사용해서 필요한 패키지를 설치할 수 있다.

 

1. CentOS 설치 시 자동으로 생성되는 "BASE"와 같은 리포지터리를 사용

2. CentOS 설치 시 DVD 등을 리포지터리로 사용

3. "EPEL"이나 "REMI"와 같은 별도의 리포지터리 설치해서 사용

 

 

ls /run/media/centos/~

'CentOS-7-x86_64-DVD-2009' 이미지를 가상머신에 마운트 후

Packages 디렉토리 안의 내용을 확인해보면 약 4070개의 rpm 패키지가 있는 것을 확인할 수 있다.

 

 

(sudo) yum install -y ftp createrepo

내부 저장소 설정을 위해 필요한 패키지 ftp, createrepo를 다운로드

 

 

sudo mkdir /var/ftp/pub/local-repo
sudo cp -arp /[Mount Point]/Packages/* /var/ftp/pub/local-repo

ll /var/ftp/pub/local-repo
total 4000996
-rw-rw-r--. 1 root root  1818404 Oct 15  2020 389-ds-base-1.3.10.2-6.el7.x86_64.rpm
-rw-rw-r--. 1 root root   730568 Oct 15  2020 389-ds-base-libs-1.3.10.2-6.el7.x86_64.rpm
-rw-rw-r--. 1 root root   152952 Aug 10  2017 abattis-cantarell-fonts-0.0.25-1.el7.noarch.rpm
-rw-rw-r--. 1 root root   550448 Oct 15  2020 abrt-2.1.11-60.el7.centos.x86_64.rpm
-rw-rw-r--. 1 root root   199288 Oct 15  2020 abrt-addon-ccpp-2.1.11-60.el7.centos.x86_64.rpm
.
.
.

위의 명령어를 참조하여 DVD에 들어있는 약 4070개의 ~.rpm 패키지를

내부 저장소로 사용할 디렉토리에 복사해준 뒤 내용을 확인해본다.

** 패키지 파일의 개수는 CentOS 이미지 파일의 버전에 따라 상이할 수 있다.

 

 

grep -v '^#' /etc/yum.repos.d/CentOS-Base.repo

주석을 제외한 후 해당 파일을 확인해보면

전부 웹 사이트로 연결되는 것을 확인할 수 있다. 즉 yum을 이용하여 패키지를 다운 받으려면

인터넷에 필히 연결이 되어있어야 한다는 뜻. 이 때, ftp나 http의 경우에는 '://' 로 사용되지만,

웹 상에서 파일을 지정할 때에는 ':///' 식으로 사용된다는 차이점이 존재한다.

 

외부망(웹 사이트)으로 접근하는 것이 아닌 내부 저장소(Local Repository)를 통해

패키지 다운로드를 관리하는 실습을 진행

** 실습을 위해 CentOS7 머신(1) 과 머신(2)를 이용하였다.

 

 

'createrepo -v(verbose)' 명령어를 이용해 repository 메타데이터를 생성, 과정을 보인다.

 

 

방화벽 설정

sudo firewall-cmd --permanent --zone=public --add-sercive=ftp
sudo firewall-cmd --reload
sudo firewall-cmd --list-services

sudo systemctl restart vsftpd && sudo systemctl status vsftpd

 

 원활한 실습을 위해 Selinux = Permissive로 진행

setenforce 0   
# SELinux의 보안 설정을 임시적으로 비활성화

getenforce     
# 현재 SELinux의 상태를 출력

Permissive     
# 해당 상태로 표시되면 비활성화 되었음을 확인할 수 있다.

** 여기서 한 가지 빼먹은 부분이 있었는데 현재 상태로는 아마 클라이언트 PC에서 패키지 

다운로드를 시도하면 Mirror Site를 찾을 수 없다 등의 오류가 발생할 수 있다.

'SELinux' 보안설정에 의한 차단 같은데, 이 부분도 SELinux의 정책을 변경하면

굳이 비활성화를 하지 않더라도 연결에  지장이 없을 것으로 예상된다.

 

현재는 정확한 매커니즘을 이해하지 못 하고 있으므로,

** 추후에 SELinux에 대해서 학습할 때 추가적인 방안을 포스팅

 

이제 내부 저장소 서버에서의 설정은 거의 끝났다. 

 

 

 클라이언트 머신(2)에 접속하여 실습을 마무리 해본다.

sudo yum install -y ftp

내부 저장소 연결을 위한 ftp 패키지를 설치

 

 

Local Repository 설정 전 "nmap" 패키지 설치를 통해 현재 설정된 경로를 확인

Local Repository 설정이 완료되기 전 yum 명령어를 통해 패키지 다운로드를 시도했을 때, 

시스템 디폴트 설정인 "base" 리포지터리를 통해서 패키지를 다운하는 것을 확인해볼 수 있다.

 

 

서버와 반대로 "client.repo"라는 이름의 저장소 경로 파일을 생성

'baseurl'의 경우 서버의 입장인 머신(1) 에서는 "/var/vsftpd/pub/server"라는 경로에 설정되어 있지만,

클라이언트 입장의 머신(2)에서는 머신(1)의 IP주소 연결될 디렉토리의 경로까지 설정을 해줘야한다.

 

** 'gpgcheck'란 외부에서 받아오는 파일의 무결성을 인증해주는 키로 인증하는 것을 의미,

기본 값으로는 각종 패키지들을 외부의 ftp 서버에서 파일을 받아오는 형식이기에

인증을 활성화 시켜줬지만, 현재는 내부 저장소에서 패키지를 받아올 것이기에

굳이 활성화시키지 않은 것이다. 

 

 

이건 편법이다. 원래 이렇게 하면 안된다.

리포지터리의 동작여부를 직관적으로 느낄 수 있도록 임의로 디폴트 리포지터리를

전부 옮기고 해당 디렉토리에 새로 생성하여 설정해 둔 "client.repo"파일만 남겨 놓았다.

 

** 이 부분도 원래는 각각의 리포지터리에 우선순위(Priority) 값을 줘서 우선순위 지정이 가능함

 

 

sudo yum erase -y nmap
# remove가 아닌 erase로 종속파일 제외 앞에서 설치한 'nmap'만을 삭제

sudo yum clean all
# yum 캐시 데이터를 삭제(오류를 피하기 위함)

sudo yum repolist all
# Repository 목록을 출력

 

"yum repolist all" 명령어를 이용해 현재 활성화 된 리포지터리를 확인

이 외의 것들을 모조리 다른 디렉터리에 옮겨뒀으니 당연히 한 가지만 활성화가 되어있다.

 

 

패키지 설치 시 리포지터리가 본인이 임의로 설정한 "client"를 참조하는 것을 확인

ftp를 통해 내부 서버에 있는 패키지를 받아오는 과정이다.

'Linux_System' 카테고리의 다른 글

[Linux]Process(1)_ps  (0) 2022.11.05
[Linux]Software_Compile  (0) 2022.10.31
[Linux]Basic_Command(2)  (0) 2022.10.10
[Linux]Basic_Command(1)  (0) 2022.10.06
[Linux]LVM  (1) 2022.09.22

RAID(Redundant Array of Independent / Inexpensive Disks)

비휘발성 저장장치(HDD) 여러대를 병렬, 직렬형태로 연결하여 손실된 데이터의
복구를 가능하게끔 설계하는 구성 방식이다.
RAID 구성 방식으로는 몇 가지 다양한 방식이 있지만,
주로 사용되는 방식은 RAID 0, RAID 1, RAID 5, RAID 1 + 0 방식이 있다.

 

● RAID 0 (Disk Striping)

자료출처 : https://commons.wikimedia.org

RAID 0 방식의 경우 데이터 복원은 되지 않지만,
디스크의 헤드와 암(arm)이 늘어나게 되는 것이니 데이터 처리의 속도가 빨라진다는 장점이 존재한다.
이렇게 하나의 데이터를 분산시켜 처리하는 Disk Striping이라고 한다.

● RAID 1 (Mirroring and Duplexing)

자료출처 : https://commons.wikimedia.org

데이터 복원이 가능한 방식의 RAID 구성으로, 두 개의 디스크를 사용한다고 했을 때
Disk 0에 데이터를 저장하게 되면 Disk 1 에도 동일한 데이터가 저장되어 백업이 되는 방식이다.
추가가 된 디스크에는 같은 용량의 정보가 저장되기 때문에 용량 증가의 효과는 없다.
주로 중/소 조직에서 사용되며, 이를 Mirroring 이라고 한다.

● RAID 5 (Stripe with Parity)

자료출처 : https://commons.wikimedia.org

데이터 복원이 가능한 RAID 구성으로, 세 개 이상의 디스크를 필요로 하며,
Parity bit 를 사용해서 데이터를 복구할 수 있다는 특징이 있는 구성방식이다.
Odd Parity(홀수), Even Parity(짝수)로 설정(Default == Odd Parity)할 수 있으며 비트를 계산하여
오류의 여부를 확인해서 복원 시켜주는 것(사진첨부)

Even Parity bit로 오류를 식별

 

● RAID 1 + 0 (Striping + Mirroring)

자료출처 : https://commons.wikimedia.org

RAID 1(Striping)RAID 0(Miroring) 을 합친 구성방식으로
데이터의 신뢰성과 처리속도의 향상을 목적으로 사용된다.

● RAID 5 실습

RAID 5를 구성할 하드디스크 3개를 추가

 

fdisk 명령어로 추가된 3개의 디스크를 "Linux raid auto" 형식으로 파티션 진행

 

파티션 후 바로 포맷이 아닌, 파티션된 디스크를 "mdadm" 명령어로 RAID로 묶어준 후 포맷을 진행

 

ext3 형식으로 파일 시스템 포맷을 진행

 

저장공간이 3GB가 아닌 2GB로 표시되는 것을 보아, RAID 5 구성이 되었음을 확인

 

마운트포인트에 RAID 구성이 된 하드디스크를 마운트

 

RAID 디스크 삭제 전 마운트 포인트에 파일을 생성(** 사진 우측하단 확인)

 

디스크 하나가 유실 되었음에도 저장된 파일이 손상되지 않음을 확인(** 사진 우측하단 확인)



'Linux_System' 카테고리의 다른 글

[Linux]Basic_Command(1)  (0) 2022.10.06
[Linux]LVM  (1) 2022.09.22
[Linux]Disk_Quota  (1) 2022.09.19
[Linux]DNS_Basic  (1) 2022.09.09
[Linux]Remote_access  (0) 2022.08.26

DNS(Domain Name System)

우리가 흔히 구글링을 하러 구글 웹 사이트에 접속할 때, 123.123.123.123 ... 식의 ip주소를 입력해 

웹 사이트에 접근하는 경우는 거의 없다. 이렇듯 복잡한 ip주소 대신 사람이 이용하기 편하게 변환을 해주는 시스템을 말한다.

** 주소변환은 단방향이 아닌 양방향

 

ip 주소로 google.com에 접속하는 모습

 

우리가 '네이버'에 접속한다고 가정했을 때에는 DNS 서버가 www.naver.com 의 ip주소를 찾아서 연결시켜주어야 하는데,

이름풀이(name resolution)의 순서는 local hosts file -> domain DNS server -> global DNS server 순으로 진행된다.

이 때, 주소 검색창에 입력한 www.naver.com  <--- 처럼 도메인에 포함된 호스트가 표시된 주소를

FQDN(Fully Qualified Domain Name)이라고 한다.

 

우분투 게스트머신의 hosts 파일

DNS 점검도구로는 nslookup, dig, /etc/network, /etc/resolv.conf ... 등이 필요하다.

 

nslookp 실행화면
dig 실행화면

'Linux_System' 카테고리의 다른 글

[Linux]RAID  (0) 2022.09.20
[Linux]Disk_Quota  (1) 2022.09.19
[Linux]Remote_access  (0) 2022.08.26
[Linux]Boot_basic  (0) 2022.08.26
[Linux]System_basic  (2) 2022.08.24

부트로더(Boot Loader)

Linux에서는 부팅 과정을 핸들링하는 boot loader가 있는데, GRUB / GRUB2를 이용한다.

이는 리눅스 초기의 부트로더 LILO(LInux LOader)의 단점을 보완하여 개발된 것.

LILO : 하드디스크의 물리적인 위치를 기점으로 부팅 

GRUB : 파일명과 커널이 위치하고 있는 파티션을 기점으로 부팅

CentOS7의 GRUB2 부트로더의 모습

** kernel version(3.x)부터는 GRUB2 를 사용한다.

 

 

사용자 전환(Shift User)

일반 사용자에서 root사용자로의 사용자전환 시 사용하는 명령어 'su'의 의미이다.

일반 사용자의 홈 디렉토리는 /home/%username% 이고,

관리자 root의 홈 디렉토리는 /root 이다.

 

[사용자전환 시 옵션에 따른 특이사항]

su (root) : 현재 작업위치가 /home/%username% 이라고 가정 시, 현재 경로에서 사용자만 root로 전환

su - (root) : 현재 작업위치 /home/%username% 에서, 사용자도 root로 전환 및  작업위치 또한 root의 홈 디렉토리로 변경

 

** 홈 디렉토리는 해당 사용자가 작업할 때 모든 파일 등이 저장되는 장소이다.

외부에서 %username% 호스트로 vnc, telnet, ssh 등의 방법으로 Credential(Username + Password)

입력 후 원격 접속 시, 해당 %username%의 홈 디렉토리로 연결된다.

 

 

원격접속(Remote Access)

 원격에서 Linux 서버에 접속하는 방법으로는

telnet : 평문장

ssh : 암호화 문으로 전송

vnc : 그래픽모드

rlogin : 텍스트로 전송 (보안상의 이유로 근래의 시스템에서는 r~ 접속을 금지한다)

등이 존재한다.

 

이 때, 암호화를 사용한 원격 접속은 주고받은 데이터들이 hash함수로 인해 암호화되어서

패킷분석 툴, 일반적인 분석 소프트웨어로는 문장을 해석할 수 없다.

telnet을 이용한 원격접속 패킷을 wireshark로 캡처

 

위와 같은 조건으로 ssh를 이용한 원격접속 패킷을 wireshark로 캡처

이처럼 평문장과 암호화의 차이를 직접 확인해볼 수 있다.

 

 

<<추가적인 정보>>

** 서버 프로그램에 ~d가 붙으면, daemon이라는 서버에서 백그라운드로 실행되는 서비스(프로세스)이다.

'Linux_System' 카테고리의 다른 글

[Linux]Disk_Quota  (1) 2022.09.19
[Linux]DNS_Basic  (1) 2022.09.09
[Linux]Boot_basic  (0) 2022.08.26
[Linux]System_basic  (2) 2022.08.24
[Linux]Virtual_Machine  (0) 2022.08.23

가상머신(Virtual Machine)에 대해서

일반적인 사용자(User)의 입장에서 가상머신(VM)이란,

하나의 물리적인 머신에 여러 실습용, 연구용, 테스트용 ... 등 머신을 설치,

일반적인 PC에는 설치할 수 없는 UNIX, Solaris, MacOS-X ... 등의 운영체제를

설치할 수 있다는 점에서 의미가 있다.

(좌) : Mac 기반 PC의 VMWare Fusion / (우) : Windows 기반의 VMWare Work Station

이때, 외부컴퓨터(내가 사용하는 운영체제 Windows10,11..., MAC OS ...등)를 호스트 머신,

가상머신(Virtual Machine)에 설치되는 운영체제를 보고 게스트 머신 이라고 칭한다.

게스트 머신들은 하나의 파일로 취급이 되기 때문에, 얼마든지 복사, 삭제가 가능하고

호스트 머신의 CPU type에 종속적이지 않다. 

 

** 가상머신의 종류로는 대표적으로 VMware, VirtualBox, VirtualPC / M1,2 MacOS 기준 현재로써는 Parallels **

** VMware와 Citrix == 가상화 전문 운영체제 **

 

 

● 운영체제(Operating System)에 대해서

사전적인 의미에서의 '운영체제' 란 모든 하드웨어와 모든 소프트웨어를 관리하는 컴퓨터시스템의 

한 부분인 "실행 관리자" 라고 정의가 되어있다. (네이버 지식백과 참조)

추상적인 설명이긴 하지만 필자는 어디선가 들었던 내용인 "사용자가 하드웨어를 편리하게 사용하기 위해

하드웨어와 사용자 사이에서 이 둘을 연결해주는 장치" 라고 쉽게 서술되어있는 내용으로 현재까지는 이해하고 있다.

 

 

● 리눅스(Linux)

블로그 포스팅하는 기간동안 주로 다뤄보고 알아 볼 운영체제로써의 대략적인 설명이다.

리눅스의 가장 대표적인 특징으로는 오픈소스로써 소스코드가 공개되어 있다.

리눅스가 무료 운영체제여서 유료 운영체제보다 열등하다고 생각이 될 수 있지만,

리눅스는 기술적으로 거의 완벽한 운영 시스템이라고 한다.

리눅스 커널을 사용하는 운영체제, 이 이상의 설명까지는 추후 리눅스 관련 전문지식이 

충분히 갖춰진 후에 수정하도록 하겠다.

 

리눅스의 배포판으로는 --- 

● 데비안(Debian) 계열 : Debian, Ubuntu, Kali, BackTrack ...

● 레드햇(RedHat) 계열 : RHEL, CentOS, Fedora, Rocky ...  

● 슬랙웨어(Slackware) 계열 : SuSE,  Vector ...

이 외로도 리눅스는 말 그대로 오픈소스 운영체제이기 때문에, 다양한 배포판을 가지고 있다.

** 위 쪽에 나열된 리눅스의 경우 대중적으로 잘 알려진 리눅스 **

 

https://kkslinuxinfo.wordpress.com/2015/12/01/linux-distributions/

 

 

유닉스(UNIX)

다른 운영체제와 달리 연구와 학문적인 목적의 환경에서 개발된 운영체제.

다중 사용자(Multi-users)와 다중 작업(Multi-tasks) 이 가능한 운영시스템으로,

지난 수십년간 대학과 연구소, 데이터 센터, 기업체(Enterprise) 등지에서 사용했다.

유닉스는 복잡하긴 하지만 유연함이 있기에 사용자들이 쉽게 시스템을 수정해서 다른버전으로 만들 수 있었다.

따라서 어느 목적의 어느 환경에서도 적합한 최적화된 시스템이 될 수 있었다.

** 이러한 속성을 가지고 태어난 운영체제가 리눅스이다 **

AT&T, 벨 연구소(Bell Lab)의 Ken Thompson, Denis Ritchie 가 1969년 개발했다고 공식되어 있지만,

원래 UNIX 운영체제 자체가 연구를 위한 시스템 개발에서 시작되어 실제 운영체제 설계에는

많은 연구원 및 개발자가 함께했을 것이라고 한다.

 

상용 UNIX의 종류 --

● Solaris, HP-UX, AIX ...

 

'Linux_System' 카테고리의 다른 글

[Linux]Disk_Quota  (1) 2022.09.19
[Linux]DNS_Basic  (1) 2022.09.09
[Linux]Remote_access  (0) 2022.08.26
[Linux]Boot_basic  (0) 2022.08.26
[Linux]System_basic  (2) 2022.08.24

예습 복습 학습을 위한 기술 블로그

 

+ Recent posts