post by WHITEHATS
웹기반 정보보안 엔지니어 과정 160212 여덟번째강의
4.Linux 부팅
•(1단계) POST 동작
- 시스템의 기본적인 하드웨어 이상유무 점검
- 시스템의 하드웨어 정보 수집
•(2단계) Boot Loader(GRUB) 동작
- 하드 디스크에서 커널 정보를 읽어서 메모리에 적재
- 커널에 시스템 제어 권한을 넘김 (커널: 운영체제의 구성요소)
•(3단계) 커널 동작
- 운영체제 동작 시작
- 하드웨어 점검 완료
- 내부 자료구조 초기화
- 부가적인 커널 모듈을 하드디스크에서 메모리로 적재 (스와퍼 프로세스(PID 0)를 호출해서 이런 여러가지 동작들을 수행, 실제 운영체제를 실행할수 있는 init 프로세스를 동작시킨다.)
•(4단계) init 프로세스 동작 (총 8가지 -> 일반적으로 0~6번까지 사용한다.) (운영체제를 정의 해주는 프로그램)
- 커널에 의해 생성되는 첫 번째 프로세스(init) 실행
-- init 프로세스 = PID 1
- init 프로세스 정보 확인
--> 프로세스 할때 다시 배운다!
4.Linux 종료
•Linux shutdown
- 운영중인 시스템의 정기점검, H/W나 S/W변경 및 추가, 기타 관리 작업 등을 위해필요 함
•주의
- 접속중인 사용자에게 종료를 공지하여 작업을 마무리하게 해야 함
- 운영중인 서비스를 안정하게 종료해야 함
- 하드 디스크를 갱신하여 파일 시스템의 무결성을 유지해야 함 (무결성 - 데이터를 보호하고, 항상 정상인 데이터를 유지하는 것)
•하드 디스크 동기화(sync)
- 하드 디스크 I/O(입/출력)의 효율성을 높이기 위해 버퍼를 이용하므로 종료 시 버퍼상의 데이터가 디스크에 반영되지 않으면 데이터 손실이 발생 함
4.시스템 종료 및 재부팅 명령어 (shutdown)(예약 종료 기능 됨, 메세지 전달 기능 또한 있음.)
•용도
- 시스템 종료 및 재부팅
•사용법
- [root@localhost ~]# shutdown [option] [time] [message] (Time에 now명령 주면 즉시종료)
OPTION
-k(knock) 종료를 알리는 경고 메시지 전송(실제 종료 되지 않음)
-h Shutdown 후 종료(halt) 실행 (하드디스크 동기화를 시키고 종료시킨다.)
-r Shutdown 후 재부팅(reboot) 실행
-f (fast reboot)재부팅 시 fsck(fast system check)를 수행하지 않음 (속도는 빠르나 안정성이 떨어짐..)
-c 예약되어 있는 shutdown을 취소(시간 지정은 안되지만 사용자에게 메시지 전공은 가능 함)
옵션 -k 실습~
루트하고 일반사용자 계정을 각각 켜준다. 관리자계정으로 쉘을 따면 #모양, 일반사용자는 $모양으로 표시된다.
shutdown -k 10 "종료예정"을 쳐주면 일반사용자 한테 공지가 된당~
-k 옵션만 줬기 때문에 메세지만 날아감.. 종료는 안됨..
제일 많이 쓰는 정상 종료는 -h를 많이 사용함..
shutdown -h 10 "10분 후 종료" , 실제로 10분 후 종료 된다.
1분씩 지날때마다 메세지를 출력해 보여준다.
종료 명령 취소도 가능하다!!
관리자에서 컨트롤 + C를 이용해 종료 명령을 해제할수 있다.
일반사용자에서도 관리자명령을 획득해서 종료 명령을 해제할수 있다.
su 입력 후 root사용자 비밀번호 입력!!
일반사용자가 root권한을 획득 하고 종료를 해제 한모습니다. 관리자에서도 종료 해제가 뜬다. (shutdown -c "메세지" 로 메세지를 넣을수 있다.)
4.시스템 종료 및 재부팅 명령어 (poweroff / halt) (일반적으로 잘 사용되지 않는다는...)(예약 종료 기능이 없다, 메세지 전달 기능 또한 없다.)
•용도
- 시스템 종료
•사용법
- [root@localhost ~]# poweroff [option]
- [root@localhost ~]# halt [option]
•차이점
- 하드디스크 동기화 유무
- poweroff는 sync로 동기화 하고 사용해야 함
4.시스템 종료 및 재부팅 명령어 (reboot)(예약 종료 기능이 없다, 메세지 전달 기능 또한 없다.)
•용도
- 시스템 재시작
•사용법
- [root@localhost ~]# reboot [option]
4.시스템 종료 및 재부팅 명령어 (init)
•용도
- run level 선택
-- run level : 시스템의 동작 방식을 정의해 놓은 것
•사용법
- [root@localhost ~]# init [option] [run level]
Run Level
0 종료 모드 하드디스크 동기화 후 종료 (halt종료)
1 단일 사용자 모드(single mode) 시스템 복구 (윈도우의 안전모드를 single mode라고 생각해도 된당)
2 다중 사용자 CLI NFS/X-window를 제외한 부팅 (다중 사용자 = 멀티유저)
3 다중 사용자 CLI X-window를 제외한 부팅
4 X 사용하지 않음(사용자 정의 가능)
5 다중 사용자 GUI X-window환경으로 모든 서비스 포함 (지금 우리가 사용하는 Run Level)
6 재부팅 모드 시스템 재시작
5.Linux 디렉터리 (모든 운영체제 단위가 파일단위이다.)
•절대경로
- 최상위 경로를 기준으로 현재 파일이나 디렉터리의 위치를 나타내는 경로
- 사용자의 현재 위치와는 관계 없음
(/test/test1/aaa.txt를 만들었다..)
([root@localhost ~ test1]# -> root계정으로 test1폴더에 있다. aaa파일을 실행시키고 싶다면..)
([root@localhost ~ test1]# cat /test/test1/aaa.txt)
•상대 경로
- 현재 위치를 기준으로 파일이나 디렉터리의 위치를 나타내는 경로
- 사용자의 현재 위치에 따라 경로가 달라 짐
1번 (/test/test1/aaa.txt를 만들었다..)
(aaa.txt파일 실행시키고 싶엉..)
([root@localhost ~ test1]# cat ./aaa.txt)
(. 이 현재 경로를 말한다.)
2번 (/tes-bbb.txt/test1/aaa.txt를 만들었다..)
(bbb.txt파일 실행시키고 싶음..)
([root@localhost ~ test1]# cat ../bbb.txt)
(..는 상위폴더에 있는 파일을 지시한다.)
•Linux 파일 및 디렉터리 특징
- 대/소문자 구분
- 파일과 디렉터리 이름 중복 불가
- 디렉터리의 기본 크기 = Block(4096byte) (윈도우에서는 클러스터, 리눅스에서는 블록)
•Linux 디렉터리 구조
- FHS(Filesystems Hierarchy System) : Tree 형태의 계층적인 구조
- 최상위 디렉터리 : /
•/
- 최상위 경로
•bin
- 사용자를 위한 명령어 저장
- ls, ps, mv, cat, chmod, date, mount …
date명령어가 bin디렉터리에 포함되있는걸 알수 있따.
하지만 ls 입력하면 디렉터리 안에 date명령어는 없지만.
bin이나 sbin에 있는 명령어는 바로 명령어만 입력해도 실행이된다.
그래서 자주 실행되는 명령어는 bin이나 sbin에 추가 시켜놓으면 편한다.
•boot
- 부트로더 및 부팅을 위한 파일 저장
•dev
- 시스템의 장치(devices) 파일 저장
- 시스템의 모든 장치가 파일로 표현
- udev daemon에 의해 관리 됨
•etc (완전중요함!!)
- 시스템 및 프로그램의 환경설정 파일
- 계정 파일, 네트워크 설정 파일 등 시스템의 주요 관리 파일
- 백업 필요
•home
- 사용자 계정의 홈 디렉터리 기본 경로
- 계정명으로 홈 디렉터리가 생성 됨
일반사용자계정에서는 홈디렉터리로 시작함.. pwd를 입력해서 경로 확인할수 있음..
•lib
- 시스템 프로그램 실행에 필요한 공유 라이브러리
- 변경 및 삭제하지 않는 것이 좋음
•media
- 플로피, CD-ROM, DVD 등 이동식 디스크가 mount 됨
•mnt
- 파일 시스템 임시 mount 경로
•opt (서비스 프로그램)
- 추가 S/W 설치 경로
•proc
- 실행중인 프로세스, CPU, memory등의 시스템 정보가 가상 파일로 저장
- 대부분의 파일이 읽기 전용
- 쓰기 가능한 파일의 설정의 변경하여 커널의 기능을 변경할 수 있음(Kernel parameter = 윈도우 레지스트리)
•root
- root 계정(관리자)의 홈 디렉터리
- root 계정으로만 접근이 가능 함
일반 사용자 계정으로 접근 시도했으나 안됨 역시나..
•sbin
- system 관리용 명령 저장
- 시스템 수정, 복구 작업에 사용되는 명령어
- 일반 사용자들의 접근을 제한해야 함
- ifconfig, reboot, shutdown, mount, fsck, mkfs …
•srv
- Service 디렉터리
- 주로 FTP, HTTP, CVS 등의 데이터가 저장 됨
•sys (윈도우의 System32폴더랑 같다고 생각...)
- system 동작에 필요한 파일 저장
- 변경 및 삭제하지 않는 것이 좋음
- 백업 해두는게 좋음.
•usr
- 일반 사용자들을 위한 S/W 설치 위치
•var
- 수시로 업데이트 되는 파일들이 위치 함
- log파일
- http, mail, dns 등이 동작할 때 필요한 데이터가 저장되기도 함
•lost + found (저널링 기술)
- 부팅 시 파일 시스템에 문제 발생 시 fsck(file system check) 명령으로 복구할 때 사용 됨
- 한 파일 시스템당 하나만 존재 함
5.I-node(파일의 정보)
•I-node(Index node) (ext파일시스템에서 사용하는 정보단위, 파일하나당 아이노드 하나씩 있음ㅇ_ㅇ)
- 파일이나 디렉터리의 모든 정보를 가지고 있는 정보 집합체
- 사용자 프로세스가 커널을 통해 디스크에 있는 데이터에 접근하기 위해 커널은 현재 사용중인 파일에 대한 자료구조를 유지해야 함
- 커널에서 관리하는 파일 시스템과 관련된 중요한 자료구조
- 한 I-node 당 크기 : 64kbyte
•I-node list table
- 하나의 파일 시스템에서 파일이나 디렉터리들의 I-node 정보 모음
•I-node Number(inumber)
- I-node가 I-node list table에 등록될 때 가지게 되는 I-node 식별 번호
•Directory list table
- 파일의 이름과 매칭되는 I-node정보 모음
•File System Layout
hard disk record -> MBR
파티션에 Boot Blocks 에는 부트로드 정보가 있다.
파티션에는 블록그룹으로 연속된 정보를 가지고있다. 블록그룹 (Boot Block, Super Blocks, I-node list, Data)
그림 잘못됨 Meta data <-> Data Block Reference 이 순으로 되어있음 (I-node list table)
•I-node 자료구조
-- 파일 종류
-- 권한
-- 소유자 ID
-- 소속 그룹 ID
-- 크기(byte 단위)
-- 시간(최근 사용시간(파일 생성시간), 최근 수정시간(파일 내용 변경), I-node 최근 수정 시간(해당파일의 아이노드가 수정된 시간))
-- 파일 링크 수(Direct Pointer, =Counter) : 해당 I-node 를 참조하고 있는 횟수
-- 디스크의 물리적인 주소(Single(주소따라가면 데이터가 바로있다), Double(주소 한번따라가고 list확인하고 한번더 따라가야지 데이터가 있다.), Triple Pointer(주소를 3번 따라가야지 데이터가 있다.)-> 데이터의 사이즈가 크기 때문에 하나의 공간에 저장하기 힘들다.(큰용량의 주소를 지정하기 위해서)
•I-number 확인
- 파일
-- [root@localhost ~]# ls -i
파일 앞에있는 숫자가 아이노드 숫자임..
- 파일 시스템
-- [root@localhost ~]# df(disk free) -i
이렇게는 아이노드 넘버밖에 안나온다.!
아이노드 전체를 볼수 있는 명령어 -> stat 파일명
아이노드 정보를 모두 확인할수 있다.
5.Linux 파일
•파일 종류
- 일반 파일
b 블록형 특수 장치파일(주로 디스크, /dev/sda 등)
C 문자형 특수 파일(주로 입/출력에 사용, dev/console 등)
d(/) 디렉터리 파일
P(=) 파이프 파일
S 소켓 파일
L(a) 심볼릭 링크파일 (바로가기용 파일)
•확장자의 의미
- 윈도우와 다르게 특별한 의미가 없음
- 보통 프로그램 개발 언어 등을 표시
•일반 파일
-기본적인 대부분의 파일
-원하는 형식의 데이터 저장이 가능하며 각 사용자들이 소유 권한을 가짐
-데이터베이스, 동영상, 음악, 실행 파일 등
•디렉터리 파일
-특수 파일
-연관 있는 파일들을 하나의 그룹으로 만들어 저장하도록 구분되어 있는 공간
-하나의 inode를 할당 받으며 파일 이름과 inumber를 매칭하는 항목의 리스트로 구성되어 있음
--현재 디렉터리 : .
--상위 디렉터리 : ..
•디바이스 파일
-하드웨어를 하나의 파일로 인식하여 관리 함
--블록 디바이스 파일 : 디스크, 테이프 등의 저장 장치
--문자 디바이스 파일 : 터미널, 프린터 등의 출력 장치
-키보드 디바이스 파일에서 데이터를 읽음, 사운드 디바이스 파일에 소리파일을 보내면 스피커로 출력됨
•디렉터리 파일
- 원본 파일과 동일한 inode에 연결되는 링크
- 링크 파일을 수정하면 원본파일의 내용도 함께 수정 됨
- 다른 파일시스템에서 링크 불가능
- 원본과 동일한 inode를 사용 함
- 링크 카운트가 증가 함
•링크 파일
- 파일과 디렉터리의 관리를 편리하게 하고자 하는 목적으로 사용 됨
- 상위 디렉터리가 많은 경우 파일명만 이용하여 접근
- 긴 파일명의 파일을 자주 참조할 경우 다른 디렉터리에 연결
- 해킹에 이용될 수 있으므로 주기적으로 확인하여 불필요한 링크 파일은 삭제하는것이 좋음
- 심볼릭 링크 방식을 더 많이 사용 함
5.Linux 파일 - 링크파일 (원본파일에 아이노드를 공유해서 쓰냐 안쓰냐의 차이)
•심볼릭(소프트) 링크 (아이노드를 새로 가져감)(별도의 아이노드가 생성, 아이노드의 데이터 블럭은 원본데이터의 데이터블럭)
- 원본 파일의 위치정보를 가지는 단축 아이콘
- 윈도우의 바로가기와 비슷한 개념으로 특정 파일을 가리키고 있는 파일
- 심볼릭 링크 파일을 변경해도 원본 파일에는 변화가 없음
- 다른 파일 시스템에서도 링크 가능
- 별도의 inode를 가지며 링크 파일이 가지고 있는 용량만큼 디스크의 공간을 차지 함
- 원본의 링크 카운트가 증가하지 않음
•하드 링크 (원본링크의 아이노드를 복사해서 같이 쓴다, 원본링크의 Counter(참조)의 횟수가 증가)
- 원본 파일과 동일한 inode에 연결되는 링크
- 하나의 파일에 여러 개의 이름을 지정해서 사용하는 개념
- 다른 파일 시스템에서 링크 불가능
- 원본과 동일한 inode를 사용 함
- 원본의 링크 카운트가 증가 함
5.파일 및 디렉터리 명령어 (pwd)
•용도
- 현재 디렉터리 위치 확인
•사용법
- [root@localhost~]# pwd
5.파일 및 디렉터리 명령어 (cd)
•용도- change directory
- 디렉터리 이동
•사용법
- [root@local host ~]# cd [이동할 디렉터리의 상대경로 또는 절대경로]
5.파일 및 디렉터리 명령어 (ls)
•용도
- 지정한 디렉터리의 파일 목록 출력
•사용법
- [root@localhost ~]# ls [option] [디렉터리의 상대경로 또는 절대경로]
-1은 한 줄에 한 파일씩 출력(오타수정)
-a/-A, -i, -l/-n, -R 잘씀 ㅇ_ㅇ
숨길파일 만들때 파일이름 앞에 . 하나만 붙이면 숨김파일로 됨 ㅇㅇ
-a로 숨김파일 표시
ls -l 명령어로 상세정보를 볼수 있고 뒤에 a.txt를 붙이면 그 파일의 상세정보만 볼수 있다!!!!
mkdir test로 폴더 만들어주고 확인!!, 상세정보를 보니 d로 디렉터리라는 것을 알수 있다.
빨간줄 10자리가 권한정보, 그 다음 1이 링크참조 수(기본적으로 링크 카운터는 1), 앞에있는 root는 파일 소유자 정보, 그 다음 root는 그룹 소속 정보, 그다음 46422는 용량, 그 다음은 수정시간, 그 다음은 파일 이름
용량차이를 알수 있어!!!!
ls -a -l = ls -al 과 같다!!!!
현재 root에 숨김파일 상세정보를 확인할수 있다.
-h 는 문자열 하나 --help는 단어!!
ls -R 명령어를 주면 하위 디렉터리까지 볼수 있다.
5.파일 및 디렉터리 명령어 (mkdir)
•용도
- 디렉터리 생성
•사용법
- [root@localhost ~]# mkdir [option] [디렉터리 이름]
상위경로가 없어서 디렉터리 생성안됨 ㅇㅇ
-p를 사용해서 만들어주면 디렉터리 생성됨!!
mkdir /a/b/study{1,2,3,4,5}
b디렉터리 안에 study(1~5)번까지 5개 디렉터리 생성할수 있다.
5.파일 및 디렉터리 명령어 (rmdir) -> 안쓰는 명령어 (디렉터리를 초기에 잘못만들었을때만 삭제, 거의 디렉터리 안에 파일이 있기때문!)
•용도
- 빈 디렉터리 삭제
•사용법
- [root@localhost ~]# rmdir [option] [디렉터리 이름]
•주의 사항
- 무조건 빈 디렉터리만 삭제 됨
c디렉터리 삭제!
b는 빈디렉터리 아니라서 삭제 안됨;;
5.파일 및 디렉터리 명령어 (file)
•용도
- 파일의 종류를 자동으로 판단하여 출력
•사용법
- [root@localhost ~]# file [option] [파일 이름]
a.txt와 install.log의 파일의 파일의 종류를 확인할 수 있다.
5.파일 및 디렉터리 명령어 (cat)
•용도
- 지정된 파일 내용을 표준 출력으로 확인
•사용법
- [root@localhost ~ ]# cat [option] [파일 이름]
•redirection을 이용한 파일 생성
- [root@localhost ~ ]# cat > [파일이름]
- [root@localhost ~ ]# [내용 입력]
- [root@localhost ~ ]# [ctrl + d : 저장 후 종료]
실습.
5.파일 및 디렉터리 명령어 (head)
•용도
- 파일의 처음부터 지정된 줄까지 출력(위에서부터)
- default : 처음부터 10행
•사용법
- [root@localhost ~ ]# head [option] [파일 이름]
5.파일 및 디렉터리 명령어 (tail)
•용도
- 파일의 마지막부터 지정된 줄까지 출력(아래서부터)
- default : 마지막부터 10행
•사용법
- [root@localhost ~ ]# tail [option] [파일 이름]
기본적으로 10줄..
tail -n 3 messages 입력하면 3줄 보여준다.
tail -n 3 -f messages 입력하면 실시간으로 보여주기 때문에 프롬프트 반환이 안된다!!!
GUI환경에 root로 로그인하면 실시간으로 메세지가 작성된다.
중지는 컨트롤 + c
5.파일 및 디렉터리 명령어 (more) -> less랑 비슷하지만 거의 more를 쓴다.
•용도
- 많은 출력 결과를 화면 사이즈에 맞게 한 페이지씩 출력
- | (파이프)를 이용하여 다른 명령의 결과를 처리할 수 있음(예 : ls –l /etc | more)
•사용법
- [root@localhost ~ ]# more [+number] [파일 이름]
more message입력@!
이것저것 key눌르면서 확인해봅시당!~@
ls -al 을 치면 etc디렉터리 안에 있는 파일들이 쫙하고 다 나오는데 파이프 more를 뒤에 넣어줌으로써 한페이지씩 출력하게 만들어줄 수 있다.
5.파일 및 디렉터리 명령어 (less)
•용도
-많은 출력 결과를 화면 사이즈에 맞게 한 페이지씩 출력
- more와 동일한 기능 제공
•사용법
- [root@localhost ~ ]# less [+number] [파일 이름]
5.파일 및 디렉터리 명령어 (touch) (파일 생성 총 3가지 echo, cat, touch)
•용도
- 파일이 존재 할 때 : 지정된 파일의 시간 정보를 갱신 함
- 파일이 존재하지 않을 때 : 0byte의 빈 파일 생성
•사용법
- [root@localhost ~ ]# touch [option] [파일 이름]
echo로 a텍스트 파일을 수정했더니 수정값과 변경값이 바뀜..
파일의 최근 사용시간만 변경했으므로, 데이터에는 수정이 없다. 그래서 access랑, change만 바뀜 ㅠ
5.파일 및 디렉터리 명령어 (rm) (rmdir을 사용하지 않고 rm을 거의 사용함)
•용도
- 파일 및 디렉터리 삭제
•사용법
- [root@localhost ~ ]# rm [option] [파일 이름]
일일히 물어보네... ㅡㅡ
rm 별칭에 -i가 있어줘서 그렇슴..
5.파일 및 디렉터리 명령어 (cp)
•용도
- 원본 파일을 대상 파일로 복사
•사용법
- [root@localhost ~ ]# cp [option] [원본 파일] [대상 파일]
-l, -s 링크파일을 복사파일로 만들수 있당 근데 (ln)이라는 명령어를 전용으로 쓴다.. ln은 뒤에 나옴여..
5.파일 및 디렉터리 명령어 (mv)
•용도
- 파일의 이름변경
- 파일을 다른 경로로 이동
•사용법
- [root@localhost ~ ]# mv [option] [원본 파일] [대상 파일]
5.파일 및 디렉터리 명령어 (ln)
•용도
- 링크 파일 생성
•심볼릭 링크 사용법 -> 하늘색으로 보임~
- [root@localhost ~ ]# ln -s [option] [원본 파일] [심볼릭 링크 파일]
아이노드의 값이 변경됬다. 그리고 링크값은 1로 보이는 것을 확인.
•하드 링크 사용법
- [root@localhost ~ ]# ln [option] [원본 파일] [심볼릭 링크 파일]
하드링크 링크값이 2로 바뀜..
a.txt를 지우면 하드링크는 남아있고, 링크의 값이 2에서 1로 떨어진다.
심볼릭링크는 대상파일이 사라졌기 때문에, 이용할 수 없다.
하얀모자의 whitehat
'▶ 웹기반 정보보안 과정 > Linux' 카테고리의 다른 글
160215 아홉번째강의 - 1 (0) | 2016.02.16 |
---|---|
리눅스(Linux) - 리다이렉션 (0) | 2016.02.14 |
160211 일곱번째강의 -3 (0) | 2016.02.11 |
160211 일곱번째강의 -2 (0) | 2016.02.11 |
160211 일곱번째강의 -1 (0) | 2016.02.11 |