ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [산대특] Software Compile, Patch, Samba, SMB, 파티션 포맷
    [산대특]클라우드기반 빅데이터 활용 정보 시스템보안과정/Linux 2024. 8. 21. 21:28

    0821

    Firmware(펌웨어)

    하드웨어와 소프트웨어의 합친 개념.

    프로그래밍이 되어 있는 BIOS(Basic Input Output System(소프트웨어))

    칩이 보드(하드웨어)에 들어가 있는 형태이다. 

     

    BIOS chip 안에 EE(E)PROM(Electronic Electric Erasable Programmable(변화할 수 있는 = 데이터를 집어 넣을 수 있다.) ROM(Read Only Memory) 기법으로 칩에 써줌으로써 작동되게 해준다. 

     

    Compile (컴파일)

    코드로 작성된 프로그래밍 언어를 컴퓨터가 인식할 수 있게 해주는 과정이다.

    이것을 수행하는 도구를 Compiler 라고 한다. 

     

    컴파일 순서 

    configure 로 환경 설정 > make 로 기계어로 변환 > make install 로 컴퓨터에 설치

     

    컴파일의 종류

    hardware compile Linux에서 Kernel 업그레이드에서 사용된다.
    software compile 소스코드를 변형해서 사용하게 한다.

     

     

    <머릿속에 정리하기>

    RedHat 계열에서는 프로그램을 설치할 때 RPM 소스코드를 다운받아서 사용

    YUM으로 소프트웨어 종속성 문제를 해결하면서 손쉽게 프로그램을 설치도 가능

    하지만,

    소스코드를 컴파일해서 정밀한 설정이나 특화된 설치를 할 수도 있다.

     

    보통 소프트웨어 컴파일

    ./configure --options(설치환경_지정) > make(기계어로_변환) > make install(시스템에_설치)

     

    ./configure 과정에서 해당 소프트웨어와 종속되는 패키지를 함께 설치하거나 다른 패키지와 연계해서 설치도 가능하다. 

    ex) (특정 경로를 지정해서 설치할 때)  ./configure --옵션으로 환경을 지정Ngin-X 웹 서버를 pcre, zlib, 그리고 openssl 등 종속 소프트웨어와 함께 설치하거나, 혹은 Apache 웹 서버를 PHP, MySQL과 연계해서 설치할 때 등에서 사용=> 최근에는 추후의 패치/업데이트 적용시 디폴트 환경이 변경되어져 있어 재작업의 불편함에 별로 권하지 않는다. 

     

     

    패키지 컴파일하기컴파일(Compile) 인터프리터(Interpreter)를 간단히 말하자면=> 공통적으로 사람이 작성한 프로그램을 컴퓨터가 이해해서 실행되게 하는 처리과정

     

    컴파일=> 고급언어인 Cobol, C나 C++, JAVA, Fortran 같이 사람이 작성한 (프로그래밍) 언어를 컴퓨터가 이해할 수 있는 기계어로 전환시키는 것

     

    인터프리터=> 고급언어가 아닌 (Visual) Basic이나 Scratch, Python, R과 같이 사람이 작성한 (프로그래밍) 언어를 컴퓨터가 이해할 수 있는 언어로 번역하는 것 (통역의 의미)

     

     

    소스코드 컴파일 과정

    ① 

    먼저 yum -y groupinstall "Development Tools"(OR yum -y install gcc-c++ 하나만 다운받아도 됨) 해서 컴파일에 필요한 패키지를 설치

     

    ② 

      1. cd Downloads 으로 옮겨서 Googling 을 통해 파일을 찾은 후 

      wget ~~ 식으로 소스파일을 다운받는다. 

     

      2. ls 로 다운받은 socat-버전.tar.gz 확인

      3. tar xvfz socat~~ 압축 풀고

      4. ls 하여 확인

     

      1. cd socat ~~ && ls 하여 README 파일을 필요하다면 확인한다. 

      이 곳에 configure 파일 등 이 있다면 컴파일하여 소프트웨어를 설치해야 한다. 

      => 초록색은 실행파일, 검정색은 일반파일, 파란색은 디렉터리

     

      2. cat README 파일을 먼저 읽어보는 습관이 좋다. 

      소프트웨어의 설치, 사용법, 버그 등에 관한 정보를 볼 수 있다. 

      그리고 중간 즈음에 

      Get the tarball and extract it: tar.gz 는 tarball 소스
      gtar xzvf socat.tar.gz
      cd socat-1.4
      ./configure
      make depend 
      make
      su
      make install # installs socat, filan, and procan in /usr/local/bin

      가 보이는데 이는 => 프로그램 컴파일 절차이다. 

     

    ④  

      1. ./configure 해서 디폴트로 설정

      2. make 하여 소스코드를 이진 기계어로 변환

      3. make install 이진 파일을 시스템에 설치 

     

    ⑤ socat -h  해서 관련된 명령어가 나온다면 제대로 설치된 것이다. 

     

     

    ./configure --help

    --enable/disable- 특정 함수의 사용/사용 안함 
    --prefix= 위치 지정  
    --bindir= 디렉터리 지정  
    --with/without- 써드파티 모듈 사용/사용 안함 등이 있다. 

     

    ex) ./configure --disable-ipv6 --enable-ssh --prefix=/usr/local/apache --enable-ssl --enable-mysql --with-ssl=/home/centos/openssl–0.9.8

     

    더보기

    소프트웨어 컴파일 실습

    [root@rocky10-1 rocky]# yum -y groupinstall "Development Tools"

    [root@rocky10-1 rocky]# wget http://www.dest-unreach.org/socat/download/socat-1.7.4.4.tar.gz

    [root@rocky10-1 socat-1.7.4.4]# tar xvfz socat-1.7.4.4.tar.gz 

    [root@rocky10-1 socat-1.7.4.4]# cd socat-1.7.4.4/

    [root@rocky10-1 socat-1.7.4.4]# ls

    [root@rocky10-1 socat-1.7.4.4]# cat README
    하면 내용이 잘 정리되어 있다. 

    configure 이 있다면 컴파일이 필요하다는 뜻이다. 

     

    한다면 이런식으로도 가능하다. 

    ./configure --disable-ipv6 --enable-ssh --prefix=/usr/local/apache --enable-ssl --enable-mysql --with-ssl=/home/rocky/openssl-0.9.8

     

    우리는 디폴트로 할 것이다.

     

    [root@rocky10-1 socat-1.7.4.4]# ./configure 
    하면 환경설정을 디폴트로 잡아 컴파일해준다. 

    [root@rocky10-1 socat-1.7.4.4]# make && make install

    [root@rocky10-1 socat-1.7.4.4]# socat -h
    하면 도움말이 쫘르륵 나온다. 
    쭉 나오면 잘 설치되었다는 뜻이다. 

     

     

     

     

    이번엔 

    아파치 웹 서버와 

    + apr(Apache Portable Runtime 실시간으로 아파치를 관리할 수 있는) 

    + apr-util 을 함께 설치할 것이다. 

     

    [root@rocky10-1 socat-1.7.4.4]# yum search httpd

    [root@rocky10-1 socat-1.7.4.4]# httpd -v
    y > y

    [root@rocky10-1 socat-1.7.4.4]# httpd -v
    Server version: Apache/2.4.37 (Rocky Linux)
    Server built:   Aug 12 2024 08:13:30

    버전이 보인다. 

     

    [root@rocky10-1 socat-1.7.4.4]# cd /usr/src/
    [root@rocky10-1 src]# 
    외부 모듈을 불러다쓸때 src 사용

    [root@rocky10-1 src]# yum -y install gcc-c++ pcre pcre-devel expat-devel

    5개의 패키지 설치 완료

     

    [root@rocky10-1 src]# ls
    annobin  debug  kernels  linux  linux-4.19.100  linux-4.19.100.tar.gz

    여기엔 아까 설치한 httpd 가 없다. 

    [root@rocky10-1 src]# echo $HOME 
    /root

    [root@rocky10-1 src]# pwd
    /usr/src

    [root@rocky10-1 src]# cd $HOME 

    [root@rocky10-1 ~]# pwd
    /root

    [root@rocky10-1 src]# wget https://archive.apache.org/dist/httpd/httpd-2.4.9.tar.gz

    [root@rocky10-1 src]# tar xvfz httpd-2.4.9.tar.gz 
    압축 풀기

     

    [root@rocky10-1 src]# ln -s httpd-2.4.9 httpd

    단축키와 비슷한. 소프트웨어 링크를 만들었다. 

    여기도 configure 가 있다. 

    && 는 앞에꺼 다하고 그 다음꺼 해~
    ; 이거는 (성공여부 상관없이) 순차적으로 이 명령어들을 실행해라

    [root@rocky10-1 httpd]# pwd
    /usr/src/httpd

    http 안에서 이걸 다운 받음
    [root@rocky10-1 httpd]# wget http://mirror.apache-kr.org/apr/apr-1.6.5.tar.gz

    [root@rocky10-1 httpd]# tar xvfz apr-1.6.5.tar.gz 

    압축 풀고 

    [root@rocky10-1 httpd]# rm -rf apr-1.6.5.tar.gz 

    [root@rocky10-1 httpd]# ln -s apr-1.6.5/ apr

    par 임 오타로 잘 못 만듦

    [root@rocky10-1 httpd]# pwd
    /usr/src/httpd

    나 소프트 링크 이름 잘 못 만들 ㅁㅋ

     

    [root@rocky10-1 par]# ./configure && make && make install

     

    다시 httpd 가서 

     

    [root@rocky10-1 httpd]# wget http://mirror.apache-kr.org/apr/apr-util-1.6.3.tar.gz 

    [root@rocky10-1 httpd]# tar xvfz apr-util-1.6.3.tar.gz 

    [root@rocky10-1 httpd]# rm -rf apr-util-1.6.3.tar.gz 
    [root@rocky10-1 httpd]# ln -s apr-util-1.6.3/ apr-util

    [root@rocky10-1 apr-util]# ./configure --prefix=/usr/src/httpd --with-apr=/usr/src/httpd/apr --with-apr-util=/usr/src/httpd/apr-util && make && make install

     

    [root@rocky10-1 apr-util]# cd ..

    [root@rocky10-1 httpd]# pwd

    /usr/src/httpd

    [root@rocky10-1 httpd]# cp -arp apr-1.6.5/ srclib/apr ; cp -arp apr-util-1.6.3/ srclib/apr-util

     

    cp --help

    so 는 소스라는 뜻 

    [root@rocky10-1 httpd]# ./configure --prefix=/usr/src/httpd --with-included-apr --with-included-apr-util --enable-module=so --enable-mods-shared=all --enable-so --enable-rewrite

     

    [root@rocky10-1 httpd]# make && make install

     

    [root@rocky10-1 httpd]# pwd

    /usr/src/httpd

    bin 디렉터리가 있다. 

     

    [root@rocky10-1 httpd]# cd bin && ls
    apu-1-config

    [root@rocky10-1 bin]# cd ..
    [root@rocky10-1 httpd]# pwd
    /usr/src/httpd
    [root@rocky10-1 httpd]# firewall-cmd --permanent --zone=public --add-port=80/tcp
    success
    [root@rocky10-1 httpd]# firewall-cmd --permanent --zone=public --add-port=443/tcp
    success

    [root@rocky10-1 httpd]# firewall-cmd --reload
    == 안됨

     

    실습이 중요한 것은 아니다. 이해가 중요하다. 

     

    그래서 firewall-config 를 깔려고 했는데 안되어서 일단

    [root@rocky10-1 httpd]# setenforce 0
    [root@rocky10-1 httpd]# service httpd start
    Redirecting to /bin/systemctl start httpd.service

     

    httpd 를 설치하면 디폴트로 /var/www/html 이외에

    /usr/local/apache/htdocs 에 index.html 파일을 넣어

    해커가 위치를 추측할 수 없고 Ransom Ware 등을 할 수 없어

    보안이 좋아진다. 

     

     

    Patch(패치)

    패치 파일은 이전 버전의 문제점/개선을 목적으로 개발한 파일. 

    ex) v1.0 버전을 안정적으로 사용하고 있는데, 전체적으로 v1.1 버전으로 업그레이드 하지 않고 v1.0 에서 필요한 부분만, 예를들어 A라는 부분만 v1.1 에서 별도로 빼서 파일로 만든 것을 패치파일이라고 한다. 

    (전체를 올리는 것은 upgrade)

    => 패칭 : 부분 업데이트

     

    업데이트(update) 일부 정보, 리포지터리 등을 새롭게 갱신
    업그레이드(upgrade) 완전히 상위 버전으로 올리는 것
    패치(patch) 부분적으로 올리는 것

     

    그리고

    패치는 단번에 확 올리는 것이 아닌 단계적으로 진행해야 한다. 

     

    만약 단번에 패치하려면

    역 패치 혹은 알렉콕스(*.ac) 패치 등의 기법을 사용.

     

    업데이트할 모든 패치 프로그램들의 압축을 풀어 /usr/src 에 차례로 두고 

    배치(batch) 파일 형태의 쉘 스크립트를 작성하여 낮은 버전부터 차례로 적용시키기.

     

    패치 파일 만들기 

    diff 명령어 사용. => 두 버전에서 차이나는 내용을 추출하여 패치 파일을 만들어 줌. 

     

    패치 파일 생성 'diff -urN 원본_파일 비교_파일' > ‘패치_파일.patch’
    패치 파일 적용 ‘patch 패치_될_파일’ < ‘패치_파일.patch’
    패치 적용 시 패치 레벨을 -p0, -p1, -p2, ...식으로 지정

     

    /home/centos/ABC/abc
    –p0 /부터
    -p1 /home부터
    -p2 /home/centos
    -p3 /home/centos/ABC
    - 는 해당 레벨을 제외하고 나머지를 의미

     

    더보기

    패치 실습

     

    [root@centos7-10-1 centos]# diff --help
    [root@centos7-10-1 centos]# cat > a.txt
    a
    a
    a

    Ctrl D 하면 저장하고 끝!

    [root@centos7-10-1 centos]# cat a.txt
    a
    a
    a

    [root@centos7-10-1 centos]# cat > b.txt
    a
    k
    k
    a

    [root@centos7-10-1 centos]# yum -y install patch

    a.txt 와 b.txt 에서 차이나는 부분만 ab.patch 파일로 저장시키겠다. 
    [root@centos7-10-1 centos]# diff -urN a.txt b.txt > ab.patch

    [root@centos7-10-1 centos]# cat ab.patch 
    --- a.txt 2024-08-21 12:10:18.156095804 +0900  # - 는 왼쪽의 파일
    +++ b.txt 2024-08-21 12:10:55.020095664 +0900  # + 는 오른쪽의 파일
    @@ -1,3 +1,4 @@
     a
    -a
    +k
    +k
     a

    [root@centos7-10-1 centos]# patch -p0 < ab.patch
    patching file a.txt

    버전이 약한 a 버전이 패치가 된다. 

    [root@centos7-10-1 centos]# cat a.txt 
    a
    k
    k
    a

    패치는 diff 라는 명령어만 알고 있으면 된다.  

     

     

     

    X Window System

    간단히 줄여서 X

    텍스트 운영체제에서 그래픽이 실행되도록 그래픽 인터페이스로 개발

    그래픽이 없는 서버는 최소한의 리소스로 실행되게 하고,

    서버에 접속하는 클라이언트의 리소스를 이용하여 그래픽을 볼 수 있게 하는 기법. 

    => X, X.org, X11, Xfree86 모두 해당

     

    서버와 클라가 연결 되기 전 SSH 터널링으로 클라이언트가 서버로부터 인증을 받게하여 통신 보호 가능. 

     

    X Display Manager(XDM)

    X 클라이언트와 X 서버 의 연결 세션을 시작하거나 끝내는 역할. 

     

    CentOS 의 GNOME 환경에서 로그인 창에서 

    이 창이 오리지널 XDM(X Display Manager)을 대체한 GDM(GNOME Display Manager)인데

    X 세션에 필요한 요소들을 시작하는 대신 GDM 이 X 세션에 필요한 요소들을

    GNOME 데스크탑 요소들로 프레임시킨다. 

     

    gdm GNOME의 그래픽 데스크 탑
    xdm 전통적인 Xorg에 의한 X11 그래픽 연결방식, 로그온 창을 담당.
    원격 로그온시 이 프로그램 필수.

     

     

    GDM 은 XDMCP(X Display Manager Control Protocol)를 사용해서 

    이미 X 서버가 실행되고 있는 세션 안에 또 다른 세션을 시작시킬 수 있다. 

     

    서버가 Runlevel 3으로 완전한 CLI 모드이어도 클라언트가 접속할 때 

    X11(forwarding)을 실행하면 클라이언트의 리소스를 사용해서 

    그래픽으로 연결될 수 있다. Vice Versa하다. (== 역도 가능하다)

     

    Xnest 라는 도구로 원격에서 타겟 머신에 그래픽으로 접속할 수 있다. 

    <= Remote Desktop 과 같은 기능

     

    현재는 Xming 이라는 도구를 사용

    더보기

    가상머신에서 원격 그래픽 실습

    [root@rocky10-1 linux]# yum -y install Xnest
    하니 된다. 

    [root@rocky10-1 linux]# xrandr

     지오메트리 해상도
    [root@rocky10-1 linux]# Xnest :2 -query 192.168.100.137 -geometry 1280x960

    2번 쓰는 이유는 1번은 자기 자신이여서 .

    [root@rocky10-1 linux]# Xnest :2 -query localhost

     

     

     

    우분투로 들어간다. 

    root@ubuntu10-1:/home/ubuntu# apt -y install openssh-server

    root@ubuntu10-1:/home/ubuntu# ufw allow 22/tcp
    Skipping adding existing rule
    Skipping adding existing rule (v6)

    root@ubuntu10-1:/home/ubuntu# gedit /etc/ssh/sshd_config

    29줄 아래 내용을 추가하고 저장

    root@ubuntu10-1:/home/ubuntu# service sshd start

    root@ubuntu10-1:/home/ubuntu# netstat -nltp | grep 22
    tcp        0       0 0.0.0.0:22              0.0.0.0:*               LISTEN      1167/sshd           
    tcp6       0      0 :::22                      :::*                       LISTEN      1167/sshd 

     

    윈도우즈에서 들어가보겠다. 
    Xming 설치하겠다. 

    Xming setup 클릭

    체크 빼고 피니쉬 

    그다음 폰트도 깔아준다. 
    Next 계속 해서 디폴트로 다 설치

     

    설치된 Xming 을 더블 클릭해주면

    이렇게 오른쪽 하단에 대기한 상태가 보인다. 

     

    이 상태에서 

    푸티를 킨다! 

    우분투 IP입력 후 open

     xclock 을 하면 우분투의 기능인 시계가 뜬다. 

     

     

    이것은 우분투의 것!

    이것이 Xming 이다!

     

     

    더보기

     

    KDE 실습

    [root@centos7-10-1 centos]# yum -y groupinstall "KDE Plasma Workspaces"
    [root@centos7-10-1 centos]# yum -y groupinstall "KDE Plasma Workspaces" --skip-broken

    연결이 끊어진 애는 skip 해라 

    [root@centos7-10-1 centos]# nano /etc/sysconfig/desktop

    reboot

     이렇게 추가가 잘 되고 들어가지면 성공한 것이다. 

     

    잘 안되면 

    [root@centos7-10-1 centos]# yum makecache ; yum update ; yum -y groups install "KDE Plasma Workspaces"

     

    이것도 해보자 

     

    더보기

    Windows 명령어 복사 

    Win7 가서 cmd 를 관리자 권한으로 실행

    xcopy 는 여러개 및 폴더 복사

    명령어로 공유 파일은 이렇게 할 수 있다. 

     

    C$의 $는 숨기는 파일 

     

    \\ 이나 // 는 원격지에 붙어있다라는 뜻 

     

    제어판에서 방화벽을 열고 

    공유 픽

    이런식으로 수정할 수 있다. 우선 이렇게 확인

     

    이 폴더에는 모두 들어올 수 있게 된다. 

     

    사용자를 만들 때에는 원래

     

    센토스 
    원래 이런식으로 추가해야하는데 

     

    명령어로 한다면

    이렇게 간단하게 해결이 가능하다. 

     

    이렇게 하면 관리자 패스워드가 바뀐다. 

    적용 안함. 

     

    Windows 에서 호스트_명을 NetBIOS 이름이라고 함. 

    http://www.naver.com 에서 http 는 사용하는 프로토콜, //는 원격지, www는 웹 서버 서비스.
    ==> 브라우저에서 file:///C:/ABC/abc/txt 식으로 파일을 지정할 때에는 /// 를 사용한다. 
      Linux 에서는 /home/rocky/… 식이고 Windows 에서는 C:\ABC\abc.txt 식으로 구별된다.

     

    Samba 는 Linux 와 Windows 에서의 파일과 프린터를 공유시켜 주는 도구

    NFS(Network File Sharing) 은 Linux 머신끼리의 파일을 공유시켜 주는 도구

     

    Linux 에서 

    Windows 시스템을 인식시킬 때 -type cifs 타입으로 해준다. <= 인식되면 /dev/sdb

    CD-ROM/DVS 를 인식시킬 때 -type iso9660 <= 인식이 되면 /dev/sr0

     

    Linux에서 

    Windows의 공유된 폴더를 mount ~ 해서 불러 올리거나 
    smbclient ~식으로 해서 연결시킬 수 있다.

     

    더보기

    위 실습에 이어서 Samba 실습

    [root@centos7-10-1 centos]# yum -y install samba-client samba-common

     

    [root@centos7-10-1 centos]# mkdir /lin_shared

    [root@centos7-10-1 centos]# mount -t cifs //192.168.100.144/win_shared /lin_shared
    Password for centos@//192.168.100.144/win_shared:  ******(centos)

    윈도우 ip 넣어주고 하면 된다 !!

     

    그러고 확인해보면 
    win 에 있던 내용을 볼 수 있다. 

    만약 여기다 파일을 만들어야 겠다 하면

    하고 Win7 로 가본다. 

     

    잘 나와있다. 

    이렇게 공유해도되고 

     

    또 하나 방법은 

    이렇게 하는 방법!

    여기서는 FTP 명령어를 쓰면된다. 
    !는 현재 디렉터리 

     

    ls 는 shared 파일의 ls 이다. 

    smb: \> !touch linx.txt
    smb: \> !ls
    ab.patch  b.txt    Documents  linx.txt Pictures  ROOT      Videos
    a.txt   Desktop  Downloads  Music Public   Templates
    smb: \> get/put 으로 올리거나 내려받을 수 있다. 

    smb: \> put linx.txt
    putting file linx.txt as \linx.txt (0.0 kb/s) (average 0.0 kb/s)

    암튼 put get 을 쓰면서 올리고 내리고 할 수 있다. 

     

    Linux의 파일 시스템 (각 디렉터리 설명)

    /home 
    일반 사용자들의 홈 디렉터리로써 사용자가 생성되면 해당 사용자의 디폴트 작업 디렉터리가 된다. 
    예를 들어서 paul이라는 사용자가 생성되면 /home/paul이 paul 사용자의 홈 디렉터리가 된다. 
    홈 디렉터리는 사용자가 파일 등을 작업 한 뒤 별도로 저장장소를 지정하지 않고 저장하면
    자동으로 저장되는 곳이다. 그리고 외부에서 SSH, Telnet 등으로 paul이 연결하면
    자동으로 연결되는 지점이기도 하다.
    /bin
    시스템을 운영하기 위한 쉘과 명령어 도구들의 들어있는 곳으로써 
    시스템 관리자나 일반 사용자가 실행할 수 있는 명령어들이 주로 들어있는데 
    cat, chmod, date, env, ls, mkdir, rm, touch, vi, ... 등이다.
    /sbin
    시스템을 운영하기 위한 명령어 관리 도구들이 들어있는 곳으로써 
    백업과 복원 등 시스템 관리 명령어들이 들어있으므로 일반 사용자들이 접근 하지 못하게 해 둘 필요가 있다. 
    여기에는 ifconfig, reboot, shutdown, mount, fsck, mkfs, iptables, ...같은 명령어들이 들어있다.
    /lib 
    프로그램들이 사용하는 재사용 가능한 프로그램 모듈들이 들어있는 곳으로써 
    시스템에 있는 어느 프로그램을 실행할 때 필요한 공유 라이브러리들이 들어 있는 곳이다. 
    예를 들어 mysql과 PHP를 연동할 때 사용되는 sql_connector와 같은 라이브러리 파일이 들어있다. 
    /usr
    여러 시스템과 공유되는 프로그램, 구성 설정, 라이브러리와 헬프 파일들이 들어있는 곳으로써  
    일반 사용자들을 위한 대부분의 프로그램들이 들어 있는데 
    /usr/bin(여러 유틸리티와 응용 프로그램들, 명령어), 
    /usr/include(C언어의 헤더파일), 
    /usr/lib(/usb/sbin의 실행파일들을 위한 라이브러리, 여러 프로그램에 종속되어 사용되는 재사용 가능한 시스템 라이브러리들), 
    /usr/local(소스로 패키지를 설치하는  곳), 
    /usr/sbin(여러 시스템 관리 도구들), 
    /usr/share/man(각종 패키지 설명), 
    /usr/src(대부분 RPM과 소스파일), 
    /usr/X11R6(그래픽 관련 파일), ... 등이다. 
    /var 
    로그와 HTTP, FTP 등 외부에서 브라우저로 접속할 수 있는 지점으로 
    데이터베이스, 메일, 스풀 디렉터리와 같은 데이터들이 들어있다. 
    수시로 업데이트되는 파일이나 log, 웹에 관련된 html이나, php, ftp 디렉터리 등을 생성해 두는데 
    /var/log, /var/www/html,  /var/ftp, ...등이 있다. 
    /boot
    시스템 부팅에 필요한 커널, 초기 RAM 디스크, 그리고 grub(2)와 같은 부트로더가 들어있는 곳
    /etc 
    전반적인 시스템 구성 파일들이 들어있는 곳으로써 
    시스템이나 각종 프로그램들의 환경설정 파일들이 들어 있으므로 매우 중요한 곳이다. 
    시스템을 관리할 때 이곳을 백업해두고 수정해서 사용하는 일이 많은데 
    /etc/mtab, /etc/group, /etc/fstab/etc/inittab, /etc/passwd, /etc/services, /etc/shadow, 
    /etc/sysconfig/network-scripts/ifcfg-eth0, /etc/sysconfig/iptables, /etc/issue, ... 등이 있다.
    /lost+found  
    시스템 크래시(crash)나 전원 문제로 갑자기 시스템이 셧 다운되었을 때 
    시스템 체커에 의해 복원된 파일들이 들어 있는 곳이다. 
    부팅시 파일에 문제가 있어서 fsck 명령어로 복구할 때 사용되는 곳이기도 하다. 
    각 파티션마다 하나씩 존재한다. 지우지 말고 일반 용도로도 사용하지 않는 것이 좋다. 
    /media 
    CD/DVD나 USB 등 이동식 저장장치가 자동으로 마운트되는 디렉터리로써 
    외부 장치들이 시스템에 연결되면 자동으로 마운트되는 곳이다. 
    물론 별도로 /usb와 같은 디렉터리를 생성해서 마운트해도 된다.
    /misc 
    NFS 디렉터리가 마운트되는 디렉터리 (Network File System)
    /src 
    web, ftp나 cvs와 같은 서비스를 제공하는 시스템 데이터들이 들어있는 곳
    /mnt 
    NFS나 Samba와 같은 원격 디렉터리와 CD/DVD, USB와 같은 
    이동용 드라이브의 일시적 마운트에 사용되는 디렉터리로써 
    주로 Windows와 파일이나 디렉터리 호환을 위한 공유 디렉터리 장소로 사용된다.  
    /opt 
    써드파티 어플리케이션들이 들어있는 곳으로써
    주로 사용자가 추가 소프트웨어를 설치할 때 다운받아놓고
    압축을 풀고 설치할 때 사용되는 곳이다.
    /proc
    커널 설정을 가지고 있는 특수 파일로써 메모리에 저장된다. 
    가상 파일시스템으로 부르는데 실행중인 프로세스와 각 설정 값들을 CPU가 빠르게 참조해서 사용하게 한다. 
    보안에서 매우 중시하는 곳으로 /proc/sys/net/ipv4/ip_forward=1식으로 해서 패킷을 포워드시키는 등 
    여러 설정을 매우 빠르게 변경해서 시스템에 적용할 수 있다. 
    cat /proc/cpuinfo해서 CPU의 정보를 읽거나, cat /proc/partitions 해서 파티션의 정보를 읽을 수 있다. 
    여기에는 /proc/cupinfo, /proc/ meminfo, /proc/devices, /proc/dma, /proc/filesystems, 
    /proc/stat, /proc/interrupts, /proc/ioports, /proc/loadavg, /proc/modules, /proc/uptime, 
    /proc/version, ... 등의 파일과 bus, driver, netm irq, scsi, tty 등의 디렉터리가 있다.
    /dev
    커널이 제공하는 가상 장치나 시스템에 있는 하드웨어 장치 파일들이 들어있는 곳으로써 
    시스템에서 인식한 블록장치들이 들어있는데 각 장치는 파일로 인식되고 
    /dev/hdd0 OR /dev/sda(첫 번째 HDD), /dev/sdb(두 번째 HDD나 USB), 
    /dev/cdrom OR /dev/sr0(DVD),  /dev/tty0(첫 번째 콘솔), /dev/pts0(첫 번째 가상 터미널), ... 등이다.
    /selinux 
    SELinux 세팅을 변경하거나 표시하는데 사용되는 특수 파일이 들어있는 가상 파일시스템. 
    Linux의 접속 보안 레벨을 규정해 둔 곳
    /sys
    핫 플러그인한 장치들을 변경하거나 표시하는데 사용되는 특수 파일이 들어있는 가상 파일시스템. 
    이 디렉터리에는 시스템이 필요로 하는 파일들이 들어있으므로 특별한 경우가 아니라면 수정하지 않는 것이 좋다.
    /tmp
    시스템에 의해 주기적으로 삭제되는 임시 파일과 폴더들이 저장되는 곳으로써 임시로 파일을 만들고 삭제하는 곳이다. 
    Sticky bit 권한이 설정되어 있어서 root가 생성한 파일도 일반 사용자가 볼 수 있다.
    따라서 보안이 매우 취약한 곳으로 잘 관리해 둘 필요가 있다.

     

    더보기
    fdisk 실습[root@centos7-10-1 centos]# fdisk /dev/sda 
    Welcome to fdisk (util-linux 2.23.2).

    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.


    Command (m for help): l

     0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        

     1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-

     2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-

     3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-

     4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         

     5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    

     6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .

     7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   

     8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         

     9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     

     a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        

     b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      

     c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        

     e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            

     f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/

    10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b

    11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      

    12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      

    14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  

    16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    

    17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 

    18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto

    1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        

    1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            

    1e  Hidden W95 FAT1 80  Old Minix

     

    l 옵션으로 이것들을 볼 수 있다. 

     

    Linux의 파일 포맷 (시험에 많이 나온다. 한번쯤 바두기)

    minix
    이 시스템은 Linux에서 처음 사용한 파일시스템이고 64MB를 지원한다.
    ext2
    이 시스템은 2GB의 파일과 4TB의 HDD를 지원한다. 
    fsck 등으로 디스크를 검사하는 동안 다른 작업을 할 수 없다.
    ext3
    이 시스템은 커널 2.4부터 지원했는데 ext2에 저널링(journaling) 기능을 추가했다. 
    저널링 기능이 있는 ext3은 매우 안정적이어서 디스크 쿼타나 부팅 시스템에서는 
    아직도 차기 버전인 ext4보다 더 안정적으로 보기도 한다. 
    저널링이란 
    시스템의 전원 등이 갑자기 나가도 디스크의 무결성을 유지시키는 기법으로 
    시스템 로그에 있는 메타데이터(metadata: 데이터들의 정보를 가지고 있는 데이터)를 사용해서 
    저장하지 못했던 데이터를 복원해준다(아래 한글에서도 이런 기능이 있다). 
    ext4
    이 시스템은 커널 2.6부터 탑재되었고 16TB의 파일을 지원하고 1EB의 HDD를 지원한다. 64비트의 기억 공간 제한을 없애고 ext3의 성능을 향상시키면서도 하위 버전과 호환성이 있게 한 확장 버전이다. CentOS 6.5까지는 주로 이 파일시스템을 사용했다.
    VFAT, FAT16, FAT32, NTFS, 그리고 CIFS 이 시스템들은 전통적으로 Windows 운영체제에서 채택하고 있는 파일시스템이다. 
    vfat는 Linux에서 인식한 DOS(FAT16)이다. 
    FAT는 FAT16으로써 Windows 95에서 사용
    FAT32는 Windows 98/ME 등에서 사용
    NTFS는 Windows NT4.0 서버와 워크스테이션에서 사용
    Linux에서 Windows 하드디스크를 인식하고 하드디스크에 압축과 암호를 걸 수 있는 파일시스템으로 
    Windows 2000 서버나 Windows XP 이후부터는 NT5.0으로 불리기도 한다.
    CIFS는 Linux에서 인식하는 Windows 폴더의 파일시스템으로 Samba가 이를 사용
    iso9660 이 시스템은 Linux가 인식하는 CD/DVD-ROM의 표준 파일시스템
    BTRFS와 XFS BTRFS((BetTeR File System) 파일시스템들은
    CentOS 7부터 디폴트로 사용되는 파일시스템인 XFS(eXtended File System)과 더불어
    안정성, 속도, 최대 16EB 지원 등을 장점으로 하고 있다.

     

    더보기

    파티션 포맷 실습

    USB 를 물리고 이렇게 연결 

    sda 과 sdb 로 파티션 되어 있다. 

    하나는 / 이고 boot 이고 

    설치할 때에는 / 와 swap 만 있으면 된다.

     

    현재 sdb 가 새로 들어옴. == usb

    sdb1 은 파티션이 하나로 되어 있다.

     

    [root@centos7-10-1 centos]# fdisk -l

    내용을 보인다. 

     

    [root@centos7-10-1 centos]# lsblk

     

    ls 보여라 blk 왕창 블록

     

    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

    sda               8:0    0   40G  0 disk 

    ├─sda1            8:1    0    1G  0 part /boot

    └─sda2            8:2    0   39G  0 part 

      ├─centos-root 253:0    0   35G  0 lvm  /

      └─centos-swap 253:1    0    4G  0 lvm  [SWAP]

    sdb               8:16   1  3.8G  0 disk 

    └─sdb1            8:17   1  3.8G  0 part /run/media/centos/2008-4E70

    sr0              11:0    1  4.4G  0 rom  /run/media/centos/CentOS 7 x86_64 

     

    sdb 드라이브 이름 sdb1 파티션 이름

    sr0 DVD 가 물려있다. 

     

    [root@centos7-10-1 centos]# fdisk /dev/sdb

    Command (m for help): d

    Selected partition 1

    Partition 1 is deleted

     

    Command (m for help): w

    이래야 변경사항이 기록된다 == 저장



    [root@centos7-10-1 centos]# fdisk /dev/sdb

    Welcome to fdisk (util-linux 2.23.2).

     

    Changes will remain in memory only, until you decide to write them.

    Be careful before using the write command.



    Command (m for help): n

    Partition type:

       p   primary (0 primary, 0 extended, 4 free)

       e   extended

    Select (default p): p

     

    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    Partition number (1-4, default 1): 1

    볼드 섹터 크기 지정
    First sector (2048-7864319, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-7864319, default 7864319): 
    Using default value 7864319
    Partition 1 of type Linux and of size 3.8 GiB is set

    Command (m for help): w

     

    [root@centos7-10-1 centos]# umount /dev/sdb1

    [root@centos7-10-1 centos]# mkfs -t ext4 /dev/sdb1

    [root@centos7-10-1 centos]# mkdir /USB
    [root@centos7-10-1 centos]# mount /dev/sdb1 /USB/

    lost+found 위에 내용 있음

    [root@centos7-10-1 centos]# touch /USB/LINUX.txt
    [root@centos7-10-1 centos]# ls /USB/
    LINUX.txt  lost+found

     

    시스템에서 빠져서 안나온다.

    파티션에는

    Primary 와 extended 가 있는데, extended 안에 logical partition이 있다. 

    HDD 는 4개의 Primary partition을 가질 수 있다. 

    primary 를 4개 가능 == 운영체제 4개 가능 

     

    Linux 에서는 데이터 저장 영역을 생성해주는 partition 은 fdisk /dev/sdb 식으로 해주고
    이어서 분할된 파티션에 데이터를 저장할 준비를 시키는 format 은 

    mkfs -t ext4(OR mkfs.ext4) /dev/sdb1 (파티션이 된 다음 포맷이다) 해주면 된다.


    이어서 이 /dev/sdb1 을 Linux 시스템에서 mkdir /USB 식으로  

    mount point (마운트 포인트 되는 지점)을 생성한 뒤 
    이어서 mount /dev/sdb1 /USB 하면 외부 저장장치  
    /dev/sdb1 이 

    Linux 시스템의 /USB 로 마운트 되어서 사용할 수 있게 된다. 
    => 이 마운트를 자동으로 한다면 /etc/fstab 에 설정해두면 자동으로 마운트 된다!!!

연의 취업 도전기.