전체 글 663

02-04-02 셸 프로그래밍

셸 프로그래밍 셸 프로그래밍의 개요 셸 프로그래밍의 개념 특정 목적을 달성하기 위한 셸 스크립트를 작성하는 활동을 셀 스크립팅이라 한다. 셸 스크립트: 셸에서 제공하는 여러 명령어를 나열한 일종의 파일 주기적인 백업, 시스템 모니터링 등 반복 작업을 자동화 문법이 간단하여 쉽게 작성 셸 스크립트의 형식 첫 번째 줄에는 해당 스크립트가 사용할 셸을 '#!'를 통해 명시 두 번째 줄부터는 일련의 명령어 기술 셸 스크립트 실행 별도 프로세스로 실행하는 방법과 현재 셸에서 바로 실행하는 방법이 있다. 별도의 프로세스로 실행하기 위해서는 스크립트 파일의 퍼미션에 실행 권한을 주고 실행한다. 실행할 때 셸의 인자로 스크립트 파일 경로를 넘겨서 직접 실행할 수도 있다. 현재의 셸에서 바로 실행하기 위해서는 sourc..

02-04-01 셸(Shell)

02-04 셸(Shell) 셸의 이해 셸의 개념 셀의 일반적 정의 Shell은 사용자가 커널의 서비스 기능을 사용할 수 있도록 하기 위한 통로 또는 사용자 인터페이스 Shell은 명령줄 인터페이스 방식(CLI: Command-Line Interface)과 그래픽 유저 인터페이스(GUI: Graphical User Interface)으로 구분된다. 리눅스에서는 주로 CLI방식을 사용한다. 리눅스 셸의 역사 1971년, 최초 버전의 유닉스에 도입된 최초 유닉스 셸은 캔 톰프슨(Kenneth Lane Thompson)이 작성한 톰프슨 셸(Thompson shell)이다. 1977년, 유닉스 버전 7에 포함된 기본 유닉스 셸은 본셸(Bourne shell, sh)이며 AT&T 벨 연구소의 스티븐 본(Stephe..

02-03 X 윈도우

X 윈도우 X 윈도우의 개념 X 윈도우의 정의 'X 윈도우'란 플랫폼 독립적으로 작동하는 GUI 환경을 구현하기 위해 서버 클라이언트 구조를 기반으로 X 프로토콜을 통해 디스플레이 장치에 윈도우를 그려준다. 디스플레이의 윈도우에 마우스 및 키보드 등 입력장치를 통한 사용자와의 상호작용을 가능하게 하는 플랫폼으로 유닉스 및 리눅스의 윈도우 시스템이다. X 윈도우의 역사 1984년, IBM과 MIT, DEC 공동 '아데나 프로젝트'를 통해 밥 쉐이플러(Bob Scheifler)와 짐 게티스(Jim Gettys)가 처음 개발하였다. 1986년 밥 쉐이플러가 누구나 자유롭게 X를 사용하고 배포할 수 있도록 오픈소스화하기 위한 디자인을 수행하였다. 1987년 오픈소스 프로젝트하에 'X11'을 발표했다. 1988년..

02-02-03 파일 시스템의 이해

파일 시스템의 이해 파일 시스템의 개요 파일 시스템이란 디스크에 사용자의 데이터를 효율적으로 저장하기 위한 파일과 디렉터리를 조직화한 체계 디스크에 포맷 작업을 한다는 의미는 빈 종이에 글씨 쓰기 좋게 줄을 긋는 것과 비슷하다. 포맷은 디스크를 일정한 크기로 분할하고 주소를 설정하여 사용자의 자료를 조직적으로 보관할 수 있게 한다. 사용자의 데이터는 파일 단위로 관리가 되며 디스크에 저장할 때에는 레코드 단위 혹은 블록 단위로 저장된다. 각 파일은 디렉터리에 속하여 그룹을 생성할 수 있어 많은 파일을 체계적으로 관리할 수 있다. 파일 시스템은 파일 입출력 시 발생하는 오류에 대하여 복구할 수 있는 기능도 제공한다. 디스크 입출력은 메모리에 비해 속도가 느리기 때문에 파일 시스템은 캐시 기능을 제공하여 디..

02-02-02 Systemd

systemd 소개 systemd의 개요 정의 systemd는 이전 버전의 리눅스에서 사용하였던 SysV init 시스템을 대체하기 위한 시스템 및 서비스를 위한 매니저 역할을 수행한다. 레드햇사의 Lennart Poettering과 Kay Sievers가 처음 개발하였고, LGPL 라이선스이다. 특징 기존의 SysV init 스크립트와 호환성을 유지하도록 설계되었다. 부팅 시 시스템의 서비스들의 병렬로 시작할 수 있는 기능을 제공 데몬이 필요한 순간 실행하여 시스템 리소스를 절약할 있는 온디맨드 액티베이션(ondemand activation) 기능을 제공한다. 구체적으로 D-Bus, 소켓, 장치, 경로 기반 온디맨드 액티베이션 기능을 제공한다. 서비스 간 의존성을 고려하여 서비스의 시작 순서를 제어할 ..

02-02-01 리눅스의 구조

리눅스의 구조 부트 매니저 부트 매니저의 개요 부트 매니저의 정의: 보조기억장치에 위치한 운영체제를 주기억장치로 로드하기 위한 프로그램으로 '부트로더'라고 함 부트 매니저의 동작 원리 시스템이 켜지면 BIOS는 디스크의 첫 번째 섹터(0번 섹터)인 부트 섹터에서 512바이트의 MBR(Master Boot Recoder)을 읽는다. MBR은 크기가 제한되기 때문에 IPL(Initial Program Loader)이라 불리는 부트로더의 일부가 먼저 실행된다. IPL은 파티션 테이블을 검사하여 부트로더의 나머지 코드의 위치를 알아내 실행한다. 리눅스 부트 매니저 프로그램은 LILO(Linux Loader), GRUB(Grand Unified BootLoader), GRUB2가 있다. 부트 매니저의 종류 LIL..

02-01 리눅스와 하드웨어

리눅스와 하드웨어 하드웨어의 이해 컴퓨터의 구성 요소 중앙처리장치(CPU: Central Processing Unit) 외부에서 정보를 입력받아 컴퓨터 프로그램의 명령어들을 해석하고 연산하여 결과를 반환하는 컴퓨터 제어 장치 Register와 연산장치(ALU: Arithmetic-Logic Unit) 그리고 제어장치(Control Unit)로 구성 주기억장치(Main Memory) CPU가 처리할 명령어와 데이터를 저장하기 위한 컴퓨터 하드웨어 메모리는 휘발성 메모리인 RAM(Random Access Memory)과 비휘발성 메모리인 ROM(Read Only Memory)으로 분류 RAM은 DRAM(Dynamic RAM)과 SRAM(Static RAM)으로 나눔 ROM은 저장 데이터를 변경할 수 없는 M..

윈도우즈에서 리눅스를 사용, 리눅스 에뮬레이터 Cygwin

Cygwin(시그윈)은 완전한 형태의 리눅스 에뮬레이터입니다. 원래 시그너스 솔루션스가 개발한 자유 소프트웨어 모음집으로, 마이크로소프트 윈도우즈에서 POSIX기반 소프트웨어를 구동 및 개발할 수 있는 환경을 제공합니다. 시그윈은 다양한 패키지들을 설치하는 능력을 갖추고 있습니다. 표준 리눅스 명령들뿐만 아니라 여러 윈도우즈 고유 명령도 실행할 수 있다는 점은 Git Bash와 비슷합니다. Cygwin 설치 설치 파일은 해당 프로젝트 웹사이트(https://www.cygwin.com)에서 내려받을 수 있습니다. 처음 설치하는 경우는 [Install from Internet]을 선택합니다. 이미 다운로드 받은 패키지들이 있는 경우는 세 번째 항목 [[Install from Local Directory]를 ..

Linuxpia 2022.01.08

해킹학습을 위한 실험 VM 설치

해킹학습을 위한 실험 VM 참고 도서: 핸즈온 해킹 파일 다운로드 주소 해킹 대상으로 사용할 가상 서버를 만듭니다. 이 가상 서버의 이름을 'KaliLab'으로 하겠습니다. 해킹 주체로 쓰일 가상 서버 'Kali Linux' 설치에 대해서는 먼저 포스팅했습니다. 위 VM을 만드는 방법과 비슷하게 진행되지만, 한 가지 결정적으로 다른 것은 'KaliLab'은 가상디스크 없이 라이브CD로 사용될 것입니다. 이름은 'KaliLab', 폴더는 이전과 동일합니다. 종류는 'Linux', 버전은 'Linux 2.6 / 3.4 / 4.x (32-bit)'입니다. 64-bit이 아닙니다. 메모리는 '1024MB'입니다. 가상하드디스크는 추가하지 않습니다. 이 VM은 '라이브 모드'로 실행됩니다. 실제 컴퓨터라면, 리눅..

Linuxpia 2022.01.07

버츄얼박스에 Kali Linux VM 만들기

Kali Linux 설치 준비 버츄얼박스에 가상의 하드디스크를 만듭니다. 이 가상의 디스크에 칼리 리눅스가 설치되는 것입니다. 버츄얼박스 설치에 대한 포스팅은 먼저 소개했습니다. 리눅스를 설치하기 위해서는 CD드라이브에 ISO이미지를 마운트해야 합니다. 칼리 홈페이지에서 받은 파일을 비어 있는 '컨트롤로: IDE'에 올려야 합니다. 즉 CD드라이브에 CD를 삽입하는 것입니다. 여기서는 파일을 찾아 연결하면 됩니다. 아래 그림은 ISO 이미지 파일이 마운트 된 상태네요. 이제 버츄얼박스를 가동시키면 이 파일에 의해 부팅됩니다. 부팅하기 전에 네트워크 설정을 확인합니다. '어댑터1'은 공유기 역할을 하는 네트워크입니다. 이것을 통해 외부 인터넷이 연결되지요. 반드시 'NAT'으로 지정되어야 합니다. 다음은 ..

Linuxpia 2022.01.06