ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [리눅스마스터] 1. 리눅스 실무의 이해 / 2. 리눅스 시스템 관리
    자격증 2022. 8. 2. 01:12

     

     

    클라우드 컴퓨팅

    클라우드 컴퓨팅 정의

    - 사용자가 필요한 작업을 제시하면, 여기에 필요한 컴퓨팅 자원이 할당되어 작업하고 결과를 얻도록 해주는 것

     - 기존의 그리드 컴퓨팅, 분산 컴퓨팅, 유틸리티 컴퓨팅, 웹 서비스, 서버 및 스토리지 가상화 기술과 소프트웨어 등 기존의 기반 기술들을 융합하여 하나의 커다란 구름과 같은 컴퓨팅 환경을 만드는 기술

    - on-premiss 방식 대신 클라우드 서비스를 많이 사용

     

    클라우드 컴퓨팅에서 제공하는 서비스

    - IasS(Infrastructure as a Service) : 서버, 네트워크, 스토리지, 메모리, CPU 등 가상 인프라를 빌려주는 서비스. OS, 미들웨어 등은 사용자가 직접 설치하고 관리하기 때문에 클라우드 서비스 중 가장 덜 의존적.

    - PaaS(Pltform as a Service) : 업무에 필요한 소프트웨어를 개발할 수 있는 환경을 클라우드에서 제공

    - SasS(Sortware as a Service) : 기업에서 사용하는 소프트웨어를 통째로 클라우드 서비스 사업자에게 빌려쓰는 개념

    - FaaS(Function as a Service) : 마이크로서비스의 일환으로 애플리에키션 개발 환경을 제공. 컴퓨팅을 수요에 따라 동적으로 제공. 서버의 존재에 대해 신경쓰지 않아도됨(serverless)

     

    리눅스의 기술적 특징

    스와핑(Swapping)

    - 프로그램 실행 시 메모리의 공간이 부족하면 가상 메모리를 설정하여 메모리와 하드디스크 사이의 데이터 교환을 통해 새로운 프로그램을 실행시킬 수 있게 한다.

    파이프(Pipe)

    - 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 받을 수 있는 프로세스간 통신 방식

    리다이렉션(Redirection)

    - 프로세스의 표준 입출력을 파일, 화면, 장치 등에서 입출력으로 받을 수 있도록 재 지정할 수 있는 매커니즘

    가상콘솔(Virtual Console)

    - 하나의 화면에서 여러개의 콘솔을 사용할 수 있는 기능 

    라이브러리

    - 운영체제 관련 기술 중 하드디스크 공간의 효율성을 높여준 기술

    동적 라이브러리

    - 메모리에 한 번 적재하고 나면 여러 프로세스가 공용으로 사용 가능

    - 실행 프로그램 크기가 작고 메모리를 효율적으로 사용 가능

    - 실행 속도가 느리고 배포에 제약이 존재

    정적 라이브러리

    - 실행 프로그램이 컴파일 될 때 링크되어 프로세스가 실행될 때 함께 메모리에 로드

    - 실행 속도가 빠르고 배포에 제약이 없음

    - 실행 프로그램 크기가 크고 프로세스마다 메모리 적재되어 메모리를 비효율적으로 사용

     

     

    오픈소스 라이선스(license)

    GPL(General Public License)

    - 소스코드를 용도에 따라 변경할 수 있음

    - 실행 복사본은 소스코드와 함께 판매하거나 소스코드를 무료로 배포해야 한다.

    - 변경된 프로그램 역시 소스 코드를 반드시 공개 배포해야 한다.

    - 변경된 프로그램 역시 똑같은 라이선스인 GPL 라이선스를 적용해야 한다.

    - GPLv1 : 소스 코드를 공개하지 않은 채 바이너리 파일만 배포하는 것을 막기 위해 사람이 이해하기 쉬운 코드를 같이 배포해야한다는 조건이 삽입

    - GPLv2 : 특허로 인하여 추가적으로 돈을 지불해야 하거나 소스 코드의 공개가 불가능하여 실행 바이너리 프로그램만 배포할 경우에 소스 코드 뿐 아니라 실행 바이너리 프로그램까지 배포할 수 없도록 보완하였다

    - GPLv3 : 소프트웨어 특허 대처법, 다른 라이선스와의 호환성, 원시 코드 구성 부분, 디지털 제한 권리 관련 내용 추가

     

    LGPL(Lesser GPL)

    - 자유 소프트웨어 뿐 아니라 독점 소프트웨어에서도 사용 가능

    - 소스코드 수정 시 라이브러리의 소스코드 제공해야 함

    - GPL 라이선스의 강력한 카피레프트 조건과 단순한 사용 허가를 위한 절충안

    - 자유 소프트웨어 뿐 아니라 독점 소프트웨어도 사용 가능하다.

     

    BSD(Berkeley Software Distribution)

    - 공개 소프트웨어 라이선스

    - 누구나 개작할 수 있고 수정한 것을 제한 없이 배포할 수 있다.

    - 수정본의 재배포는 의무사항이 아님. 2차적 파생물에 대한 원시 소스 코드의 비공개 허용

    - 소스코드를 공개하지 않는 상용 소프트웨어에서도 사용 가능

    - 수정된 소스 코드에 대한 공개나 어떠한 표시도 하지 않아도 된다

     

    MPL(Mozilla Public License)

    - BSD + GPL

    - 오픈 소스와 자유 소프트웨어 라이선스이다. 

    - 수정한 소스코드에 대해 공개 의무가 있다.

    - MPL 소스 코드와 다른 코드를 결합해서 만들면 MPL 코드를 제외한 다른 소스 코드는 공개하지 않아도 된다

    - Firefox, mozilla application suite, mozilla thunderbird

     

    Apache

    - 누구든 자유롭게 아파치 소프트웨어를 다운 받아 부분 혹은 전체를 개인적 또는 상업적 목적으로 이용할 수 있다.

    - 재배포 시에도 소스 코드나 수정한 소스 코드를 포함하여 공개할 필요가 없다

    - 재배포 경우 아파치 라이선스 2.0 포함시키고 아파치에서 개발된 소프트웨어임을 밝혀야 한다

    - Apache HTTP Server, Hadoop, Hbase, Tomcat 등

     

    MIT (Massachusetts Institute of Technology)

    - 라이선스와 저작권 관련 명시만 지켜주면 됨

    - 소프트웨어를 누구나 개작할 수 있고, 수정본의 재배포 시 소스코드 비공개 가능

    - X window system, jquery, node.js, rudy on rails

     

     

    리눅스 배포판

    SLS 

    - 최초 리눅스 배포판

    슬랙웨어(Slackware)

    - SuSE, Porteus, Vector Linux, Salix OS

    데비안(Debian)

    - dpkg 및 apt 라는 독자적인 패키지 관리 도구를 사용함

    - Knoppix, Corel, Lindows, Ubuntu, Linux Mint,  Elementary OS , Kali Linux, BackTrack

    레드햇(Red Hat)

    - RPM 및 YUM 패키지 관리 도구를 제공함

    - RHEL(Red Hat Enterprise Linux), CentOS, Fedora, Oracle Linux, Scientific Linux, Asianux, Mandriva Linux, Mandrake 등이 있다.

     

    시그널(signal) 

    특정 키가 들어왔을 때 인터럽트가 발생하여 운영체제가 프로그램을 제지한다.https://jhnyang.tistory.com/143

    시그널 이름 발생 및 용도
    SIGHUP(HUP) hangup 시그널; 전화선 끊어짐
    접속이 끊겼을 때 보내지는 시그널
    데몬 관련 환경 설정 파일을 변경시키고, 변화된 내용을 적용하기 위해 재 시작할 때 사용됨
    SIGINT(INT) interrupt 시그널; Ctrl + C; 실행을 중지
    키보드로 부터 오는 인터럽트 시그널로 실행을 중지시킴
    SIGQUIT(QUIT) quit 시그널; Ctrl + \
    사용자가 터미널에서 종료키를 누를 때
    SIGKILL(KILL) 무조건 즉시 중지
    SIGTREAM(TREAM) KILL 시그널이 전송되기 전에 전송
    잡히는 시그널이기 때문에 종료되는 것을 트랙할 수 있음
    SIGTSTP(TSTP) Ctrl + z
    실행 정지 후 다시 실행하기 위해 대기시키는 시그널
    SIGCONT로 재 실행 가능
    SIGSTOP(STOP) 터미널에서 입력된 정지 시그널
    SIGCONT로 재 실행 가능
    SIGCONT(CONT) Continue 의 약자
    SIGSTOP 에 의해 정지된 프로세스를 다시 실행시킬 때 사용

     

     

    X 윈도

    X윈도란

    - 네트워크 프로토콜에 기반한 그래픽 사용자 인터페이스 환경

    - 원격지의 X클라이언트를 다른 시스템의 X 서버에서 실행시킬 수 있다.

    - 디스플레이 장치에 의존적이지 않고 서로 다른 기종을 함께 사용할 수 있다.

    - 현재 리눅스를 비롯하여 유닉스 대부분이 X.org 기반의 X윈도 시스템을 사용하고 있다.

    구조

    - 클라이언트/서버 구조로 되어 있고, 서로간의 통신을 위해 X Protocol 을 사용한다.

    - X 서버는 그래픽하게 보여주는 하나의 시스템이다.

    - X 클라이언트는  X 서버 위에 동작하는 일종의 응용 프로그램이다.

    - X 윈도는 기본 구조가 네트워크 기반이기 때문에 로컬의 사용자가 키보드나 마우스로 입력하면 TCP 포트 6000번을 통해 전달되고, 관련 X 클라이언트 프로그램이 실행된다.

    - /tmp/.X11-unix/X0 라는 Unix Domain Socket을 이용하여 X서버와 X클라이언트가 통신한다.

    - 로컬 시스템뿐 아니라 원격의 호스트 간에도 응용 프로그램을 주고받을 수 있다.

    설치

    - 관련 패키지 그룹 검색

    # yum group list

    - 설치 가능한 데스크톱 목록 확인 후 설치

    # yum group install 'GNOME Desktop' 'KDE Plasma Workspaces' 'Server with GUI'

    실행

    - 부팅 시 X 윈도를 실행하는 방법 (graphical.target)

    - 텍스트 모드에서 실행하는 방법 (multi-user.target)

    #systemctl get-default

    #systemctl set-default TARGET_NAME

    startx

    - X 윈도를 실행시키는 스크립트. 최종적으로 xinit을 호출한다.

    # startx -- -depth 8 → 256 color 모드로 X 윈도를 실행시킨다.

    # startx -- -depth 16 → 하이컬러(16비트) 모드로 X 윈도를 실행시킨다.

    # startx -- :1 → 두 번째 X 윈도를 실행시킨다. CentOS 7 버전에서는 특별한 옵션 없이 startx 라고 입력해도 된다.

    설정변경

    - xrandr : 명령행에서 화면 크기 및 방향 등을 확인 및 변경하는 명령

    # xrandr → 현재 화면의 크기 정보를 출력한다.

    # xrandr -s 1024*768 → 화면의 크기(해상도)를 1024*768 로 변경한다.

     

    i-node (index-node)

    i-node란

    -리눅스 전용 특수 index

    - 전통적인 유닉스 계열 파일시스템에서 사용하는 일종의 자료 구조로 각각의 파일은 하나의 i-node를 할당받아 관리된다.

     

     

    fsck (filesystem check)

    fsck란

    - 파일을 검사하거나 수리해주는 명령어 

     

    저널링 파일 시스템 (Journaling File System)

    저널링 파일 시스템이란

    - 백업 및 복구 능력이 있는 FS(File System)

    - 기존 fsck 에 걸리는 시간을 단축하기 위해 데이터를 디스크에 쓰기 전에 로그에 데이터를 남겨 시스템의  비정상적인 종료에도 로그를 사용해 fsck 보다 빠르고 안정적인 복구기능을 제공한다.

     

    RAID 종류

    RAID 0(Stripe)

    - 두개 이상 디스크로 구성

    - 데이터를 나누어 저장하지만 중복 저장하지 않아 복구될 수 없음

    RAID 1(Mirroring)

    - 여러 디스크에 데이터를 완전히 복사하여 저장하는 방식

    - 디스크 장애 발생 시 복구가 가능하지만 비용이 많이 든다.

    RAID 2(Hamming Code ECC)

    - Hamming Code 를 이용하여 오류를 복구한다

    - 별도의 디스크에 복구를 위한 ECC(Error Correction Code) 를 저장한다

    RAID 3(Parity ECC)

    - Parity 정보를 별도 디스크에 저장한다

    - 1개의 디스크에 장애 발생 시 Parity 를 통해 복구가 가능하다

    - Parity 계산을 해야하며, 별도 디스크에 Parity 를 저장해야하기 때문에 Write 성능이 저하된다

    RAID 4(Parity ECC)

    - Parity 정보를 별도 디스크에 저장한다

    - 데이터는 데이터 디스크에 분산하여 저장한다

    - 한 개의 디스크에 장애 발생 시 Parity 를 통해 복구 가능하다

    - RAID 3과 동일하나 Parity 를 Block 단위로 관리하는 부분에 차이가 있다

    - 10GB 용량의 하드디스크 4개를 이용해서 RAID-5 를 구성했을 경우 실제 사용 가능한 용량은 30GB 이다

    RAID 5

    - Parity 를 분산하여 데이터 디스크에 저장한다

    - 안정성이 크게 향상된 버전이다

    - 최소 3개 이상의 디스크로 구성해야 한다

    - Parity 는 중복 저장하지 않는다

    - 쓰기 작업이 많지 않은 다중 사용자 시스템에 적합하다

    - RAID-0 의 단점인 결합 허용을 지원하지 않는 점과 RAID-1 의 저장 공간의 비효율성을 보완한 레벨로 디스크의 개수를 늘릴수록 저장공간의 효율성이 좋아진다

    RAID 6

    - 분산 Parity 가 적용된 RAID 5 의 안전성 향상을 위해 Parity 를 여러개로 나누어 저장한다

    - 장애가 여러 디스크에 발생되더라도 정상동작된다

    - 두개의 패리티를 사용하여 두개의 디스크 오류에도 데이터를 읽을 수 있고 최소 네개의 디스크로 구성해야 한다

    - 200GB 하드디스크 8개를 RAID-6 로 구성할 경우 가용 공간은 1.2TB 이다

    RAID 10(1+0)

    - 하드디스크 4개를 이용해서 디스크 2개를 먼저 미러링(mirroring)으로 구성하고 다시 스트라이핑(striping)하는 방식으로 구성하는 형태

     

     

    서브넷마스크

    개요

    - 네트워크를 분할하여 새로운 하위의 네트워크를 구성할 때 사용

    - 서브넷마스크 주소값을 255.255.255.0(==192.168.3.12/24) 로 설정하면 256개의 주소에서 2개는 네트워크 주소와 브로드캐스트 주소로 할당되어 실제 사용할 수 있는 주소는 254 개가 된다

    - Q. C 클래스에 속한 한개의 네트워크를 할당 받은 상태이다. 이 네트워크 대역을 사용하는 부서가 4 곳이라 4개의 서브넷을 구성하려고 한다

      A. 255.255.255.192

    httpd.conf

    개념

    - 아파치 웹 서버의 기본적인 설정을 담당하는 파일

    설정 파일 내부에서의 문법

    - ServerRoot "/etc/httpd" : 웹 서버가 설치된 디렉터리를 나타낸다.

    - ServerAdmin "root@mail.com"

    - ServerName "www.httpd.com:80" 

    - DocumentRoot "/etc/httpd" : 웹 문서가 위치하는 디렉터리를 나타낸다.

    userdir

    -userdir의 주 환경 설정 파일을 설정해줘야한다.

    - 아파치 웹 서버의 환경 설정 파일에서 일반 사용자의 웹 문서가 위치하는 디렉터리를 변경할 때 사용하는 항목

    - 아파치 서버 사용자들이 외부에 공개하고자 하는 html 문서들을 저장하기 위한 용도

    -/etc/httpd/conf.d/userdir.conf (환경설정파일)

    - userdir.conf 파일을 이용하여 특정 사용자의 userdir 디렉토리 사용여부를 허용 및 거부 가능

    - Q. 아파치 2.2 버전을 소스 파일로 설치하여 웹 서버를 운영 중이다. ihduser 사용자가 개인 홈페이지를 운영할 수 있도록 관련 디렉터리 명을 알려달라고 요청했다. -> 이 설명에 해당하는 관련 파일명과 항목은? httpd-userdir.conf / UserDir

    AddType

    - httpd.conf 파일에 php 확장자를 가진 파일을 해석할 수 있도록 설정하는 과정

    - 예) AddType application/x-httpd-php .php .html .htm .php5

    - 예) AddType application/x-httpd-php-source .phps

     

     

    프로세스

    정의

    - CPU 와 메모리를 할당받아 실행 중인 프로그램

    - 프로세스들마다 고유의 프로세스 ID, 즉 PID 를 할당받는다.

    포어그라운드 프로세스 (Foreground Process)

    - 사용자와 상호작용하는 프로세스

    - 터미널에 직접 연결되어 입출력을 주고 받는 프로세스

    - 명령 입력 후 수행 종료까지 기다려야 함

    - 화면에서 실행되는 것이 보임

    - fg %작업번호 

    백그라운드 프로세스(Background Process)

    - 사용자와 직접적인 대화를 하지 않고 뒤에서 실행되는 프로세스

    - 최상위 프로세스 init (PID : 1)

    - 사용자의 입력에 관계없이 실행되는 프로세스

    - 실행은 되지만 화면에 나타나지 않고 실행됨

    - bg %작업번호&

    데몬 (Demon)

    - 리눅스 시스템 부팅 시 자동으로 실행되는 백그라운드 프로세스

    - 대기하다가 사용자의 요청이 오면 즉시 실행

    - 사용자들은 이 프로세스들을 볼 수 없음

    - standalone : 데몬이 백그라운드에서 상시 대기하여 바로 요청처리, 요청 시 바로 고속처리, 시스템 자원 많이 사용

     보통 부팅 시 실행되어 해당 프로세스가 메모리에 계속 상주하면서 클라이언트의 요청을 처리하는 방식. 웹, 메일 등과 같이 빈번한 요청이 들어오는 서비스인 경우 이 방식으로 작동

     /etc/init.d 의 스크립트 파일로 관리

     sendmail, apache, mysql, name server, nfs 등의 서비스가 사용

    - ineted : inetd 의 확장 데몬인 xinetd 의 요청이 있을 때만 작동, 외부의 요청 시에만 저속으로 동작, 리소스 소모가 적음

    - fork : 새로운 프로세스를 만들 때 기존 프로세스를 복제, 새로운 프로세스를 위한 메모리 할당, 원본=부모, 복제=자식

    - exec : 호출하는 프로세스가 새로운 프로세스로 변경, 새로운 프로세스를 위한 메모리 할당 없음, 호출한 프로세스의 메모리에 새로운 프로세스의 코드 덮어씌움

    데몬 관련 유틸리티

    1. ntsysv : 텍스트 환경에서 커서를 이용하여 부팅 중 자동으로 실행되는 서비스를 설정할 수 있는 유틸리티

    2. chkconfig : 텍스트 기반의 명령형 프로그램. 실행 레벨에 따른 서비스의 on/off 설정 리스트를 출력하거나 설정한다

    3. 기타 유틸리티 : X 윈도를 사용하는 경우 명령행에서 system-config-services 라고 입력하면 GUI 기반의 유틸리티 이용하여 설정 가능

     

     

    부팅 관련 설정 파일

    개요

    - 리눅스 시스템 부팅 시 가장 먼저 실행되는 프로세스는 init 프로세스이다

    - init 프로세스가 /etc/init 안에 있는 설정 파일들을 참조하여 부팅을 관정한다

    관련 설정 파일 (실행 순서대로)

    1. /etc/inittab : 부팅과 관련된 run level 이 정의되어 있다

    2. /etc/init/rcS.conf : 시스템 초기화(system initialization) 과 관련된 설정이 있다. 주요 내용으로는 /etc/rc.d/rc.sysinit 스크립트를 실행하는데 호스트명 설정, 시스템 점검, RAID 및 LVM 장치 활성화, 쿼터 설정 활성화 등을 한다

    3. /etc/init/rc.conf : 부팅 시 각 레벨별로 진행되는 내용이 설정된 파일. 주요 내용으로는 /etc/rc.d/rc 스크립트 실행. 이 rc 스크립트는 런 레벨이 3이면 /etc/rc.d/rc3.d 디렉터리 안에 들어있는 실행 데몬스크립트들 중에서 S 로 시작되는 스크립트를 찾아서 부팅 시 실행되도록 한다

    4. /etc/rc.d/rc.local : 실행 레벨 2,3,5 에서 가장 마지막에 실행되는 파일. 사용자가 부팅 시 필요한 서비스를 구동할 때 이 파일 안에 등록하여 사용한다

     

     

     

    프로세스 관련 명령어

    top

    - 동작중인 프로세스의 상태를 실시간으로 화면에 출력해주는 명령

    - 프로세스의 상태뿐만 아니라 CPU, 메모리, 부하 상태 등도 확인 가능

    # top -d 2 -p 1222 → PID 값이 1222인 프로세스를 2초 간격으로 관련 정보를 출력

    # top -bn 3 > top.log → top 명령을 배치 모드로 3회 실행하여 top.log 파일에 저장

    kill

    - 프로세스에 특정한 시그널을 보내는 명령

    - 옵션 없이 실행하면 프로세스에 종료 신호 (15, TERM , SIGTERM ) 를 보냄

    - PID 사용

    # kill -l → 시그널 종류 출력

    # kill 724 # kill -15 724 # kill -TERM 724 # kill  -s -SIGTERM 724

    # kill -HUB 10118 # kill -1 10118 → pid 가 10118 인 프로세스를 재시작

    # kill %2 → 작업 번호가 2인 프로세스를 종료시킴

    killall

    - 같은 데몬의 여러 프로세스를 한 번에 종료시킬 때 사용하는 명령

    - 프로세스 명 사용

    - 시그널을 지정하지 않으면 종료 시그널 ( TERM , SIGTERM ) 이 전송됨

    # killall httpd → Apache 웹 서버 데몬인 httpd 를 모두 종료

    # killall -HUP httpd → httpd 데몬을 다시 실행시킴. 주 데몬이 아닌 웹 서비스 요청 시 연결을 담당하는 httpd 의 프로세스들이 재시작 됨

    # killall -v -9 httpd → httpd 데몬에 9번 시그널(SIGKILL, KILL)을 전송하고, 전송 결과 출력

    # killall -9 -u posein → posein 사용자의 모든 프로세스를 강제로 종료

    pkill

    - 프로세스 명 사용

    jobs

    - 백그라운드 실행중인 프로세스나 현재 중지된 프로세스의 목록을 출력해주는 명령

    # jobs → 백그라운드 프로세스 출력

    # jobs -l → 프로세스 번호를 추가하여 출력

    fg

    - 백그라운드 프로세스를 포어그라운드 프로세스로 전환하는 명령

    # fg → 백그라운드로 수행중인 작업을 포어그라운드로 전환. 만약 여러 개인 경우 가장 최근에 수행한 작업 (보통 + 기호가 붙어있는 작업)을 포어그라운드로 전환

    # fg %2 # fg 2 → 작업 번호가 2번인 프로세스를 포어그라운드로 전환. 

    nice

    - 프로세스 명 사용

     

     

     

     

     

    사용자 정보 관리, 그룹 관리 파일

    /etc/passwd 필드 구성

    - 사용자 이름 : 암호 : 사용자 ID : 사용자가 속한 그룹 ID : 전체이름(default:사용자 이름) : 사용자의 홈 디렉터리 : 기본 셀

    /etc/group 필드 구성

    - 그룹 이름 : 비밀번호 : 그룹 ID : 그룹에 속한 사용자 이름

    /etc/skel 디렉토리

    - 리눅스 운영체제에서 새로운 사용자를 생성하였을 경우, 새 사용자를 위한 기본 폴더를 참고하는 디렉토리

     

     

     

    시스템 정보 확인

    uname 명령어 

    - 시스템의 이름, 사용 중인 운영체제와 버전, 호스트명, 하드웨어 정보 등을 확인할 수 있다.

    - -a : 모든 옵션에 대한 정보 출력

    - -i : 시스템의 하드웨어 플랫폼정보 출력 (hardware-platform)

    - -m : 시스템의 하드웨어타입정보 출력 (machine)

    - -n : 네트웍노드 호스트 이름에 대한 정보 출력 (nodename)

    - -o : 운영체제정보 출력 (operation-system)

    - -p : 프로세스 정보 출력 (processor)

    - -r : 운영체제 배포버전 출력 (kernel-release)

    - -s : 커널이름 출력 (kernel-name)

    - -v : 커널 버전정보 출력 (kernel-version)

     

     

     

    모듈 

    커널에 탑재되는 모듈 관련 디렉토리 경로

    - /lib/modules/kernel-version/kernel

    - uname -r 명령어를 사용하여 현재 사용하고 있는 커널 모듈 확인 가능

    lsmod 시스템에 설치된 모듈 리스트 확인
    modprobe 모듈을 관리하는 명령어
    /etc/modprobe.conf, /etc/modprove.d : 부팅 시 특정 모듈을 자동으로 적재할 때 사용
    -l : 모든 모듈 목록 출력, -r : 모듈 제거, -c : 모듈 관련 환경설정 파일 내용 출력
    modinfo 모듈 정보 조회
    insmod 모듈 설치
    rmmod 모듈 삭제
    depmod 모듈 간 의존성이 기록된 파일의 정보를 갱신
    의존성이 변경되면 modules.dep 파일의 내용 변경
    make modules 커널 컴파일 과정에서 선택한 모듈을 생성
    make modules_install 커널 컴파일 과정에서 생성한 모듈을 설치
    make mrproper 이전 컴파일 시 설정되었던 설정 정보 제거 및 초기화
    make distclean mrproper 명령 수행 후, 추가로 커널 컴파일 후 생성된 모든 오브젝트 파일, 백업 파일 등 삭제
    제거 명령어 중 가장 강력한 명령어
    make menuconfig 텍스트 메뉴 기반에서 커서를 이용하여 커널 컴파일 관련 옵션 설정 작업

     

     

    프린터

    LPRng

    - BSD 계열 유닉스에서 사용

    - 프린터 스풀링과 네트워크 프린터 지원

    - 설정 파일 : /etc/printcap

    CUPS

    - 애플이 개발한 오픈 소스 프린팅 시스템

    - 유닉스 계열에서 사용하기 위해 개발

    - IPP (internet printing protocol) 를 사용하여 웹 기반으로 제어

    - 환경설정 디렉토리 : /etc/cups

    프린터 관련 명령어

    BSD 계열

    - lpr : 프린터 출력

    - lprm : local printer remove, 프린터 큐에 대기 중인 작업 삭제, 취소할 프린트 작업 번호를 명시하지만 생략되었다면 가장 마지막 작업 취소

    - lpq : 큐에 있는 작업 목록 출력

    - lpc : 프린터 제어

    System V 계열

    - lp : 프린터 출력

    - cancel : 취소, 무조건 작업 번호 붙여줘야 함

    - lpstat : 작업 번호 확인, 프린트 직업의 Request-ID 확인

    프린터를 지원해주는 인쇄 시스템

    - LPRng : 프린터 스풀링과 네트워크 프린터서버를 지원하며 프린터에 관련된 명령어로는 BSD, system V 계열 모두 지원한다.

    - CUPS : 애플이 오픈 소스 프린팅 시스템으로 개발한 CUPS 는 다양한 기능을 가지고 있고, BSD 계열과 system V 계열 모두사용가능하고, 사용자 및 호스트 기반의 인증을 제공한다. 로컬에 직접 연결한 프린터를 네트워크 프린터처럼 설정 가능하다.

    사운드 카드

    OSS (Open Sound System)

    - 유닉스 계열 운영체제에서 사운드 카드를 제어하는 인터페이스 - 현재 'ALSA' 로 대체 - 표준 유닉스 장치(POSIX) 에 기반한 인터페이스

    ALSA (Advanced Linux Sound Architecture)

    - GPL 및 LGPL 라이선스 기반으로 배포 - 사운드 카드를 자동으로 구성 - 환경 설정 파일 : /etc/asound.state

     

    스캐너

    SANE (Scanner Access Now Easy)

    - GPL, 유닉스, OS2, Window 운영체제 지원

    XSANE (X based inerface for the SANE)

    - X-Windows 기반의 스캐너 프로그램

    - GTK+ 라이브러리로 만들어짐

    - xsane 명령어로 실행

    - GPS, 유닉스, OS2, Windows 운영체제 지원

    스캐너 명령어

    - sane-find-scanner : SANE 백엔드 건색

     - scanimage : 이미지 스캔 제어

    - scanadf : 자동용지지급장치가 장작된 스캐너에서 스캔할 때 사용하는 명령어

     

     

     

    명령어

    edquota

    - 사용자나 그룹에 쿼터를 설정할 때 사용하는 명령

    - 실행시키면 vi 편집기가 실행됨

    - 기본 단위 : KB

     

     

    /etc/fstab

    /etc/fstab 에 들어가면 필드가 6가지 주어진다.

    <file system> <mount pint>     <type>    <options>                               <dump> <pass>

    /dev/fd0          /media/floppy0   auto0   rw,user,noauto,exec,utf8    0                  0

     

    <options>

    - usrquota : 사용자 할당량 사용

     

     

     

     

    개요

    - 커널과 사용자간의 다리역할을 함

    - 사용자로부터 명령을 받아 해석하고 프로그램 실행

    - 사용자가 시스템에 로그인을 하게 되면 각 사용자에게 설정된 셸이 부여되면서 다양한 명령을 할 수 있다. 즉, 사용자에게 셸을 부여하지 않으면 로그인하더라도 명령을 수행할 수 없다

    - bash, ksh, tcsh, zsc. bash 가 표준

    주요 셸 특징

    - Bourne Shell

    - bash : GNU 프로젝트 위해 개잘. 현재 리눅스 표준 셸. bash 의 명령어 문법은 sh 와 호환되고, ksh 와 csh 의 유용한 기능을 참고하여 명령 히스토리, 명령어 완성 기능, 히스토리 치환, 명령행 편집 등 지원. POSIX 와 호환

    - C 셸 : C 언어 기반. 강력한 프로그램 작성 기능. 히스토리 기능, 별명 기능, 작업 제어 등. 명령행 편집 기능은 지원하지 않음

    - tcsh : TENEX 라는 운영체제에 명령행 완성 기능을 반영. C 셸과 통합하여 생김. csh 의 기본 기능에 명령어 완성 기능, 명령행 편집 기능 등.

    - ksh : 본 셸 확장. C 셸의 많은 기능 추가. 작업 제어, 앨리어스, 히스토리, Vi 및 Emacs 스타일의 명령행 편집 기능, 명령행 완성 기능 제공

    - dash : POSIX 와 호환되는 /bin/sh 를 가능한 작게 구현. 빠른 작업 수행이 특징. 현재 데이반 및 우분투 계열 리눅스의 기본 셸. 소스 크기 작고 처리 속도 빠름. history 명령 지원하지 않음

     

    셸 확인과 변경

    셸 확인

    - 명령 프롬프트 상에서 'echo $SHELL' 라고 실행

    - 다른 셸을 사용하기 위해 변경 가능한 셸의 확인은 'chsh -l' 또는 'cat /etc/shells' 명령어로 확인

    셸의 변경

    - 시스템에 로그인 한 뒤 'chsh' 명령 입력하면 사용자 암호 물어봄.

    - 암호를 입력한 후 변경하려는 셸을 절대 경로로 입력하여 변경

    - 변경한 셸의 적용은 다음 로그인부터 유효

    - 명령행에서 /bin/csh 와 같이 실행하여 셸을 변경할 수 있음

    - 기본 bash 셸에서 fork 되어 추가로 프로세스 발생. 이 경우 변경된 셸 확인은 ps 명령으로 가능하고, exit 입력하면 기본 셸인 bash 로 돌아간다.

    사용자 로그인 셸 정보 확인

    - /etc/passwd 7번째 필드에 기록

    관련 명령어 : chsh

    - 사용자 로그인 변경하는 명령어

    [주요옵션]

    -s : 변경하고자 하는 셸 명시 (--shell)

    -l : 사용 가능한 셸의 목록 정보 출력. /etc/shells 파일 내용 출력 (--list-shells)

    -u : chsh 명령어 사용법 출력 (--help)

    -v : 설치한 패키지 버전 정보 출력 (--version)

    [사용 예]

    $ chsh -l

      - 사용 가능한 셸의 목록 정보가 기록되어 있는 /etc/shells 파일 내용 출력 :

      - chsh 만 입력하면 로그인한 사용자 셸 변경

    [root@www ~]# chsh posein 

      - posein 사용자의 셸 변경

    [posein@www ~]$ chsh -s /bin/csh

      - 로그인 셸을 csh 로 변경

     

     

    셸 변수와 환경 변수

    셸 변수

    - 특정한 셸에서만 적용되는 변수

    - 리눅스에서는 명령행에서 '변수명=값' 형태로 지정하여 사용 가능

    - 변수값 출력 시 변수명 앞에 $ 을 붙이고 echo 명령으로 확인 가능

    - 선언된 셸 변수를 전부 확인하려면 set 명령 사용

    $ city=daejeon

    $ echo $city

    ---daejeon

    환경 변수

    - 프롬포트 변경, PATH 변경 등 과 같이 셸의 환경을 정의하는 중요한 역할을 수행하는 변수

    - 미리 예약된 변수명 사용

    - bash 에서는 PATH, SHELL 등과 같이 대문자로 된 변수로 구성

    - 현재 설정된 전체 환경 변수의 값은 env 명령으로 확인 가능

    주요 환경 변수

    HOME : 사용자 홈 디렉터리

    PATH : 실행 파일을 찾는 디렉터리 경로

    LANG : 셸 사용 시 기본으로 지원되는 언어

    TERM : 로그인한 터미널 종류

    PWD : 사용자의 현재 작업 디렉터리

    SHELL : 사용자의 로그인 셸

    USER : 사용자의 이름

    DISPLAY : X 윈도에서 프로그램 실행 시 출력되는 창

    PS1 : 프롬프트(Prompt) 변수

    PS2 : 2차 프롬프트 변수

    HISTFILE : 히스토리 파일의 절대 경로

    HISTSIZE : 히스토리 파일에 저장되는 명령어의 개수(줄 기준)

    HISTFILESIZE : 히스토리 파일의 파일 크기

    HOSTNAME : 시스템의 호스트명

    MAIL : 도착한 메일이 저장되는 경로

    TMOUT : 사용자가 로그인한 후 일정 시간동안 작업을 하지 않을 경우 로그아웃시키는 시간 (second)

    UID : 사용자의 UID

    환경 변수의 사용 및 변경

    - 환경 변수를 사용하여 각 사용자 고유의 셸 환경을 구축할 수 있고, 명령어와 결합하여 이용할 수 있다.

    [사용 예]

    $ mkdir $HOME/data

     - 해당 사용자 홈 디렉터리 안에 data 라는 디렉터리를 만든다

    $ echo $LANG

     - 현재 설정된 언어를 확인한다

    $ LANG=C

     - 현재 언어를 영어로 변경한다

    [posein@localhost ~]$ echo $PS1

    [\u@\h \W]\$

    [posein@localhost ~]$ PS1="[\u@\t \W]\$ "

     - 설정된 프롬프트 확인 후 변경

    [주요 프롬프트 형식]

    \d : '요일 월 일' 형태로 날짜 표시 ( Wed Jan 15)

    \h : 호스트 이름 표시

    \s : 사용 중인 셸 이름 표시

    \t : 24시 형태의 현재시간 표시 (HH:MM:SS)

    \T : 12시 형태의 현재시간 표시 (HH:MM:SS)

    \@ : 12시 형태의 현재 시간에 AM/PM을 추가로 표시

    \u : 현재 사용자의 이름 표시

    \w : 현재 작업 디렉터리를 절대 경로로 표시

    \W : 현재 작업 디렉터리 중 마지막 디렉터리만 표시

    \! : 현재 명령의 히스토리 넘버를 보여줌

    \\ : \ 표시

     

     

    bash 의 주요 기능

    명령행 완성 기능

    명령어 history 기능

    - history 명령은 ! 로 대체하여 사용할 수 있다.

    !! : 마지막에 사용한 명령 실행

    !n : n번째 사용한 명령 실행

    !-n : 사용한 명령 목록을 역으로 세어서 n번째 명령 실행

    !문자열 : 가장 최근에 사용한 명령 중 문자열로 시작하는 명령을 찾아서 실행

    !?문자열? : 가장 최근에 사용한 명령 중 문자열을 포함하고 있는 명령을 찾아서 실행

    ^문자열1^문자열2 : 마지막에 사용한 명령문의 '문자열1'을 '문자열2'로 대체한 후 실행

    [히스토리 관련 환경 변수]

    HISTSIZE : 히스토리 스택의 크기가 지정되어 있는 변수로 단위는 명령의 개수이다. 이 변수에 지정한 값만큼만 history 명령 실행 시에 출력되고, 방향키로 검색했을 경우에도 이 값 내에서만 가능

    HISTFILESIZE : 실질적은 히스토리 파일의 크기

    HISTFILE : 히스토리 파일의 위치를 보여준다

    HISTCONTROL : 중복되어지는 명령에 대한 기록 유무를 지정하는 변수

    HISTTIMEFORMAT : history 명령 실행 시 출력되는 시간 형식 지정 시 사용

    [환경변수 사용 예]

    $ export HISTCONTROL=ignoredups 

      - 연속적으로 중복된 명령은 히스토리에 저장하지 않는다. CentOS 7 에는 기본 적용 되어 있음

    [posein@localhost ~]$ echo $HISTFILE

    /home/posein/ .bash_history

    [posein@localhost ~]$ HISTSIZE=10

      - 히스토리 파일 위치 확인 후 히스토리 파일 스택크기를 10 으로 지정

    $ export HISTTIMEFORMAT="%Y.%m.%d %T"

     - history 명령 실행 시 출력되는 날짜 형식 변경

    %Y.%m.%d %T 2022.08.17 22:10:10
    %F  %Y-%m-%d
    %T %H:%M:%S

    [관련 파일 : .bash_history]

     - 사용자의 홈 디렉터리 내에 존재하면서 사용자들이 입력했던 명령들이 기록되는 파일

     - 파일명이 '.' 으로 시작되어 숨겨진 파일 형태로 존재하고, 현재 로그인해서 내린 명령들은 로그아웃할 때 기록되므로 다음 번 로그인 시 확인 가능

    [ctrl + r] : 검색할 수 있는 명령 프롬프트가 나타남. 특정한 문자를 입력하면 가장 최근에 그 문자로 수행한 명령 보여줌

    [esc 후 .] : 최근 사용된 인자를 명령행에 붙여준다. 한번 실행할 때마다 하나씩 역으로 호출

    [alt + .] : alt와 .키를 계속 누르고 있으면 최근 사용된 인자를 하나씩 호출

    alias 기능

    $ alias 나만의명령어='기존 명령어 조합'

     - alias 지정

    $ unalias 지정한_명령어

     - alias 해제

    $ alias ls='ls -alF'

     - ls 명령만 실행시켜도 기본으로 -alF 옵션이 지정 (만약ls를 설정해지 하지 않고 일시적으로 실행하려면 $/bin/ls 혹은 $ \ls)

    $ alias aaa='ls -alF'

     - aaa 라는 명령은 기본적으로 존재하지 않는다. 사용자 고유의 명령어인 aaa를 생성하게 된다. 이 경우 'which aaa' 하게 관련 정보를 출력해준다

    $ alias bbb='ls ; pwd'

     - bbb 라는 명령을 실행하면 ls 명령을 실행한 뒤 pwd 명령을 실행한다

    $ alias c=clear

     - c 라는 명령어에 clear 가 실행되도록 설정

    $ unalias aaa

     - aaa에 설정된 alias 를 해제한다

    $ unalias -a

     - 설정되어 있는 모든 alias 해제

    명령행 편집 기능

    ctrl b : 커서를 왼쪽으로 한 칸 이동

    ctrl f : 커서를 오른쪽으로 한 칸 이동esc 후 b : 커서를 왼쪽으로 한 단어 이동esc 후 f : 커서를 오른쪽으로 한 단어 이동ctrl a : 맨 왼쪽으로 이동ctrl e : 맨 오른쪽으로 이동ctrl d : 커서 오른쪽 한 글자 삭제esc 후 backspace : 커서 왼쪽 한 단어 삭제esc 후 d : 커서 오른쪽 한 단어 삭제ctrl k : 커서 왼쪽 행 전체 삭제ctrl u : 행 전체 삭제ctrl y : 삭제 취소

    명령 대체 또는 명령 치환 기능

    - 특정 명령의 결과를 다른 명령어의 인자값으로 사용하는 것- passwd 라는 명령의 허가권을 알기 위해서는 먼저 'which passwd' 라는 명령으로 passwd 명령어의 위치를 찾아내고, 다시 'ls -' 명령을 수행해야 한다. 2번의 명령을 수행하는 대신 ` ` 또는 $( ) 를 이용해서 대체할 수 있다.

    [사용예]

    [posein@www ~]$ which passwd

    /bin/passwd

    [posein@www ~]$ ls -l /bin/passwd

    -rwsr-xr-x. 1 root root 27832 Jun 10 2022 /bin/passwd

    [posein@www ~]$ ls -l `which passwd`

    -rwsr-xr-x. 1 root root 27832 Jun 10 2011 /bin/passwd

    [posein@www ~]$ ls -l $(which passwd)

    -rwsr-xr-x. 1 root root 27832 Jun 10 2022 /bin/passwd

    그룹 명령 실행

    ; : 단순히 한 줄에 여러 명령을 나열하기 위해 사용. 입력한 순서대로 순차처리

    || : 논리적 OR 라 부르며 앞의 명령이 성공이면 결과 출력. 그렇지 않으면 뒤의 명령 실행하여 결과 출력

    && : 논리적 AND 라 부르며 앞의 명령이 성공적으로 수행 되어야만 다음 명령 수행

    [사용예]

    $ ls ; sleep 10 ; ls

     - ls, sleep, ls  명령을 순차적으로 실행

    $ clear; aaa ; pwd

     - 명령을 순서대로 수행하는데 앞선 명령의 실행 결과에 상관없이 순차적으로 다음 명령 실행. 즉, clear 명령 후에 존재하지 않는 aaa 명령을 실행하고 pwd 명령을 실행한다

    $ ls ; find / -type d > list.txt

     - find / -type d 명령의 결과를 list.txt파일로 저장한다

    $ (ls ; find / -type d) > list.txt

     - ls 및 find 명령의 결과 모두를 list.txt 파일로 저장

    $ pwd ; ( cd / ; pwd ) ; pwd

     - () 기호를 이용하여 그룹 명령을 실행한 후 원래 상태로 전환

    [posein@www ~]$ grep zzang /etc/passwd || echo "No zzang"

    No zzang

    [posein@www ~]$ grep posein /etc/passwd || echo "No posein"

    posein:x:1000:1000:posein: /home/posein:/bin/bash

     - 첫 번째 명령에서는 zzang 이라는 계정이 없으므로 뒤의 명령이 실행되고, 두 번째 명령은 posein 이라는 계정이 존재하여 앞의 명령 결과만 출력

    [posein@localhost data]$ ls

    lin.txt

    [posein@localhost data]$ mv lin.txt joon.txt && ls

    joon.txt

    [posein@localhost data]$ mv lin.txt joon.txt && ls

    mv: cannot stat 'lin.txt' : No such file or directory

     - 첫 번째 mv 명령은 파일이 존재하지 않으므로 이름을 변경한 후 ls 명령이 실행되고, 두 번째 mv 명령은 lin.txt 파일이 존재하지 않으므로 에러 메시지 출력되며 끝남

     

     

     

    표준 입출력 제어 기능

    개요

    - 리눅스에서는 표준 입력과 표준 출력이라는 이름의 데이터 흐름을 사용한다

    - 입력장치 : 키보드, 파일, 스캐너 등

    - 출력장치 : 모니터, 프린터, 파일 등

    표준 입출력 종류

    - 표준 입력 : 입력을 담당하는 기보드. 약어로 stdin. 숫자값 : 0

    - 표준 출력 : 명령의 결과값이 보여지는 화면. 약어로 stdout. 숫자값 : 1 (생략 가능)

    - 표준 에러 : 에러값이 보여지는 화면. 약어로 stderr. 숫자값 : 2

    [사용예]

    [posein@localhost ~]$ abc

    bash: abc: command not found...

    [posein@localhost ~]$ abc 2>/dev/null

      - 존재하지 않는 명령을 입력하면 오류 메시지를 확인할 수 있지만, 숫자 2 와 리다이렉션 기호를 사용하면 오류 메시지를 없앨 수 있다

     

     

    리다이렉션

    개요

    - 어떤 프로세스의 입/출력을 표준 입출력이 아닌 다른 입출력으로 변경할 때 사용

    - 출력 결과 파일로 저장하거나 파일의 내용을 프로세스의 입력으로 사용하는 기법

    [리다이렉션의 종류]

    > 프로세스의 출력을 표준 출력에서 다른 출력으로 변경한다
    >> 프로세스의 출력을 지정한 출력(보통 파일)에 추가한다
    < 프로세스의 입력을 표준 입력에서 다른 입력으로 변경한다
    << 기호 뒤에 지정한 문자열을 입력으로 받아 해당 문자열이 나오기 전까지를 표준 입력을 삼아 해당 내용을 출력한다

    [사용예]

    $ cat > tmp.txt

      - 표준 입력인 키보드로 입력한 내용을 tmp.txt 파일에 저장한다. 키보드로 내용을 입력한 뒤 ctrl + d 를 누르면 종료된다

    $ cat >> tmp.txt

      - 키보드 입력한 내용을 tmp.txt 파일의 뒷부분에 덧붙인다. 만약 tmp.txt 파일이 존재하지 않으면 새로운 파일을 생성한다

    $ wc < tmp.txt

      - tmp.txt 파일의 내용을 wc 의 입력으로 사용한다. cat tmp.txt | wc 와 같고, < 은 생략 가능하다

    $ mail posein < abc.txt

      - posein 이라는 사용자에게 미리 작성된 abc.txt 내용을 메일로 보낸다

    [posein@localhost ~]$ cat << end

    > I love linux

    > I love windows

    > end

    I love linux

    I love windows

      - end 라는 문자열이 나오기 전까지를 표준 입력으로 삼아 출력한다

    [응용예]

    $ find / -name '*.txt'

      - 결과값과 에러를 모두 화면(표준 출력)에 보여준다

    $ find / -name '*.txt' 2>/dev/null

      - 결과값은 화면에 보여주고, 에러는 화면에 출력하지 않고 버린다

    $ find / -name  '*.txt' >list.txt

      - 결과값(1)은 list.txt 파일에 저장하고 에러는 화면에 출력한다. 참고로 find / -name '*.txt' 1>list.txt 와 같다

    $ find / -name '*.txt' 2>/dev/null > list.txt

      - 결과값은 list.txt 파일에 저장하고 에러는 화면에 출력하지 않고 버린다

    $ find / -name '*.txt' 2>error.txt

      - 결과값은 화면에 출력하고 에러는 error.txt 파일에 저장한다

    $ find / -name '*.txt' 2>error.txt > result.txt

      - 결과값은 result.txt 에 저장하고 에러는 error.txt 파일에 저장한다

    $ find / -name '*.txt' > data.txt 2>&1

      - 결과값과 에러값을 모두 data.txt 이라는 한 파일에 저장한다. find / -name '*.txt' &> data.txt 와 같다

    $ find / -name '*.bak' 2>>error.txt

      - 결과값은 화면에 출력하고 에러는 error.txt 파일에 추가하여 저장한다

    [posein@localhost ~]$ cat fam.txt

    I LOVE LIN.

    I LOVE JOON.

    [posein@localhost ~]$ cat < fam.txt

    I LOVE LIN.

    I LOVE JOON.

    [posein@localhost ~]$ tr 'A-z' 'a-z'  < fam.txt

    i love lin.

    i love joon.

      - cat 처럼 대부분의 명령어는 뒤에 오는 항목을 인자값으로 받아들여 입력 전환 기호인 < 를 사용하지 않아도 상관없으나, tr 과 같은 명령어는 반드시 < 기호를 사용해야 한다.

     

     

     

    파이프(pipe)

    개요

    - 프로세스의 통신을 위해 도입한 것으로 어떤 프로세스의 표준 출력이 다른 프로세스의 표준 입력으로 쓰이게 하는 것을 말한다

    - | 기호를 사용하고, 여러 개를 사용하면 pipe-line 을 구성하게 되면서 데이터들을 파이프라인을 따라 흐르게 된다

    [사용법]

    $ 명령어1 | 명령어2

      - 명령어1의 결과값이 명령어2의 입력으로 사용된다

    [사용예]

    $ ls -alF | more

      - ls 명령의 출력이 more 라는 filter 의 입력으로 사용되어 결과가 한 화면씩 출력된다

    $ ls | sort | more

      - ls의 결과인 자료들은 sort 를 통해 정렬되고, 다시 more 를 통해 한 화면씩 출력된다

     

    관련 명령어

    1. tee : 파이프연결 출력을 두 갈래로 나눌 때 사용하는 명령 (tee [option] [파일])

    [주요옵션]

    -i : 인터럽트를 무시하도록 한다

    -a : 지정된 파일로 출력을 덮어쓰지 않고, 파일 내용 뒤에 추가한다

    [사용 예]

    $ ls -l | tee list.txt |more

      - 파일의 목록을 list.txt 라는 파일에 기록함과 동시에 more 를 사용하여 화면에도 출력 내용을 보여준다

    $ ls -l /etc | tee etc.txt | tee /tmp/etc.txt |more

      - 'ls -l /etc' 의 결과를 현재 디렉터리 안에 etc.txt 및 /tmp/etc.txt 로 저장하고 화면에도 한 페이지씩 출력한다

    $ ls -l /etc | tee etc.txt | tee /dev/pts/0 | more

      - 'ls -l /etc' 의 결과를 현재 디렉터리 안에 etc.txt 로 저장하고 /dev/pts/0 으로 출력하고, 화면에도 한 페이지씩 출력한다

      - 사용 중인 /dev/pts/0 터미널은 해당 사용자가 권한이 있어야 하고, '/dev/' 는 생략 가능하나, 콘솔창인 /dev/tty2 등은 버전에 따라 생략하면 안 될 수도 있다

     

    2. xargs : 표준 입력으로부터 값을 받아 처리하는 명령으로 보통 다른 명령어와 파이프 기호 조합으로 사용된다

    [사용법]

    $ 명령어 | xargs [option]

    [주요옵션]

    -n : 한 번에 처리하는 최대 인자값을 지정하는 옵션 (--max-args=값)

    [사용 예]

    $ echo a.txt | xargs ls -l

      - a.txt 의 ls -l 결과를 출력한다

    $ find -name '*.xtx' | xargs rm -rf

      - 현재 디렉터리 이하에서 .txt 로 끝나는 파일이나 디렉터리를 찾아 전부 삭제한다

    $ echo a.txt b.txt | xargs -n 1 cp -v /etc/passwd

      - /etc/passwd 를 a.txt b.txt 라는 이름으로 하나씩 복사하고 진행 과정을 출력한다

     

     

    작업 제어 기능

    개요

    - 작업을 백그라운드와 포그라운드에서 실행할 수 있으며, 이 작업을 서로 전환하여 실행할 수 있다

     

    산술 연산 기능

    개요

    - expr 명령을 이용하여 산술 연산이 가능하다

    [사용법]

    $ expr 값 연산자 값

      - expr, 값, 연산자 사이는 반드시 한 칸씩 띄어야 한다

      - 값 대신 미리 지정한 변수를 사용해도 된다

    [사용예]

    $ expr 3 + 2  - 명령어, 연산자, 피연산자 사이를 띄어야 한다$ expr 3 \* 2  - * 앞에는 \ 를 붙여야 한다

     

     

    프롬포트 제어 기능

    개요

    - 프롬프트를 원하는 대로 변경 지정이 가능하다. 환경 변수인 PS1 을 이용해서 변경할 수 있다

     

    확장된 내부 명령어

    개요

    - bash 자체적으로 해석하는 set, export 등의 내부 명령어(Built-in command) 들이 점점 많아지고 있다

    설정들을 지속적으로 이용하려면 관련 파일에 설정해야 한다

    [관련 파일 및 디렉터리]

    /etc/profile 시스템 전체(모든 사용자)에 적용되는 환경 변수와 시작 관련 프로그램을 설정한다
    /etc/bashrc 시스템 전체(모든 사용자)에 적용되는 alias 와 함수를 설정한다
    ~/.bash_profile 개인 사용자의 환경 설정과 시작 프로그램 설정과 관련이 있는 파일
    로그인 시 읽어들인다
    경로, 환경 변수 등 설정이 들어있고, 사용자가 PATH 와 같은 환경 변수 수정 시 사용하면 된다
    ~/.bashrc 개인 사용자가 정의한 alias 와 함수들이 있는 파일
    alias 를 지속적으로 사용하려면 이 파일에 설정한다
    ~/.bash_logout 개인 사용자가 로그아웃할 때 수행하는 설정을 지정하는 파일
    /etc/profile.d 몇몇 응용 프로그램들이 시작할 때 위한 필요한 스크립트가 위치하는 디렉터리
    보통 /etc/profile 에서 호출
    일반 사용자의 alias 설정 등과 관련된 스크립트 존재

    [셸에서 사용되는 특수문자 1]

    ~(filde) 홈 디렉터리
    예) ~posein : posein 이라는 사용자의 홈 디렉터리를 나다낸다
    ~+ : 현재 디렉터리를 나타내고. '.' 과 같다
    . 현재 디렉터리를 나타내거나, 명령행 맨 앞에서 source 라는 의미로 셸 스크립트 등을 실행시킬 때도 사용한다
    .. 부모 디렉터리
    ' ' 모든 문자나 특수 문자들을 일반 문자로 취금한다
    " "  $, ``, \, ` 를 제외한 문자들을 일반 문자로 취급한다
    ` ` 명령 대체 기능 수행. 명령의 결과를 대체해서 사용한다
    $ shell 변수 기호. 뒤에 오는 문자열을 변수로 취급함
    * 아무 것도 없는 경우를 포함한 모든 문자를 뜻함
    ? 보통 한 문자를 대체할 때 사용한다
    특정 명령에 대한 결과를 갖는 return 변수로도 쓰이는데, 셸 상에서 내린 명령의 에러 유무를 확인할 수 있다
    ( ) 부속 shell (subshell) 을 뜻하는 기호로 하나의 셸 단위로 묶어준다
    \ 탈출(escape) 문자로 바로 다음에 오는 특수 문자의 기능을 없앤다
    또한 alias 가 설정된 명령어 앞에 사용하는 경우 alias 를 없애준다
    셸에서 긴 명령행 입력 시에 행을 연장할 때도 사용한다
    [ ]  bracket, 문자집합 이다
    [ 와 ] 사이에 선택할 수 있는 문자를 나열하여 '~중의 하나' 라고 표현된다
    범위를 지정할 때는 - 를 사용한다
    예)
    [abc] : a,b 또는 c
    [a-c] : a,b 또는 c
    [..;] : period, comma 또는 semicoion
    [-_] : dash(-) 또는 underscore(_) 
    [*?] : * 또는 ?  →  [ ] 안의 와일드카드는 의미가 없다
    [!0-9] : 숫자가 아닌 문자
    [^chars] : c, h, a, r, s 중 없는 문자 중 하나로 대체
    [a-zA-Z] : 모든 알파벳 문자
    ; shell 명령 분리자이다. 명령어를 순차적으로 실행할 때 사용한다
    { } { } 안에 제시된 문자열 중 하나로 대치시킨다
    예)
    b{ed, olt, ar}s : beds, bolts, bars
    b{ar{d, n, k}, ed}s : bards, barns, barks, beds

     

     

    [사용예]

    현재 디렉터리에 a, a.c, a.txt, a.o, b.txt, c.txt, d.o, ab.txt 파일이 있다고 가정

    $ ls a*

    a a.c a.o a.txt ab.txt

      - * 는 모든 문자를 뜻한다. 즉 a 로 시작하는 모든 파일을 보여준다. 물론 a 라는 이름이 파일도 찾아준다

    $ ls a.?

    a.c a.o

      - ? 는 한 문자를 대체한다

    $ ls [a-c].*

    a.c a.o a.txt b.txt c.txt

      - [a-c] 는 a, b 또는 c 한 문자를 가리킨다

    $ ls[!ab].*

    c.txt d.o

      - a나 b가 들어가지 않는 파일만을 찾아 출력한다

     

    [셸에서 사용되는 특수문자 2] : 인용부호

     - 문자나 단어의 특별한 의미, 즉 메타 문자가 가지고 있는 특수한 기능을 제거할 때 사용하는 부호를 인용 부호라 한다

    1. 달러 표시(dollar sign : $) 

      - $ 은 shell 변수를 나타날 때 사용한다. 변수에 특정한 값으로 부여할 때는 = 를 사용한다

    [사용예]

    [posein@www ~]$ name=posein

    [posein@www ~]$ echo name

    name

      - echo 명령은 텍스트 문자열을 그대로 출력하는 명령어이므로 name 이라는 문자열이 그대로 출력된다

    [posein@www ~]$ echo $name

    posein

      - name 을 변수 취급해서 변수에 저장된 값을 출력한다

    [posein@www ~]$ echo $PATH

    /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/posein/bin

      - 경로를 나타내는 환경 변수(PATH) 값을 출력한다

    2. 작은 따옴표(sINGLE qUOTES : ' ')

      - 모든 특수 문자의 의미를 제거한다

    [사용예]

    [posein@www ~]$ ECHO '$PATH'

    $PATH

      - ' ' 안의 $PATH 를 단순한 문자열로 표기한다

    3. 큰따옴표(double quotes : " ")

      - 따옴표 안에 있는 $, `, \ 를 제외한 모든 문자들의 툭별한 의미를 없앤다. 또한 !(history) 도 예외로 인정한다

    [사용예]

    [posein@www ~]$ echo "$PATH"

    /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/posein/bin

      - " " 안의 $ 는 해당 역할을 수행하므로 변수이 값이 출력된다

    [posein@www ~]$ pwd

    /home/posein

    [posein@www ~]$ echo "previous command is !!"

    echo "previous command is pwd"

    previous command is pwd

      - !! 기호의 역할인 바로 직전 명령을 호출하여 문자로 붙여준다

    4. 백슬래쉬(backslash : \)

      - \ 기호 다음에 나오는 문자의 특별한 의미를 제거하거나, 명령행이 긴 경우 다음 라인까지 명령행을 연장할 때 사용한다

      - 특정 명령어에 옵션 기본 장착과 같은 alias 가 설정되어 있을 경우 앞부분에 \를 덧붙여 실행하면 옵션 없이 기본 명령어로 실행된다

    [사용예]

    [posein@www ~]$ echo \$PATH

    $PATH

      - \ 뒤에 오는 $ 의 특수한 기능을 없애고, 단순한 문자열로 만들어 출력한다

    [posein@www ~]$ echo \$$PATH

    $/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/posein/bin

      - \ 뒤에 오는 첫 번째 $ 의 특수한 기능을 없애고, 그 다음 $PATH 는 환경 변수로 인식하여 경로를 출력한다

    [root@www php-5.6.5]# ./configure --with-apxs2=/usr/local/apache/bin/apxs  \

    > --with-mysql=/usr/local/mysql  \

    > --with-config-file-path=/usr/local/apache/conf

      - 명령 입력 중 \ 를 입력하면 줄이 바뀌고 2차 프롬프트 > 가 나타나면서 계속 입력할 수 있다

    [posein@www ~]$ \ls

      - ls 명령어에 alias 가 특정 옵션이 기본 설정되었을 경우 무시되고 원래의 ls 명령어가 실행된다

    5. 백쿼츠(back quotes : ` `)

      - 명령어 대체 (command substitution) 역할을 하는 문자로서 ` ` 로 묶여진 문자열은 명령어로 인식된다

    [사용예]

    [posein@www ~]$ echo "Current directory `pwd`"

    Current directory /home/posein

      - ` ` 안의 pwd 명령어로 인식하여 그 결과값인 /home/posein 을 출력한다

     

     

    Shell 프로그래밍

    shell 프로그래밍

    - 셸에서 사용되는 여러 명령어들을 모아 하나의 파일로 만드는 과정을 말하며, 이러한 과정을 통해 만들어진 파일 또는 프로그램을 셸 스크립트 (shell script) 라고 부른다

    - 셸은 for 문 및 case 문 같은 구문, 변수, 함수 등과 같이 보통 언어가 가지고 있는 기본적인 특성을 가지고 있어서 다양한 명령어와의 조합을 통해 사용자 환경에 맞도록 프로그래밍을 할 수 있다

    shell 스크립트 작성 방법

     1. vi 편집기 등을 사용해서 파일을 생성한다

     예) $ vi who2.sh

     2. 첫 번째 줄은 사용할 셸을 명시하는데, bash 를 사용할 경우 다음과 같이 명시한다

     예) #!/bin/bash

     3. 두 번째 줄 부터는 원하는 명령 및 구문 등을 입력한다

     예) # /bin/bash

            echo "Login List"

             who

     4. 스크립트를 실행 가능한 파일로 만든다

    예) $ chmod 755 who2.sh

     5. 실행시킨다

    예) $./who2.sh

    shell 스크립트 실행하기

     1.경로(PATH) 등록

      - 사용자의 홈 디렉터리에서 셸 스크립트를 생성한 뒤에 실행하려면 파일명 앞에 반드시 ./ 를 붙여야 한다

      - 이 의미는 현재 디렉터리 안에 있는 해당 파일을 실행시키라는 뜻으로 ./를 붙이지 않으면 PATH 에 등록된 디렉터리만 검색하므로 "command not found" 라는 메시지를 접하게 된다

      - 따라서 계속 사용하려면 PATH 에 해당 경로를 등록하거나, 해당 스크립트를 PATH 에 등록된 디렉터리로 옮겨야 한다

    [posein@www ~]$ echo $PATH

    /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/posein/.local/bin:/home/posein/bin

      -CentOS 7 버전에서 일반 사용자의 PATH 값을 확인하면 위 그림과 같다. 계속적으로 사용할 셸 스크립트라면 'mkdir ~/bin' 또는 'mkdir ~/.local/bin' 명령을 실행한 후에 이 디렉터리 안에 넣어두면 위치에 상관없이 실행 가능하다

      - 홈 디렉터리를 PATH 에 등록하려면 'export PATH=$PATH:$HOME' 을 실행하면 된다

    2. 허가권 없이 셸 스크립트 실행하기

      - 셸 스크립트에 실행 권한을 부여하지 않고도 실행하려면 다음과 같은 세가지 방법을 사용할 수 있다

     ① 앞부분에 sh 명령 덧붙이기

       예) $ sh who2.sh

     ② 앞부분에 source 명령 덧붙이기

       예) $ source who2.sh

     ③ 앞부분에 . 덧붙이기

       예) $ . who2.sh

    shell 프로그래밍 문법

     1. 주석

     2. 변수

      - var 변수에 값 value 를 저장한다. 셸에서 변수를 사용할 때는 변수명 앞에 $ 을 붙인다. 

      - 변수에 데이터를 저장할 때는 대입연사자 '=' 를 사용ㅎ며 대입연산자, 연산자/피연산자 사이에는 공백이 존재해서는 안 된다

      - 변수명은 - 를 제외한 특수 문자와 숫자로 시작해서는 안된다

    [기타 변수 대응법]

    ${name} name 이라는 변수에 들어있는 값으로 치환한다
    변수명 다음에 다른 문자가 연이어 나올 경우 유용하다
    ${name:=value} name 이 null 이면 value 로 할당하여 저장하고, name 에 값이 있으면 그 값을 사용한다
    변수의 기본값을 지정할 때 유용하다
    ${name:+value} 기존 name 이 null 이 아니라면 value 를 사용하지만, name 에 저장하지 않는다 (1회사용)
    ${name:-value} 기존 name 값이 있다면 그 값을 사용하고, 값이 없으면 value 값을 대입한다
    name 에 value 값을 저장하지는 않는다
    ${name:?value} 기존 name 값이 있다면 기본값으로 하고, 값이 없으면 error 를 내면서 value 값을 보여준다
    ${#name} name 의 문자열 길이를 반환한다
    ${name:offset} name 값에서 offset 만큼 삭제한 후 값을 반환한다
    ${name:offset:length} name 값에서 offset 만큼 삭제한 후 length 만큼 센 뒤 값을 반환하다

    [관련 환경 변수]

    $IFS 입력필드 구분자로서 셸 상에서 입력을 읽어 들일 때 글자를 구분하기 위한 목적으로 사용되는 문자 목록을 뜻한다
    보통 스페이스, 탬, 개행 문자를 사용한다

    [argument 변수]

     - 특별한 내장 변수로 '위치 매개 변수(positional parameter)' 라고도 한다

     - 이 변수는 매개 변수를 불러올 때 스크립트의 명령행 인자를 담당한다

     - 위치 매개 변수는 그 이름이 1, 2, 3 등으로 되어 있으며, 그 값을 각 $1, $2, $3 등으로 표시하고 0은 스크립트 파일명을 뜻한다

    $0 실행된 셸 스크립트명
    $1 스크립트에 넘겨진 첫 번째 아규먼트
    $2 스크립트에 넘겨진 두 번째 아규먼트
    $# 스크립트에 넘겨진 아규먼트 개수
    $$ 셸 스크립트의 PID
    $* 스크립트에 전달된 인자 전체를 하나의 변수에 저장하면 IFS 변수의 첫 번째 문자로 구분
    $@ $* 와 비슷한데, IFS 환경 변수를 사용하지 않는 것이 다른 점이다
    $? 실행한 뒤 반환 값, 즉 참이면 0, 거짓이면 1이 반환됨
    $- 현재 Shell 이 호출될 때 사용한 옵션들

    p 139

     

     

     

     

    사용자 계정 생성 : useradd

    개요

    - b

     

     

    사용자 전환 : su

    개요

    - subsitute user : 대리유저

    - 시스템에 로그인되어 있는 상태에서 다른 사용자의 권한으로 셸을 실행할 수 있도록 전환하는 명령

    - 리눅스 배포판에서는 텔넷과 같이 원격에서 접속할 때 직접 root 계정으로 로그인이 불가능하도록 설정되어 있다. 관리자라고 하더라도 일반 사용자로 로그인한 뒤 root 로 전환해야 하는데 이 때 su 명령어가 필요하다

     

     

    사용자 관련 파일 및 디렉터리

    개요

    - useradd 명령을 실행하면

     : 기본 설정은 /etc/default/useradd 에서 정보를 가져오고

     : /etc/skel 에 들어있는 파일 및 디렉터리를 사용자에게 제공고

     : 생성된 사용자의 정보는 /etc/passwd 와 /etc/shadow 에 기록되고 레드햇일 경우 /etc/group 에도 기록됨)

     : '/home/사용자아이디' 에 홈 디렉터리를 부여받아서 파일을 생성 삭제할 수 있고

     : '/var/spool/mail/사용자아이디' 에 메일 파일을 생성해준다

     

    1. /etc/passwd

     - 시스템에 로그인하여 자원을 이용할 수 있는 사용자 목록을 저장하는 파일

     

    2. /etc/shadow

      - /etc/passwd 의 두 번째 필드인 패스워드 부분을 암호화하여 관리

     - 총 9개의 필드로 구성되어 있고 패스워드 만기일, 계정 만기일 등 설정 가능

     - root 로만 접근 가능

     

    3. /etc/default/useradd

      - 별도 옵션 없이 'useradd 사용자명' 으로 계정 생성 시 기본적으로 적용되는 설정이 들어있는 파일

      - cat 명령 (텍스트 파일의 전체 내용을 출력해주는 명령) 으로 확인하거나 'useradd -D' 를 입력하면 확인 가능

     

    4. useradd 명령을 /etc/default/useradd 파일 관리

    [사용법]

     # useradd -D option

    [주요 옵션]

    -D 사용자 추가 시 기본적으로 반영되는 정보 파일인 /etc/default/useradd 내용 출력
    설정 편경을 원한다면 이 옵션과 함께 아래 옵션들을 사용하면 된다
    -g 기본 그룹 지정. 여기에서 지정하는 값은 /etc/group 내에 있어야 한다
    리눅스 표준인 LSB (Linux Standard Base) 를 따라가는 리눅스 배포판인 경우 기본 그룹 지정이 가능
    레드햇 계열 리눅스에서 설정하면 /etc/default/useradd 파일에 변경된 값이 반영은 되나 실제 사용자 추가 시 적용되고 있지 않다
    -b 사용자 홈 디렉터리의 상위 디렉터리 지정
    -f INACTIVE 행과 관련된 옵션으로 패스워드 유효 기간이 만료된 후 언제 이 게정을 사용할 수 없도록 할 것인지 하루 단위로 설정
    -e 사용자 계정 만료일 지정
    -s 사용자 기본 셸 지정

     

    5. /etc/login.defs

     - 메일 디렉터리, 패스워드 관련 설정, UID 최솟값 및 최댓값, GID 최솟값 및 최댓값, 홈 디렉터리 생성 여부, 기본 UMASK 값, 패스워드에 적용하는 암호화 알고리즘 등이 정의되어 있음

     

    6. /etc/skel

     - 사용자 생성 시 기본적으로 제공되는 파일이나 디렉터리가 위치한다

    [사용예]

    # mkdir /etc/skel/www

      - 사용자를 추가하면 www 라는 디렉터리도 제공된다

     

     

     

    사용자 계정 관리 : usermod

    개요

    - 사용자의 셸, 홈 디렉터리, 그룹, UID, HID 등을 변경하는 명령어

    [주요옵션]

    -d : 사용자 홈 디렉터리 변경. 변경할 디렉터리는 미리 생성되어야 한다. -m 과 같이 사용하면 사용하던 홈 디렉터리의 파일과 디렉터리도 같이 옮겨주므로 이 경우 디렉터리를 생성하지 않아도 된다 (--home)

    -m : 사용자의 홈 디렉터리 변경 시 기존에 사용하던 파일 및디렉터리를 옮겨주는 옵션. -d 와 함께 쓰인다 (--move-home)

    -g : 사용자 그룹 변경 (--gid)

    -s : 사용자 셸 변경 (--shell)

    -u : 사용자 UID 값 변경

    -e : 계정 만기일 변경. YYYY-MM-DD 또는 MM/DD/YY 형태로 지정

    -f : 패스워드 만기일이 지난 후 패스워드에 lock 을 설정할 유예 기간 지정 (--inactive)

    -c : 사용자의 간단한 정보 입력 및 변경 (--command)

    -G : 추가로 다른 그룹에 속하게 할 때 쓰인다 (--groups)

    -a : -G 옵션과 같이 사용하는 옵션. 기존 2차 그룹 이외에 추가로 2차 그룹을 지정할 때 사용 (--append)

    -p : /etc/shadow 의 두번째 필드인 암호화된 패스워드 값 변경 시 사용. 암호화된 값으로 값 지정 (--password)

    -l : 사용자 아이디 변경 (--login)

    -L : 사용자 패스워드에 잠금을 걸어 로그인을 막는다 (--lock)

    -U : 사용자 패스워드에 설정된 잠금을 푼다 (--unlock)

     

     

    사용자 계정 삭제 : userdel

    개요

    - 사용자 계정 삭제

    [주요옵션]

    -r : 사용자 홈 디렉터리 및 메일 관련 파일까지 제거 (--remove)

     

     

     

    사용자 패스워드 관리(1) : passwd

    개요

    - passwd 은 기본적으로 패스워드를 부여하거나 패스워드를 변경하는 명령

    - 계정을 사용하지 못하게 하거나 패스워드 만기일 및 유효 기간 등을 설정할 수 있다

    [주요옵션]

    -S : 사용자에 대한 패스워드 정보를 알 수 있다

    -l : 사용자의 패스워드에 잠근을 걸어 로그인을 막는다 (--lock)

    -u : 사용자에게 설정되어 있는 패스워드 잠금을 푼다 (--unlock)

    -d : 사용자 패스워드 삭제. 패스워드 없이 로그인 가능

    -n : 패스워드 변경까지의 최소 날짜 설정. 패스워드 변경 후 최소로 사용해야 되는 날짜 수

    -x : 현재 패스워드 유효기간 지정. 패스워드 최대 사용 가능한 날짜 수

    -w : 패스워드 만료 전 경고 날짜 지정

    -i : 패스워드 만료된 뒤 사용자 계정 사용이 실제 로그인이 불가능하게 되기까지의 유예기간 설정

    -e : 다음 로그인 시 반드시 패스워드 변경하도록 할 때 사용. 이 옵션을 사용하면 /etc/shadow 의 세 번째 필드 값이 0 으로 설정

     

     

    사용자 패스워드 관리(2) : chage

    개요

    - 사용자의 패스워드 정보를 출력하고 설정하는 명령

    - /etc/shadow 날짜 관련 필드 설정 가능

     

     

    사용자 패스워드 관리(3) : chpasswd

    개요

    - 사용자 패스워드 변경. 여러 사용자들을 한 번에 패스워드를 변경 시 사용

     

     

     

     

     

     

    ssh

    ssh 란

    - 원격 시스템에 로그인하여 명령을 실행하는 프로그램

    - 패킷을 암호화 하여 telnet 이나 rlogin 에 비해 안전

    - 기본 설정 포트는 22번이며 원격 셸, scp, sftp 기능을 지원함

    - ssh-keygen을 이용하면 인증키를 이용한 접속이 가능함

    telnet 과 ssh 비교

    - telnet : 클라이언트와 서버간의 데이터 전송 시, 일반 텍스트 형태를 패킷으로 전달하여 패킷의 내용이 유출당할 수 있다.

    - ssh : 패킷 전송 시 암호화시키므로 안전하게 패킷을 전송할 수 있다.

    버전

    - ssh1

    - ssh2 : ssh 와 호환은 되지만 기본적으로 호환성을 포함하고 있는 것이 아니므로 ssh1 을 지원하려면 ssh1 서버를 같이 운영해야 한다. 이 중 암호화 RSA 키 교환을 비롯하여 다양한 키 교환 방법을 지원한다.

    - ssh2 는 ssh1의 보안 기능을 강화하여 새로 나온 보안 프로토콜로 ssh1 과는 완전히 다른 프로토콜이다.

    특징

    - 패킷을 암호화하여 다른 원격 프로그램인 telnet 이나 rlogin 에 비해 안전하다.

    - rlogin 처럼 패스워드 입력 없이 로그인이 가능한다.

    - rsh 처럼 원격 셸을 지원한다.

    - 원격 복사(scp) 를 지원한다.

    - 안전한 파일 전송(sftp)를 지원한다.

    - 로그인 전에 보여주는 메시지를 별도의 파일로 지정할 수 있다.

    ssh 설치

    - 리눅스 에서는 ssh 의 공개버전인 openssh 를 사용한다. ssh 서버와 ssh 클라이언트 프로그램으로 나누어져 있다.

    - 레드햇 계열 리눅스에서는 3개 패키지로 구분해서 배포하고 있다.

     1. openssh : openssh 서버와 openssh 클라이언트에 모두 필요한 핵심적인 파일들이 들어있는 패키지 ssh-keygen 명령이 들어있다.

     2. openssh-server : openssh 서버 관련 패키지. 데몬인 sshd, sftp 서버 등이 들어있다.

     3. openssh-clients : openssh 클라이언트 관련 패키지. ssh, scp, sftp 등의 명령어가 들어있다.

    서버 설정

    - ssh 서버 환경 설정 파일 : /etc/ssh/sshd_config

    - 실행 데몬 스크립트 : /usr/sbin/sshd

    - 실행 명령 : systemctl start sshd.service

     

     

    백업관리

    백업종류

    - 전체백업 : 말 그대로 특정 디스크나 파티션 등 전체 백업

    - 부분백업 : 선택한 파일들만 백업하는 것

    - 증분백업 : 증가된 내용만 백업

    - 차등백업 : 바뀐 부분만 백업

     

     

     

    파일 및 디렉터리 관리

    소유권(Ownership) 과 허가권(Permission)

    - 소유권 : 어떠한 파일이나 디렉터리를 소유하여 지배하는 권리 (사용자 소유권, 그룹 소유권)

    - 허가권 : 파일이나 디렉터리에 접근 권한을 설정하는 권리로 일반적으로 소유권을 가진 사용자가 허가권을 설정 (사용자, 그룹, 다른 사용자) 총 10개의 영역으로 나눌 수 있는데, 첫 번째 영역은 파일 타입. 나머지 9개는 각 3개씩 나눠 첫 세자리는 파일을 소유한 사용자에게 적용되는 권한, 두 번째 세자리는 해당 그룹에 속한 사용자들에게 적용되는 권한, 마지막 세 자리는 그 외의 다른 사용자들에게 적용되는 권한

    - ls -l 명령으로 확인 가능

    [posein@localhost ~] $ ls -l lin.txt

    -rw-rrw-r--. 1 posein posein 13 Jan 11 11:05 lin.txt

    차례대로 허가권, 소유권을 가진 사용자, 그룹 소유권

     

    특수권한

    1. 특수권한의 개요

     - 일반 사용자도 root 권한이 필요한 경우가 있다. 이 때 일부 권한 허용 등을 위한 특별한 권한이 있다. 

    특수 권한 설명
    Set-UID 실행파일에 사용됨
    Set-UID 가 부여된 파일을 실행 시, 해당 파일을 실행하는 동안 실행시킨 사용자의 권한이 아닌 해당 파일의 소유자 권한으로 인식한다
    실행 파일에 주로 사용하므로 설정하면 소유자 권한 부분의 x 자리에 s 로 표기된다
    만약 실행 권한이 없는 파일에 부여하면 대문자 S 로 나타난다
    Set-GID d
    Sticky-Bit d

     2. 특수 권한의 확인

    3. 특수 권한의 설정

     

     

    파일 및 디렉터리 관리 관련 명령어

    chmod(change mode)

    chown(change owner)

    -

    chgrp(change group)

    -

    umask

    -

     

     

    파일 링크 (Link)

    파일 링크 개요

    관련 명령어

    하드 링크와 심볼릭 링크

     

     

    파일 시스템 관리 및 복구 > 파일 시스템 생성

    파일 시스템 생성의 개요

    파일 시스템 생성의 예

     

     

     

    파일 시스템 관리 및 복구 > 관련 명령어

    fdisk

    mkfs(make filesystem)

    mke2fs

    -

    mkfs.xfs

    -

    mount

    umount

    eject

     

     

    파일 시스템 관리 및 복구 > 관련 파일

    /etc/fstab

    /etc/mtab

    blkid

     

     

     

    파일 시스템 관리 및 복구 > 파일 시스템 점검 및 관리

    fsck(filesystem check)

    e2fsck

    xfs_repair

    df(disk free)

    du(disk usage)

    dd(data dumper)

    partprobe

    - 변경된 파티션 정보를 반영시킬 때 사용하는 명령

    - 재부팅 하지 않아도 적용됨. 반영되지 않는 경우도 있는데 /proc/partitions 에서 확인하고, 반영되지 않았다면 재부팅 해야함

    stat

    - 파일 또는 파일 시스템 관련 정보 출력

     

     

    파일 시스템 관리 및 복구 > 스왑생성

    개요

    관련명령어

    1. mkswap

     - 스왑 파티션이나 스왑 파일을 생성하는 명령

    2. swapon

     - 스왑 파티션이나 스왑 파일을 활성화시키는 명령으로 스왑의 상태 확인도 가능

    3. swapoff

     - 활성화된 스왑 파티션이나 스왑 파일을 중지시킨다

    4. free

     - 현재 사용 중인 메모리의 상태를 출력해 주는 명령. 기본적인 정보는 /proc/meminfo 파일에서 가져온다

    스왑 영역 만들기

     

     

     

    파일 시스템 관리 및 복구 > Disk Quota

    개요

    관련 명령어

    1. xfs_quota

    -

    2. edquota

    - 사용자나 그룹에 쿼터를 설정할 때 사용하는 명령. 실행시키면 vi 편집기가 실행되고 기본 단위가 KB 이므로 10MB 를 제한하려면 10000 이라고 입력해야 한다

    3. repquota

    - 파일 시스템에 설정된 쿼터 정보 출력

    4. quota

    - 사용자나 그룹 단위로 쿼터 설정 정보를 출력해주는 명령

    5. setquota

    - 쿼터를 설정하는 명령. vi 편집기를 이용하는 대신 직접 명령행에서 설정 가능

    6. quotacheck

    - quota 기록 파일 (aquota.user, aquota.group 또는 aquota.group) 을 가장 최근 상태로 업데이트 시키는 명령

    -  파일 시스템을 검사하여 aquota.user 와 같은 quota 기록 파일을 생성하는 명령

     

     

     

    backup 및 restore

    tar (tape archive)

    - 유닉스와 리눅스 시스템 모두 사용 가능한 유틸리티

    - 파일이나 디렉터리들을 하나의 파일로 묶어 주는 역할

    - 사용이 쉽고 소량의 파일 백업에 좋고 원본 파일을 남겨두므로 안전하다

    1. 전체백업

    [전체 백업 예]

    # tar cvfp home.tar /home

      - /home 디렉터리를 퍼미션 등을 그대로 유지하면서 home.tar 라는 파일로 묶는다

    [전체 백업 복원 예]

    # tar xvf home.tar

      - home.tar 를 풀어서 현재 디렉터리에 복원한다

    2. 증분 백업

    [증분 백업 예]

    # tar -g list -cvfp home1.tar /home

      - -g는 증분 백업에 사용하는 옵션으로 list 라는 파일의 내용을 토대로 증분 백업을 시도하는데, 처음 사용하는 경우 전체 백업을 사용한다

    # tar -g list -cvfp home2.tar /home

      - list 라는 파일의 내용과 비교하여 증가된 것만 home2.tar 로 백업한다

    [증분 백업 복원 예]

    # tar xvf home1.tar -C /

    # tar xvf home2.tar -C /

      - 처음에 백업한 파일부터 순차적으로 복원하면 된다

    3. 날짜를 이용한 부분 백업

    [부분 백업 예]

    # tar -c -v -N '13 May 2013' -f home.tar /home

      - /home 에서 2013년 5월 13일 이후로 변경된 파일만을 home.tar 로 백업한다

    4. 분할 및 압축 백업

    [압축 및 분할 백업 예]

    #tar zcvf - /home | split -b 10m - home.tar.gz

      - /home 디렉터리를 압축하여 10MB 단위로 백업한다. split 명령은 지정한 파일명 뒤에 aa,ab 등의 형태로 파일이 생성되므로 'home.tar.gzaa', 'home.tar.gzab' 등으로 생성된다

    [복원 예]

    # cat home.tar.gza* | tar zxvf -

      - split 명령은 텍스트 파일 관련 명령어이므로 복원할 때 cat 명령을 사용한다

    [주요옵션]

    -c : 아카이브생성

    -x : 아카이브 파일풀기

    -v : 작업내용 출력

    -f : 아카이브의 파일 이름 지정

    -r : 파일추가

    -t : 아카이브 파일 풀지않고 내용 확인

    -g : 증분백업 (snap shot 파일)

    -p : 권한 그대로 유지 백업/해제

    -z : gzip 압축 (압축 해제 시 같은 옵션 .gz gunzip : 압축해제)

    -j : bzip2 압축 ( .bz2 bunzip2 : 압축해제)

    -J : xz 압축 ( .xz unxz : 압축해제)

     

    cpio

    - 많은 양의 데이터에 대해서는 tar 보다 빠르다

    - 장치 파일이나 네트워크 파일 등의 특수 파일도 백업이 가능하고 백업본의 크기도 작고, 백업본에 손상된 부분이 있더라도 손상된 부분을 제외하고 나머지 부분을 복구한다

    - 기존 명령어를 사용하여 백업을 진행하므로 다양한 조건을 활용하여 백업 가능하다

    - 단점은 완전 백업만 지원한다

    [사용법]

    $ [셸명령어 | ] cpio option > 파일명

    $ cpio option < 파일명

    [주요옵션]

    -o: 표준 출력으로 보내어 사용 (--create)

    -i : 표준 입력으로 받을 때 사용. 백업한 자료 불러올 때 사용 (--extract)

    -v : 과정을 상세히 출력 (--verbose)

    -c : 아카이브 포맷 형식을 아스키 형식으로 헤더정보를 읽고 씀 (-H newc 옵션과 동일)

    -t : 내용만 확인 (--list)

    -d : 디렉토리를 생성 (--make-directories)

    -F : 표준 입출력 전환 기호 대신에 파일명을 지정할 때 사용 (--file=파일명)

    -B : 입출력 블록 사이즈를 조절할 때 사용. 기본 512byte 이고 최대 5120byte 까지 가능

    -H 포맷 : 아카이브 포맷 형식을 지정하는 옵션. 'bin', 'newc', 'crc' 등 값 사용 (--format 포맷)

    [사용 예]

    # find /home | cpio -ocv > home.cpio

      - /home 을 home.cpio 파일로 백업한다

    # ls *.cong | cpio -ocv > conf.cpio

      - *.conf 파일을 conf.cpio 로 백업한다

    # cpio -icdv < home.cpio

      - home.cpio 의 내용을 현재 디렉터리에 복원한다

    # cpio -ic < conf.cpio

      - conf.cpio 에 백업된 데이터를 복원한다

    # cpio -icvt < conf.cpio

      - conf.cpio 내용만 확인한다

    # cpio -icvt "s*.conf" < conf.cpio

      - conf.cpio 의 내용 중 s*.conf 에 해당하는 내용만 보여준다

    # ls *.conf | cpio -ocvF conf2.cpio

      - 현재 디렉터리에 있는 .conf 로 끝나는 모든 파일을 conf2.cpio 로 백업한다

    # cpio -iF conf2.cpio

      - conf2.cpio 로 백업된 데이터를 복원한다

    Q. # find /home | (cpio 명령과 옵션) > home.backup

     

     

    rsync (remote synchronous)

    - p484

    기본적으로 ssh 나 rsh 를 이용하여 전송하며, 다른 프로토콜 접속을 지원한다. 이전에 받은 백업본을 삭제하고, 원본과 항상 똑같이 백업이 되도록 설정이 가능하다. 데이터를 압축하여 전송이 가능하며 심볼릭 링크나 심볼릭 링크가 참고하고 있는 파일도 복사가 가능하다.

    - rcp(remote copy) 에 비해 처리 속도가 빠르다.

    - 내부 파이프라인을 통하여 전송기간을 줄인다.

     

    dump, restore

    - 파일들이 아닌 파일 시스템 전체를 백업할 때 사용하는 유틸리티. 보통 파티션 단위로 백업할 때 사용

    - 전체 백업과 증분 백업을 지원하고 level 0 이 전체 백업이고 나머지 level 을 가지고 부분백업 시에 사용

    - 백업할 때 /etc/fstab 파일을 참조하며 데이터 복원은 restore 명령 사용

    -  ext 파일 시스템인 ext2, ext3, ext4 만 지원하고 centos7 의 기본 파일 시스템인 XFS 는 지원하지 않는다.

    1. dump : 파티션 단위로 백업하는 명령, 작업 정보를 /etc/dumpdates 에 기록

    [사용법]

    # dump option 파일명 백업대상

    [주요옵션]

    0~9 : 레벨 지정

    -f : 백업할 매체나 파일명을 적는다

    -u : dump 작업 후 /etc/dumpdates 라는 파일에 관련 정보 기록

    [사용 예]

    # dump -0u -f backup.dump /dev/sda7

      - /dev/sda7 를 backup.dump 에 전체 백업하고, 작업 정보를 /etc/dumpdates 에 기록한다

    # dump -0u -f home.dump /home

      - /home 디렉터리를 home.dump 라는 이름으로 전체백업하고, 작업 정보를 /etc/dumpdates 에 기록한다

     

    2. restore : dump 로 백업한 내용을 복원할 때 사용하는 명령. 파일 기반으로 백업한 경우 복원하고자 하는 파티션 영역에 해당 파일을 복사한 후에 실행하면 된다

    [사용법]

    # restore option 백업파일명

    [주요옵션]

    -i : 대화식으로 복구할 파일을 선택한 후 복원할 때 사용

    -f : 백업할 매체나 파일명을 적는다

    -r : 전체 복원 시 사용. 파일 시스템이 미리 생성되어 있어야 하고, 마운트도 되어 있어야 한다

    [사용예]

    # restore -rf backup.dump

      - backup.dump 에 백업된 데이터를 전체 복원한다

    [root@localhost home] # restore -if home.dump

    restore > ls

    . :

    joon/  lin/  lost+fount/ posein/

    restore > add joon

    restore > ls

    . :

    *joon/  lin/  lost+found/ posein/

    restore > extract

      - home.dump 에 백업된 데이터를 상호 대화식으로 복원한다. 명령을 실행하면 'restore >' 라는 프롬프트가 나타난다. ls, add, extract 명령어 등을 이용하여 확인 및 부분 복원이 가능하다

     

    dd (data dumper)

    - 파티션이나 디스크 단위로 백업 시 사용

    - 사용하기 쉬우나 많은 시간 소요

    - 공유 디렉터리로 사용되는 하드디스크 전체를 CD-ROM 용량에 해당하는 650MB 단위로 분할해서 백업하려고 한다

    [사용예]

    # dd if=/dev/sda1 of=/dev/sdb1 bs=1k

      - 블록 사이즈 1KB 단위로 하여 /dev/sda1 을 /dev/sdb1 으로 백업한다

    # dd if=/dev/sda of=/dev/sdb bs=1M

      - 블록 사이즈 1MB 단위로 하여 /dev/sda 을 /dev/sdb 으로 백업한다

     

     

    로그 파일/명령어

    로그파일 설명 형식 로그 명령어
    secure 사용자 원격접속 정보, vi 편집기를 사용하여 편집이 가능한 로그 파일 test file grep
    pacct 사용자별 시간대별 명령어 기록 binary file lastcomm, acctcom
    utmp 현재 로그인한 상태 정보를 담고 있는 로그 파일 binary file w, who, finger
    wtmp 성공한 로그인, 로그아웃 정보
    시스템의 boot/shutdown 히스토리를 담고 있는 로그 파일
    binary file last
    btmp 실패한 로그인 정보를 담고 있는 로그 파일 binary file lastb
    xferlog ftp 로그 파일 textfile  
    dmesg 커널링버퍼 (kernel ring buffer) 의 내용을 출력하고 제어
    시스템이 부팅할 때 출력되었던 로그 기록
      dmesg
    messages 시스템에 문제가 생겼을 때 가장 먼저 찾아보는 로그 파일
    syslog.conf 에서 로그를 남기지 않는 것으로 지정된 내용을 제외한 모든 항목 기록
       
    boot.log 서비스 데몬들의 부트에 관련된 정보 기록
    각 데몬들의 시작, 종료, 실패 내용이 기록됨
    부팅과 관련된 내용 뿐 아니라 종료 시의 내용도 기록
       
    /var/log/httpd/access_log apache 서비스 데몬의 로그 파일    
    /var/log/httpd/error_log apache 서비스 데몬의 에러 사항에 대한 내용 기록    

    명령어와 관계있는 파일 연결

    - lastb : /var/log/btmp

    - lastlog : /var/log/lastlog

    - dmesg : /var/log/dmesg

    - last : /var/log/wtmp -> 콘솔, telnet, ftp 등 이용하여 접속한 사용자 기록, 시스템을 재부팅한 기록 등의 로그가 쌓이는 파일. 바이너리 파일로 last라는 명령으로 확인할 수 있음

    rsyslog

    - 로그 기록과 관련된 리눅스 초기의 syslog 를 대체하여 성능을 대폭 강화한 패키지로 멀티 스레드 지원, TCP 프로토콜 지원, SSL 및 TLS 지원, DB 로그 관리 지원 등과 같은 다양한 기능 지원

    - 인증 관련 로그를 ihduser 사용자의 터미널에 나타나도록 rsyslog.conf 파일에 설정하는 내용 : authpriv.* ihduser

    logrotate

    - 로그 파일을 여러개로 분할해주는 프로그램

    - 로그 파일의 자동 로테이션 기능, 압축 기능, 제거 기능을 지원

    - 각 로그 파일은 하루, 일주일, 한 달 단위로 로테이션 할 수 있다.

    - 시스템과 관련된 기본적인 로그 설정 : /etc/logrotate.conf

    - 응용 프로그램 /etc/logrotate.d 디렉터리 내에 위치하여 로그 파일 관리

    - 명령행에서 logrotate를 직접 사용가능하다. 하지만, 현재 리눅스에서는 /etc/cron.daily 디렉터리에 등록되어 있다. cron에 의해 스케줄링 되어 실행되고 있다.

    xferlog

    -  FTP 등을 통해 파일이 전송된 기록이 저장된 로그 파일

    - /var/log/xferlog 에 위치함

    - direction : 전송 방향을 나타내며 o(outgoing) 과 i(incoming)이 있다. 전송된 지시를 나타내는 영역이다.

    - access-mode : 사용자가 로그인 하는 방법 (a: 익명 사용자, g: 게스트 사용자, r: 로컬 사용자). 사용자가 어떤 형태로 login 했는지 나타내는 영역.

    - completion-status : 전송상태 나타냄 (c: 완전한 전송상태, i: 불완전한 전송상태)

    - transfer-type : 전송 유형 나타냄 (a: ASCII 전송, b: 바이너리 전송)

    - special-action-flag : 특별한 조치 (c: 파일압축, u: 파일압축해제, T: 파일 아카이브, _: 아무 action 도 발생하지 않음)

     

     

     

    sudo

    개요

    - 특정 사용자 또는 특정 그룹에 root 사용자 권한을 가질 수 있게 하는 도구

    - visudo 명령어 : 환경설정파일을 편집할 때 사용

    - /etc/sudoers 파일 : 환경설정 파일

    - 적용된 사용자는 'sudo 명령어' 형태로 실행하며 root 권한을 대행함

     

     

     

    보안도구

    tcpdump

    - 조건식을 설정하여 네트워크 인터페이스를 거치는 패킷 헤더 정보 출력

    nmap

    - 네트워크 탐지 도구 및 보안 스캐너로 시스템의 서비스 중인 포트를 스캔하여 관련 정보를 출력. 운영 중인 서버에 불필요하게 작동하고 있는 서비스 포트를 확인할 수 있음

    nessus

    - 가장 많이 사용하는 취약점 스캐너

    tripwire

    - 원래 파일의 무결성을 체크할 수 있는 프로그램

    John the Ripper

    - 사용자 보안 강화를 위해 단순한 패스워드를 설정한 사용자를 찾아서 경고 조치를 시행함

     

     

     

    find

    find [경로] [-옵션] [옵션내용]

    - name : 파일명으로 탐색

    - perm : 파일의 권한으로 탐색

     [-] : 설정된 권한의 모든 것이 설정된 파일을 찾는 것

     [+] : 설정된 권한 중 하나라도 설정된 파일 찾는 것

    - group

     

     

     

    rpm 

    개요

    - Red Hat Package Manage

    - 설치 및 갱신 모드, 제거 모드, 질의 모드, 검증 모드, 소스 rpm(.src.rpm) 의 리빌드 모드

    [사용법] 

    $ rmp [option] [패키지_파일명]

     

    1. 설치 및 갱신 (install & update) 모드 https://starrykss.tistory.com/1878

     - 새로운 패키지를 설치하거나 갱신(update)할 수 있다

    [주요 옵션]

    -i : 새로운 패키지를 설치할 때 사용. 기본적으로 이전 버전의 같은 패키지가 있을 경우 설치 되지 않음 --install

    -U : 기본 패키지를 새로운 버전의 패키지로 업그레이드 할 때 사용. 만약 설치된 패키지가 없을 경우에도 새로운 버전을 설치할 수 있음 (이 때는 -i 와 같음) --upgrade

    -F : 이전 버전이 설치되어 있는 경우에만 설치 --freshen

    -v : 메시지 자세히 보여줌

    -vv : 메시지를 아주 자세히 보여줌

    -h : 설치 상황을 # 기호 표시해줌 --hash

    --force : 기존 버전이 설치되었을 경우처럼 강제로 설치할 때 사용

    --nodeps : 의존선 무시. rpm 설치 시 의존성 관계에 있는 패키지가 존재하지 않을 경우 설치가 되지 않는데, 이럴 때 강제로 설치할 때 사용

    --test : 실제로 파일에 기록하는 작업을 제외한 대부분을 테스트할 때 사용. 패키지를 실제 설치하기 전에 제대로 설치되는지 테스트해 볼 경우 사용. 보통 -vv 와 같이 사용

    --rebuilddb : 특정한 패키지 설치 후 rpm 패키지를 검색 했으나, 나타나지 않을 때 rpm db 를 업데이트할 때 사용

     

    2. 제거 모드

    - 설치된 패키지 제거

    - 패키지 제거 시 -e 옵션 사용

    - 다른 패키지에 대한 의존성이 발생한 경우 제거되지 않는다

    [주요 옵션]

    -e : 설치된 패키지 삭제, 의존성을 갖는 패키지가 있는 경우 삭제되지 않음, --erase

    --nodeps : 의존성을 갖는 패키지가 있어도 삭제

    --test : 실제로 제거하지 않고 테스트

    --allmatches : 동일한 이름을 갖는 패키지가 중복 설치되어 있는 경우 모두 제거

     

    3. 질의모드

    - 패키지 관련 정보를 알아내기 위해 -q 옵션 사용

    [주요 옵션]

    -q : 질의 시 꼭 사용해야 하는 옵션. 패키지를 찾으면 패키지 이름과 버전만 표시. --query

    -i : 설치된 패키지의 정보 출력. -p 옵션과 같이 사용하면 rpm 패키지 파일에 대한 정보 알 수 있음. --info

    -l : 패키지에서 설치한 모든 파일 정보 출력. -p 와 함께 사용하면 rpm 패키지 파일이 설치되는 목록 파일을 알 수 있음. --list

    -a : 시스템에 설치된 모든 패키지 목록 출력 --all

    -p 패키지 파일명 : rpm 패키지의 파일에 대한 정보를 보여줌. 이 옵션을 사용하려면 패키지 파일명을 정확히 알아야 함

    -f 파일명 : 지정한 파일을 설치한 패키지 이름 출력

    -c : 해당 패키지의 설정 파일이나 스크립트 파일 출력

    -d : 해당 패키지의 문서 파일 출력

    -R : 어떤 패키지에 의존하고 있는지 보여줌. 해당 패키지가 설치되거나 동작 시 필요한 패키지 목록을 보여줌. --requires

    -changelog : 특정 패키지의 바뀐 내역을 최근부터 연대순으로 보여줌

    --scripts : 설치 및 제거 관련 스크립트를 보여줌

    --filesbypkg : rpm 패키지가 많을 경우, 목록으로 보이는 파일 앞에 패키지 명을 붙임

    --queryformat : 질의의 결과를 원하는 형태로 출력할 때 씀. C 언어의 printf() 함수의 동작 방법과 유사함

     

    4. 검증보드

    - rpm DB 에 저장되어 있는 패키지의 메타데이터 정보를 이용하여 변경된 정보를 찾아내는 모드

    - -V(--verify) 옵션을 사용한다

     

    5. 리빌드(rebuild) 모드 : rpmnuild

    - rpm 소스 파일인 .src.rpm 파일을 패키지 파일로 만드는 모드

    - rpmbuild 명령어 사용

     

     

     

    디스크 확장 (마운트)

    개요

    - 하드 디스크 용량이 부족할 경우 디스크를 추가 장착하여 용량을 늘릴 수 있다 https://starrykss.tistory.com/1861

     

     

     

     

    stat : timestamp 전보 확인

    touch : timestamp 수정 및 생성

     

     

     

    Q 시스템 전체에서 Set-UID 가 설정된 파일을 전부 찾는 명령은?

     find / -type f -perm -4000

     : / 아래에 있는 -perm 4000(Set-UID) 설정된 -type f(파일) 을 find 찾겠다

    perm 4000 : 정확히 같은 권한을 가진 파일을 찾는다

    perm -4000 : 부여한 권한을 만족하는 파일을 전부 찾는다

    perm /4000 : 부여한 권한을 하나라도 만족하는 파일을 찾는다

    728x90

    '자격증' 카테고리의 다른 글

    [SQLD] 4.SQL 활용  (0) 2021.11.18
    [SQLD] 3.SQL 기본  (0) 2021.11.18
    [SQLD] 2.데이터 모델과 성능  (0) 2021.11.15
    [SQLD] 1.데이터 모델링의 이해  (0) 2021.11.15
    정보처리 산업기사 실기 [ 신기술 동향 ]  (0) 2021.09.22
Designed by Tistory.