[Bandit] Level 2 → Level 3 Bandit: https://overthewire.org/wargames/bandit/bandit3.html 1. Level Goal 다음 단계로 넘어가기 위한 비밀번호는 "spaces in this filename"이라는 이름을 가지며 홈디렉토리 안에 위치하고 있다 2. Commands you may need to solve this level ls cd cat file du find 💡 Helpful reading material: Google Search for "spaces in filename" 3. 개념 정리 및 풀이 방법 ls 명령어 및 cat 명령어는 이전 단계에서 정리했으므로 생략한다 [Bandit] Level 0 → Level 1 [Ban..
Chapter 07. 파일 및 레코드 잠금 리눅스 프로그래밍 원리와 실제 - 창병모 교수님 7.1 파일 잠금 1) 파일 및 레코드 잠금의 필요성 - 프로세스 사이에 데이터는 한 프로세스가 파일에 쓴 내용을 다른 프로세스가 읽음으로써 데이터를 주고받을 수 있음 - 문제점 한 프로세스가 파일 내용을 수정하는 동안에 다른 프로세스가 그 파일을 읽는 경우 두 개의 프로세스가 하나의 파일에 동시에 접근하여 데이터를 쓰는 경우 - 잠금(lock): 한 프로세스가 그 영역을 읽거나 수정할 때 다른 프로세스의 접근을 제한 잠근된 영역에 한 번에 하나의 프로세스만 접근 특히 레코드 쓰기(혹은 수정)를 할 경우 대상 레코드에 대해 잠금을 해서 다른 프로세스가 접근하지 못하게 해야 함 접근하는 프로세스 A가 대상 레코드에 ..
Chapter 06. 파일 시스템 리눅스 프로그래밍 원리와 실제 - 창병모 교수님 6.1 파일 시스템 1) 파일 시스템 구조 - 부트 블록(Boot block) 파일 시스템 시작부 위치, 첫 번째 섹터 차지 유닉스/리눅스가 처음 시작될 때 사용되는 부트스트랩 코드가 저장되는 블록 - 슈퍼 블록(Super block) 전체 파일 시스템에 대한 정보 저장 파일 시스템 내의 총 블록 수, 사용 가능한 i-노드 개수, 사용 가능한 블록들을 나타내는 비트 맵, 블록의 크기, 사용 중인 블록 수, 사용 가능한 블록 수 - i-리스트(i-list) 각각의 파일을 나타내는 i-노드들의 리스트 한 블록은 약 40개 정도의 i-노드 포함 - 데이터 블록(Data block) 파일의 내용(데이터)을 저장하기 위한 블록 2)..
Chapter 05. 파일 입출력 리눅스 프로그래밍 원리와 실제 - 창병모 교수님 5.1 시스템 호출 1) 컴퓨터 시스템 구조 - 하드웨어는 CPU, 메모리, 저장장치, 주변장치 등으로 구성 - 운영체제는 하드웨어를 운영 관리하는 시스템 소프트웨어이며 유닉스/리눅스의 경우 커널(kernel)이 하드웨어를 운영 관리 - 운영체제 서비스 프로세스 관리 파일 관리 메모리 관리 통신 관리 주변 장치 관리 2) 시스템 호출 - 시스템 호출(system call): 운영 체제가 제공하는 서비스에 대한 프로그래밍 인터페이스 - 시스템 호출은 커널에 서비스를 요청하기 위한 프로그래밍 인터페이스로 응용 프로그램은 시스템 호출을 통해서 커널에 서비스를 요청 가능 3) 시스템 호출 구현 주요 자원 시스템 호출 파일 open..
# 파일 속성 ls -l * ls 명령 사용시 파일 이름이 > 빨간색: 바이너리 > 파란색: 디렉터리 > 초록색: txt파일 또는 x권한이 있는 파일 # 파일 유형 디렉터리 d 일반적인 파일 - 블록 디바이스 b 문자 디바이스 c 링크 l * 'b'나 'c'는 디바이스(장치)를 뜻함 ls -l /dev | more > 실행해서 확인해보면 b나c가 많이 보일 것 > b는 블록 디바이스를 의미하며 대표적인 것으로 하드디스크, 플로피 디스크, CD/DVD 등의 저장장치가 있음 > c는 문자 디바이스를 의미하며 대표적인 것으로 마우스, 키보드, 프린터 등의 입출력장치가 있음 > l은 링크를 뜻함. 링크란 Windows의 '바로 가기 아이콘'과 비슷한 개념으로 연결된 파일을 의미하며 실제 파일은 다른 곳에 존재함..