2018년 1월 26일 금요일

리눅스 (LINUX) 기초 및 기본 명령어 정리 (centOS7) <진행 중>

 
 
CHAPTER 1. 리눅스 역사와 특징
 
 
유닉스 종류

IBM
AIX
HP
HP-UX
ORACLE
Solaris
APPLE
MAC OS X
 

종류
Debian  -  UbuntuRedhat  -  CentOS


특징
높은 이식성, 확장성 
안전성과 신뢰성
다중 사용자 다중 작업 
계층적 파일시스템

========================================================

  
CHAPTER 2. 리눅스 기본 환경
 
 
1. 컴퓨터의 주요 구성요소
 
 1) 하드웨어
  • RAM : 주기억장치, 보조 기억장치에 저장되어있는 프로그램을 실행하게 되면 복사본이 RAM에 적재되고 RAM에서 실행된다.
  • CPU : RAM으로부터 명령어를 받아와서 해당 명령어를 실행하고 다시RAM으로 보내  는  역할.
  • I/O : 사용자가 외부 장치로부터 컴퓨터와 상호작용할 수 있도록 도와주는 장치.
             ex) 키보드, 마우스
  • 디스크 : 보조 기억장치, 파일 또는 디렉토리 및 모든 소프트웨어를 저장하는 장치.


* 폰노이만 방식 (RAM, CPU, I/O)

 
 2) 소프트웨어
  • 시스템 SWOS, 컴파일러
  • 사용자 SW : 일반적 프로그램

   리눅스 운영체제 구성요소
커널 (kernel) : 운영체제의 핵심적인 부분, 파일시스템 관리, 장치 관리, CPU 제어, 메모리 제어, 프로세스 제어 등
쉘 (Shell)     :  사용자와 커널 사이의 인터페이스를 담당, 사용자가 사용하는 명령어를 커널이 알 수 있게 번역해주는 명령어 해석기                                                       (번역기)  ex) cmd 
디렉토리      :  파일을 가지고 있거나, 또 다른 다렉토리를 가지고 있는 그룹 계층적으로 구성, 파일 시스템에 의해서 관리.

2. 리눅스 설치 기본 설정

 1) 리눅스 설치
최소 설치 : 최소한의 SW 설치로 가장 기본적인 리눅스 커널만 설치      
GNOME 데스크탑 : 윈도우처럼 데스크탑 환경을 제공해주는 오픈소스인GNOME 및 기타 유용한 프로그램을 같이 설치, GNOME 외에도 KDE와 같은 여러 데스크탑 프로그램이 존재한다. 
이런 프로그램을 통틀어 X-Window라고도 한다. 



 2) CLI 구문
Command-Line interface의 약자로 시스템에서 특정 작업을 수행하기 위해 터미널에서 명령어를 내리는 명령어 입력 환경을 의미

  • 명령어의 구조 
명령어     :  시스템에서 특정 작업을 하기 위해 실행하는 실행 파일, 프로그램
옵션        :  명령어를 어떻게 실행할 것인지 지정한다. 일반적으로 대시(-) 문자 뒤에 옵션을 지정 ex) netstat -r, --destination, -d
아규먼트  :  명령어에 의해서 영향을 받는 파일 or 디렉토리 등 특정 대상

  • 매뉴얼 페이지
man [명령어]
동 : 방향키, Space(한페이지 이동), Enter(한 줄 이동)
검색(/ 입력 후, 찾고싶은 내용 입력 후 Enter, n 다음 검색, N 이전 검색) 종료(q)

 메모리를 조작하면 프로그램을 조작할 수 있다. (크랙, 해킹)
 

=======================================================

 
CHAPTER 3. 디렉토리 및 파일 보기

 
1. 디렉토리 작업 


관리자로 로그인으로 진행
su  -  root 암호:exit

1) 현재 작업 디렉토리 확인  ( 대소문자 구분이 필요한 명령어 )
pwd
*리눅스의 디렉토리 : 최상위 디렉토리는 언제나 / (루트 디렉토리)

 
2) 디렉토리 내용 확인
ls [ 디렉토리 or 파일 ] : 아규먼트가 디렉토리일 경우 디렉토리 안의 내용을보여주고 아규먼트가 파일일 경우 파일의 이름만 출력
-a : 숨겨진 파일을 확인하기 위해서 사용하는 옵션
* Tip : 리눅에서는 파일 이름 앞에 . 가 붙으면 숨겨진 파일이다. 
- l : 출력 내용을 좀 더 자세히 확인하기 위한 옵션
* Tip : 일반적으로 ls 명령어는 -al 옵션과 같이 사용한다. 
ex) ls -l 명령어 실행 결과
 
-rw-rw-r--.
1
sjb
sjb
0
1월 25 14:57
file
(1)
(2)
(3)
(4)
(5)
(6)
(7)
 
(1) : 10개의 문자, 첫 번째 문자는 파일의 종류 (-:파일, d:디렉토리, l:심볼릭링크)
      나머지 9개 문자 해당 파일의 접근 권한
(2) : 해당 파일의 하드 링크의 수
(3) : 해당 파일의 소유자(관리자)
(4) : 해당 파일의 관리 그룹
(5) : 파일 크기
(6) : 마지막 수정 시간
(7) : 파일 이름

-d : ls 명령어를 사용할 때 아규먼트로 디렉토리를 지정하면 디렉토리 안의 
내용을 보여주는데 d옵션을 사용하면 디렉토리 그 자체에 대한 정보를 보여준다.
-R : 계층적으로 이루어진 리눅스의 디렉토리 구조를 한 눈에 보여주는 명령어 
-F : 파일 종류를 확인할 때 사용
   /         - 디렉토리 파일
   *         - 실행 파일
         - 심볼릭 링크 파일
   (none)  - 텍스트 파일
  * Tip : file 명령어, 파일 형식은 절대 확장자가 아닌 파일 안의 내용(바이트)로 결정 
 3) 디렉토리 변경
cd [대상 경로] :  
// 대상 경로를 입력할 때 상대경로 또는 절대경로 입력

  • 상대 경로 : 기준이 현재 작업 디렉토리, 
                      ex) cd sjb_1
                     
                      (기준이 정해져 있지 않다.)

  • 절대 경로 : 기준이 무조건 / 디렉토리
                      ex) cd /sjb /sjb_1           
                      (기준이 정해져 있다.)

                                         /
                                                   |
                 sjb                           admin                          etc
         |                               |                               |
        sjb1                       admin1                        etc1
         |                               |                               |
        sjb2                       admin2                        etc2

경로 축약 
      :  현재 디렉토리 
..       :  상위 디렉토리 
~      :  현재 로그인 한 사용자의 홈 디렉토리 
     :  이전 디렉토리        

4) 파일 작업
 파일 내용 확인
cat      :  파일 전체 내용 출력 
more   :  파일 내용을 한 페이지씩 (화면 크기) 
(Enter :한줄 , Space : 한 페이지, / : 검색,  n 다음검색, N 이전검색, q 종료) 
head    :  기본값으로 위에서 10줄 출력, 옵션으로 변경 가능 
tail       :  기본값으로 아래에서 10줄 출력, 옵션으로 변경 가능 
wc       :  텍스트의 내용을 출력하는게 아니라, 파일의 줄/단어/문자수를 확인 
할 수 있는 명령어 
- l   :  줄 수 
-m  :  문자 수
                                                                            
======================================================


CHAPTER 4. 디렉토리 및 파일 내용 변경


 
1. 복사
cp  [옵션]  [원본]  [사본]
-r  : 디렉토리를 복사할 때 사용
-i  : 사본으로 지정한 파일과 똑같은 이름의 파일이 있을때 덮어쓸지 묻는다. 

2. 이동
mv    [대상]    [목적지]

3. 생성
# 빈 파일 생성
touch  [파일 이름]     ex) touch FileA 
- 파일 다수 생성
touch  [파일 이름] [파일 이름] [파일 이름]   ex) touch fileB fileC fileD  
# 디렉토리 생성
mkdir  [디렉토리 이름]
- 다수의 디렉토리 생성
mkdir [디렉토리이름1] [디렉토리이름2] [디렉토리이름3] 
- 경로 상의 모든 디렉토리 생성
mkdir -p [디렉토리1]/[디렉토리2]/[디렉토리3]


4. 이름변경
mv [대상] [변경할 이름]

5. 삭제
1) 파일 삭제
       rm  [옵션] [대상]
 -i  : 삭제 문구가 나온다. (기본 적용)
 -f  : 즉시 삭제 옵션
 -r  : 디렉토리 삭제 옵션
 * Tip : 모두 삭제할시에는 -rf [옵션] 명령어를 응용하여 한번에 삭제한다.
 2) 디렉토리 삭제
 rmdir  [대상]

6. 링크
하나의 특정 파일 또는 디렉토리에 접근을 쉽게할 수 있도록 하는 방법

  • 하드 링크 (Hard link) 
하드링크는 특정 파일이 다스크에 저장되어있는 위치를 가리키는 포인터
ln    [원본]  [링크 파일]
ls -i   명령어로 확인 
ls -l   명령어로 확인 

  • 심볼릭 링크 (symbolic link)
윈도우의 바로가기 아이콘과 비슷한 개념, 실제 디스크 상의 위치를가리키는 것이 아니라 실제 디스크 상의 위치를 가리키고 있는 링크를가리키고 있는 포인터이다. 
ln -s  [원본]  [링크 파일]

# 하드링크와 심볼릭링크의 차이점 
하드링크    : 원본과 아이노드 번호가 일치, ln  , 
ls 결과에서 하드링크 수가 증가, 원본 이동시에 접근 가능 
디렉토리는 생성 불가능, 동일 파일시스템에서만 생성 가능 
용량 차지 X,  

심볼릭링크 : 원본과 아이노드 번호가 다르다, ln-s 
ls 결과에서 하드링크 수 변화X,  원본 이동시 접근 불가능 
디렉토리도 생성 가능, 다른 파일 시스템에서도 생성 가능 
용량 차지O,            
* Tip : 파일시스템 종류 (윈도우 : FAT32(구식), NTFS(신식))                                   
=======================================================
             

CHAPTER 5. VI 편집기 사용


 1. VI 편집기

파일의 내용을 작성하거나, 수정할 때 사용한다. 리눅스에서는 모든 장치를 
파일로써 관리하고 장치들에 대한 설정도 파일로 이뤄져있기 때문에 뭔가를 
설정하기 위해서는 항상 편집기를 사용하여 설정해야 한다.
  •  VI 편집기의 모드   :set nu

Last Line
Mode
: , /, ?
Command
Mode
ESC
Edit
mode
<------------------------------>
<------------------------------>
Enter, ESC
a, i, o

command  : 가장 기본이 되는 모드, 명령어를 입력하여 삭제, 수정, 복사  
커서 이송 등의 작업을 수행 
Edit          : 내용을 입력, 삭제할 때 사용하는 모드 
Last Line    : 내용을 저장 또는 편집기 

  •  커서 이동

방향키 : h, j, k , l 
Backspace : 커서를 한 칸 왼쪽으로 이동하는 명령 
Space : 커서를 한 칸 오른쪽으로 이동하는 명령 
G : 파일의 제일 마지막 줄로 이동 
gg : 파일의 제일 첫 번 째 줄로 이동 
[n]G : n번째 줄로 이동 
0 : 현재 줄의 처음으로 이동 
$ : 현재 줄의 마지막으로 이동 
w : 다음 단어로 이동 
b : 이전 단어로 이동


  •  삭제
dd : 한 줄 삭제 
x : 한 문자 삭제 
d [커서이동] 조합

  • 복사 및 붙여넣기
yy : 한 줄 복사
p : 붙여넣기 (한 줄 복사했으면 커서 다음 줄에 붙여넣기.
yw : 한 단어 복사 시 커서 다음에 붙여넣기)
y [커서이동] 조합

  • 잘라내기 및 붙여넣기
dd : 한 줄 삭제
p : 붙여넣기
(한 줄 복사했으면 커서 다음 줄에 붙여넣기, 한 단어 복사시 커서 다음에 붙여넣기) 
d [커서이동] 조합
 

  • 검색
/[문자] : [문자]검색, n 다음 검색, N 이전 검색 
?[문자] : [문자]검색, N 다음 검색, n 이전 검색

  • 바꾸기
r     : 커서가 위치한 곳의 문자 하나를 변경
:%s/[old]/[new]/g       : old를 new로 변경
:s/[old]/[new]             : 커서 위치한 줄의 처음 old를 new로 변경
:s/[old]/[new]/g          : 커서 위치한 줄의 모든 old를 new로 변경
:%s/[old]/[new]/c        : old를 new로 변경, 물어봄
:%s/[old]/[new]/gc      : old를 new로 변경, 물어봄
:2,15s/[old]/[new]/gc   : 2~15라인에서 old를 new로 변경
 
  • 작업취소
u    : 작업 취소, ctrl +z
 
  • 환경 설정
:set nu      : 라인넘버 표시 
:set nonu    : 라인넘버 표시 제거 
:set nonu   : 라인넘버 표시 제거 
:set ic        : 검색 시 대소문자를 구분하지 않게 설정 
:set noic    : 검색 시 대소문자를 구분하게 설정
 
  • 저장 및 종료
:w    : 저장
:q    : 종료 
:wq   : 저장 및 종료 
:!      : 강제 옵션 
:w    : [파일 이름] 다른 이름으로 저장
* Tip : ~/.vimic 파일에 환경 설정 명령어를 저장해두면 vi 편집기 환경을 영구 설정 가능 

2. VIM 편집기


VI편집기를 호환하는 VI improved의 앞 글자를 딴 VIM 편집기,VI의 대부분의 기능이 호환가능하며, 추가적인 VIM 편집기만의 기능을추가하여 사용자에게 편의성을 제공하는 프로그램

       1) 다중 파일 실행
VIM 실행 중 다른 파일 열기
:e [dit] [파일 이름]
VIM 실행 할 때 동시에 다른 파일 열기 
VIM 실행 시 [파일1] [파일2] [파일3] 
:N 왼쪽파일로 이동 
:n 오른쪽 파일로 이동

       2) 창 분할
:sp[lit] [파일 명] : 수직으로 창 두 개를 여는 것. 
:vs[plit] [파일 명] : 수평으로 창 두 개를 여는 것.  ctrl + w + 방향키 : 창 이동 
:tabe[dit] [파일 명] : 새로운 탭으로 파일이 열리는 것.
:tabn[ext] : 다음 탭 이동 
:tabp[revious] : 이전 탭 이동 
:tabc[lose] : 탭 닫기.

       3) 단어 자동 완성
해당 파일에 존재하는 텍스트 중에서, 동일한 텍스트를 입력하고자 할 때 ctrl + n 입력 시 매칭 창에서 방향키와, Enter 로 선택할 수 있다.

======================================================


CHAPTER 6. 파일 및 디렉토리 검색


1. 파일 내용 검색



  1)  grep
파일 내용에서 특정 문자 또는 패턴을 검색하는 명령어
패턴을 검색해서 매칭되는 결과를 화면으로 출력
 
           grep [옵션] [패턴] [파일 이름]
 
-i : 검색 패턴 대소문자 무시
-n : 매칭되는 줄 번호 표시
-v : 검색 패턴 제외하고 나머지를 출력
-c : 검색 패턴과 매칭 되는 줄 개수 출력
-w : 단어 단위로 검색
-l : 매칭되는 패턴이 있는 파일 이름 출력
ex) grep -l bash /etc/*
                정규 표현식
패턴 검색할 때 특수한 문자를 사용해서 검색할 패턴을 조금 더 디테일하게 만들어준다.
 
^   : 줄의 시작 지정                    ex)  ^root
$   : 줄의 마지막 지정                 ex)  root$
.    : 한 문자 대치                       ex)  r..t
*   : 여러 문자 대치                    ex)  r*
[]  : 패턴 중 한 문자 일치             ex)  [rR]oot
[^] : 패턴 중 제외할 문자 지정      ex)  [^T]oot


  2)  egrep 
 grep 명령어와 사용방법은 동일하다. grep 명령어의 기능을 추가한 명령어
확장 정규 표현식 지원 [확장 표현식]
+  : 특정 문자 앞에 하나 이상의 문자가 있음을 지정
      ex) [a-z]+tion   -> cation, mention 
 : 문자 또는 문자
      ex) root | admin -> root 또는 admin 
( ) : 문자 또는 문자열
      ex) ha (ve/ving) -> have 또는 having



  3)  fgrep
grep과 egrep과 사용법은 비슷하지만 정규표현식이나 확장 정규표현식이 표현식으로 인식되는 것이 아니라 일반 문자로 인식된다.


2. 파일 및 디렉토리 검색


  1) find
계층적인 디렉토리 구조에서 특정 파일 및 디렉토리를 검색하기 위한 명령어
find [경로] [조건] [동작]
 
                  [조건]
-name : 검색할 때 이름으로 검색 
-type : 검색할 파일 종류 지정,  f(파일),  d(디렉토리)
-user : 특정 사용자가 소유한 파일 검색 
-perm : 특정 권한을 가진 파일 검색 
-size : 파일의 특정 크기 검색 (+이상, -이하, -바이트c, 킬로k, 메가 M, 기가 G) 
ex) find / -name passwd -mtime -2
-atime : 파일의 접근 시간을 검색    (+이상, -이하)
-mtime : 파일의 수정 시간으로 검색  (+이상, -이하) 
ex) find / -name passwd -mtime -2

                  [동작]
-print   : 기본 값, 터미널에 파일의 경로와 이름을 출력 
-ls       : 자세한 정보 표시 
-exec [특정 명령어] { }\;  : 검색한 파일에 특정 명령어 수행 
-ok [특정 명령어] { }\;     : 검색한 파일에 특정 명령어 수행, 대화식


[예제]  
1) 시스템 전체에서 파일의 이름이 test이고 파일의 타입은 파일인 파일 중용량이 3메가바이트 이하인 파일을 검색
find / -name test -type f -size -3M
 

2) 사용자 홈 디렉토리에서 숨겨진 파일을 찾고 해당 파일의 자세한 정보를 출력find ~ -name '.*' -ls

3) 사용자 홈 디렉토리에서 파일의 용량이 1기가 이상인 파일을 찾아서 삭제find ~ -size +1G -exec rm {} \;

========================================================



CHAPTER 7. 퍼미션(Permission)의 이해 및 사용 (권한)
 
리눅스의 모든 파일과 디렉토리는 퍼미션(Permission)들의 집합으로 구성되어 있다.이 퍼미션들은 시스템 상에 존재하는 파일들에 대한 읽기, 쓰기, 실행에 대한 접근여부를결정한다. (ls -l 명령어로 확인 가능하다.) 
이러한 퍼미션은 다중 사용자 환경을 제공하는 리눅스 환경에서는 가장 기초적인 보안 방법

1. 접근 통제 기법

DAC (Discretionary Access Control)
: 객체에 대한 접근을 사용자 개인 또는 그룹의 식별자를 기반으로 제어하는 방법.
운영체제 (윈도우, 리눅스)
 
MAC (Mandotory Access Control) 또는 (Rule Based Access Control) 
: 모든 접근 제어를 관리자가 설정한대로 제어되는 방법, 주체와 객체에 각각 보안레이블 정보를 관리자가 설정하고 양자 간 보안레이블 정보에 기초하여 높은 보안을 요하는 정보가 낮은 보안수준의 주체에게 노출되지 않도록 접근을 제어하는 방법.
(관리자에 의한 강제적 접근제어)

RBAC (Role Based Access Control) 
: 관리자가 사용자에게는 특정한 역할을 부여하고, 각 역할마다 권리와 권한을 선정 
역할기반 접근 제어
 

2. 퍼미션의 카테고리















-rwxrw-r--. 1 root root 2101 1월 29 09:45 passwd
-rwx
rw-
r--.
1
root
root
2101 1월 29 09:45 passwd
소유자
관리그룹
나머지
 
소유자
관리그룹
 






















r   : 읽기 권한
: 쓰기 권한
x  : 실행 권한
-  : 권한 없음

소유자      : 일반적으로 파일이나 디렉토리를 생성한 사용자, 명령어로 변경 가능
관리 그룹  : 파일이나 디렉토리를 생성한 사용자가 속한 그룹, 명령어로 변경 가능
그 외        : 소유자도 아니고 관리 그룹에 속한 사용자도 아닌 경우
 
UID  : 시스템이 사용자를 구분할 때 사용하는 특정한 구분 값
GID  : 시스템이 그룹을 구분할 때 사용하는 특정한 구분 값
 
*Tip : id 명령어로 현재 로그인 한 사용자의 uid 및 gid 확인 가능
 

3. 퍼미션의 모드



1) 심볼릭 모드


































명령어 : chmod [권한] [파일 이름]
 
예를 들어 그룹(g)에게 실행 권한(x)을 더할(+) 경우 chmod g+x 파일명 형태를 사용한다.
 
 
 
2) 8진수 모드
 
chmod 숫자표기법은 이렇게 0부터 7에 해당하는 8진수의 조합을 사용자(u), 그룹(g), 기타(o)에 맞춰서 3자리의 숫자로 표기하는 것이다.

8진수로 표기하는 방법은 일단 rwx 세 자리를 각각 2진수로 표시한다.




















r=4, w=2, x=1 -=0 
---    0 
--x    1 
-w-    2 
-wx    3 
r--       4 
r-x     5 
rw-     6 
rwx     7
 

<8진수 권한의 예>
/etc/passwd의            권한 644 
/etc/shadow의            권한 000 
/etc/group의                  권한 644 
파일을 생성했을 때          권한 644 
디렉토리를 생성했을 때      권한 755
 

<숫자표기법으로 파일 권을 표시>
rwx rwx rwx   = 777 
rwx r-x r-x    = 755 
r-x r-x r--    = 554 
rw- rw- r--   = 664 
rw- --- ---  = 600
 

(1) 소유자에게 모든 권한을 준다.
u+rwx, u=rwx
8진수=> chmod 700
 
(2) 관리 그룹에게 읽기 쓰기 권한만 준다.
g+rw, g=rw
8진수=> chmod 060
 
(3) 그 밖의 사용자에게 읽기 실행 권한만 준다.
o+rx, o=rx
8진수=> chmod 005
 
(4) 모든 사용자에게 읽기 권한을 뺏는다.
a-r
8진수=> chmod 000


4. 접근 제어


 파일 디렉토리

 
파일
디렉토리
읽기
cat, more, head, tail
ls
쓰기
vi편집기로 내용 수정
touch, mkdir, mv, cp, rm
실행
파일 이름
cd

<권한별 명령어 실행 가능 여부 실습>
권한은 root 사용자가 변경 명령어 실행은 일반 사용자가 실행
 
 
파일
명령어
cat
vi 편집기로 수정
실행
0
X
X
X
1
X
X
X 읽기권한
2
X
▽ 쓰기권한
X
3
X
X
4
O
읽기 전용
X
5
O
읽기 전용
O
6
O
O
X
7
O
O
O
 
 
디렉터리
명령어
cat
생성, 수정
실행
0
X
X
X
1
X
X
O
2
X
X
X
3
X
O
O
4
X
X
5
O
X
O
6
X
X
7
O
O
O
 
실행을 하기위해선 최소한 읽는 권한이 있어야한다.
 
 

5. 기본 권한

파일 : 644, 디렉토리 : 755 
기본권한은 umask 값으로 설정할 수 있다.기본권한은 XOR 연산 방식을 통해 설정된다. 
파일의 경우 666 XOR umask파일의 경우 777 XOR umask
 

일반적으로 umask는 022로 설정되어 있다.
 
 
AND
OR
XOR
0
0
0
0
0
0
1
0
1
1
1
0
0
1
1
1
1
1
1
0
 
# 파일666 xor 037 = 640
 
     rw- rw- rw-
     --- -wx rwx 
    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
=>   rw- r-- ---
 
 
# 디렉토리777 xor 037 =
 
rwx rwx rwx
 
umask 명령어로 확인 가능
umask [값] 설정 변경, 재부팅하게 되면 0022로 초기화된다.
 
 

6. 특수 권한

SetUID :
4, 해당 파일의 소유자 이외의 모든 사용자가 파일을 실행할 때마치 소유자인 것처럼 파일을 실행할 수 있게 하는 권한일반 사용자가 setUID가 걸려있는 파일에 접근할 때나머지 사용자 권한에 실행 권한이 없으면 setUID는 소용이 없다. 
권한 설정에서 대문자가 나온다면 잘못 설정된 항목이다.즉, 소유자에게 실행 권한이 없으면 대문자 표시되는 것. 
ex) rwSr-xr-x. 1 root root 0 1월 29 15:45 file

























SetGID  : 2, 해당 파일의 관리그룹 이외의 모든 사용자가 파일을 실행할 때마치 관리 그룹인 것처럼 파일을 실행할 수 있게 하는 권한일반 사용자가 setGID가 걸려있는 파일에 접근할 때나머지 사용자 권한에 실행 권한이 없으면 setGID는 소용이 없다.관리그룹에게 실행권한이 없으면 대문자로 S가 표시된다. 
Sticky bit  : 1, 일반적으로 디렉토리에 설정하는 권한스티키 비트가 설정된 디렉토리는 자유게시판처럼 운영된다.
(스티키비트가 부여된 디렉토리의 경우)디렉토리 내의 파일을 관리자 또는 소유자만이 삭제할 수 있다.다른 소유자의 파일은 읽기만 가능하다.



CHAPTER 8. 쉘 (Shell) 명령어 사용


 
sh
sch
tcsh
ksh
bash
명령어 히스토리
X
O
O
O
 
별명
X
O
O
O
 
쉘 스크립트
O
O
O
O
 
자동 완성
X
O
O
O
 
명령행 편집
X
X
O
O
 
작업 제어
X
O
O
O
 
프롬프트 모양
$
%
<
$
 
 
쉘 확인 명령어 : echo $shell (echo : 화면 출력 명령어) ($ : 변수)
 
1) 쉘 메타문자 사용
 
쉘에서 특별한 의미를 가지는 문자 기호.
 
(1) 경로 이름 메타문자
 
~ : 현재 로그인한 사용자의 홈 디렉토리 
~ [사용자 이름] : 해당하는 사용자의 홈 디렉토리 
~+ : 현재 작업 디렉토리 
~- : 이전 작업 디렉토리- : 이전 디렉토리
 
(2) 파일 이름 대체 메타문자
 
* : 모든 문자를 대체 
? : 한 문자 대체 
[ ] : 범위를 지정하거나, 후보를 지정하거나 할 때 사용
ex) rm -rf file[a-c,h-j,x,y,z]
 
(3) 인용부호 메타문자
 
인용 부호는 메타문자의 의미를 다르게 하거나, 무시하도록 하는 문자 
‘’ : 안에 작성하는 모든 메타문자를 일반 문자로 취급 
“” : $, `, \ 세 개의 문자를 제외한 나머지 메타문자를 일반 문자로 인식
ex) echo "hello" 시 hello 만 출력되고 echo \"hello\" 시 "hello" 가 출력된다. 
`` : 안에 들어있는 내용을 명령어로 인식해서 명령어를 실행한다.
 * Tip : \는 바로 뒤에 오는 메타문자를 일반문자로 인식하게 하는 문자
 
(4) 방향재지정 메타문자
 
방향재지정 메타문자는 입력 장치 또는 출력 장치를 다른 곳으로 재지정할 수 있다. 일반적으로 쉘의 입력장치는 키보드이며, 출력 장치는 모니터가 된다. 이를 표준 입력, 표준 출력이라고 한다. 또한 쉘에서는 표준 에러 장치가 있는데 같은 모니터를 사용한다. 즉, 현재 모니터에는 일반적인 출력과 에러 출력이 같이 출력되는 상태이다.























표준 입력
stdin
키보드
표준 출력
stdout
모니터
표준 에러
stderr
모니터


방향 재지정 메타문자는 출력을 모니터가 아닌 파일 또는 다른 명령어로 출력을 재지정 할 수 있다. 
또는 입력을 키보드가 아닌 파일을 입력으로 재지정할 수 있다.
 
파일 디스크립터 : 명령어의 입력 장치가 무엇인지 출력 및 에러를 어떤 장치로 출력할 것인지 결정해 주는 것.
 
0 : 표준 입력 
1 : 표준 출력 
2 : 표준 에러 
> : 표준 입력 재지정 ex) cat < /etc/passwd
< : 표준 출력 및 표준 에러 재지정
 ex) cat /etc/passwd > /사용자/passwd
 ex) cat /etc/passwd 1> /사용자/passwd
 ex) cat /etc/passwd 2> /dev/null (null : 쓰레기통) 
| : 앞 명령어의 출력을 뒤 명령어의 입력으로 사용 
 ex) cate /etc/passwd | grep user | wc -l
 
2) 명령어 히스토리
 
history - [번호] 
![번호] : 재실행 
!! : 최근 명령어 재실행 

3) 사용자 초기화 파일
 
부팅이 되면서 시스템이 자동으로 읽어와 적용시키는 파일.작업 환경을 커스터마이징 하기위해 수정해서 사용할 수 있다. 
/etc/profile : 관리자에 의해서 관리, 시스템 전체에 대한 설정 모든 사용자에게 적용, 시스템 부팅시 적용되는 파일
~/ .bashrc : bash 쉘이 실행 시 적용되는 파일. 해당 사용자 적용

~/ .bash_profile : bash쉘이 실행 시 적용되는 파일. 해당 사용자 적용
프롬프트 모양 정의 (PS1 (변수 언어))
별명 설정쉘 옵션히스토리 변수
 
* Tip : VI 편집기의 경우 ~/.vimrc를 사용하기도 한다.
 
 
 
CHAPTER 10. 프로세스 제어 및 작업관리


1) 프로세스
 
실행된 프로그램, 일반적으로 리눅스 시스템은 부팅 과정을 거쳐 init 프로세스를 실행한다. 
init 프로세스는 초기화 프로세스로서 시스템 부팅 후 실행되는 대부분의 프로그램을 실행한다.
 
 
2) 프로세스의 종류

부모 프로세스 : 다른 프로세스를 생성할 수 있는 프로세스
ex) 크롬 프로세스 하나를 끄면 전체가 꺼지는 예

자식 프로세스 : 부모 프로세스로부터 만들어지는 프로세스

데몬 프로세스 : 일반적으로 사용자가 실행시키지 않고 커널에 의해 구동되며 백그라운드로 동작, 특정 서비스를 제공하기 위해 구동된다. 파일 이름 끝에 d를 붙여서 사용하는 것이 일반적이다.
ex) x intd 
고아 프로세스 : 일반적으로 자식프로세스는 종료되면 부모 프로세스로 돌아가지만, 부모 프로세스가 먼저 종료된 경우에 자식 프로세스를 고아 프로세스라고 한다. 고아 프로세스는 init 프로세스가 처리 해준다. 
좀비 프로세스 : 프로세스를 종료되었지만 자원을 반납하지 않고 남아있는 프로세스
 
3) PID, PPID
 
프로세스는 실행될 때 PID라고 하는 번호가 할당된다. 시스템은 PID 번호로 프로세스를 관리.
 
* Tip: PPID는 부모 프로세스의 PID
 
 
4) PS 명령어

PID TTY
TIME CMD
47642 pts/0
00:00:00 su
47652 pts/0
00:00:00 bash
118202 pts/0
00:00:00 ps
 
PID : 프로세스의 ID 
TTY : 현재 터미널을 의미 
TIME : 해당 프로세스가 사용한 CPU 시간 
CMD : 실행된 명령어 

옵션 
-e : 시스템 상의 모든 프로세스 정보 출력 
-f : 상세한 정보 출력
 
UID
PID
PPID
C
STIME TTY
TIME CMD
root
2
0
0
1월29 ?
00:00:00 [kthreadd]
root
3
2
0
1월29 ?
00:00:02 [ksoftirqd/0]
root
5
2
0
1월29 ?
00:00:00 [kworker/0:0H]
root
7
2
0
1월29 ?
00:00:00 [migration/0]
 
UID: 프로세스 소유자 ID 
PID: 프로세스 ID 
PPID: 부모 프로세스 ID 
C: 스케줄링을 위한 CPU 사용량, 별로 의미 없는 필드 
STIME: 프로세스 시작 시간 
TTY: 장치 번호, ? 인 경우 터미널에서 실행된 것이 아닌 프로세스 
TIME: 프로세스에 대한 누적 실행 시간 
CMD: 명령 옵션 + 아규먼트
 
 
 
5) 기타 명령어
 
pstree : 부모 자식 관계를 볼 수 있는 명령어 
pgrep : ps 명령어와 grep 명령어를 한 번에 수행해주는 명령어 굳이 pgrep을 쓰기보다 ps -ef | grep 명령어를 더 많이 사용한다.
 
6) 프로세스 제어
(1) 시그널 번호 
1 : SIGHUP, Hang up, 프로세스 종료 없이 프로그램을 새로 초기화 
2 : SIGINT, Interrupt, Ctrl+c 
9 : SIGKILL, Kill, 무시할 수 없는 종료 
15 : SIGTERM, Terminate, 무시할 수 있는 종료
 
(2) kill 명령어, pkill 명령
kill : PID로 프로세스를 제어 
pkill : 프로세스 이름으로 제어
 
CHAPTER 11. 아카이브 생성
 

1) 아카이브

파일과 디렉토리를 안전하게 보관하기 위해 복사하거나, 아카이브 작업을 하여 테이프 백업 장치에 보관한다.
원본 파일이 예기치 않게 손상되거나, 삭제되었을 때 보관된 파일을 이용해 복구 가능하다.
 
* Tip : 아카이브 생성시에 절대 경로를 사용하지 않는다.
 
2) TAR
tar [function] [아카이브 파일] [파일 이름1] [파일 이름2] [파일 이름3]
c :
아카이브 생성
t :
내부 리스트 확인
x :
아카이브 해제
v :
tar 명령어 수행시 자세히 출력
f :
아카이브 파일 또는 장치 지정
 
(1) 아카이브 생성 
tar cvf [파일 이름] [파일 이름1] [파일 이름2] [파일 이름3] 
(2) 아카이브 확인 
tar tvf [파일 이름] 
(3) 아카이브 해제 
tar xvf [파일 이름]
 

3) JAR
 
(1) 아카이브 생성 
jar cvf [파일 이름] [파일 이름1] [파일 이름2] [파일 이름3] 
(2) 아카이브 확인 
jar tvf [파일 이름] 
(3) 아카이브 해제 
jar xvf [파일 이름]

 
CHAPTER 12. 압축 및 압축해제


1) 압축

  디스크 공간을 효율적으로 사용할 수 있는 기술

 
압축 시
해제 시
gzip
gzip [파일 명]
gunzip [압축 파일 명]
bzip2
bzip2 [파일 명]
bunzip2[압축 파일 명]
zip
zip [압축 파일명] [파일 명]
unzip [압축 파일 명]
compress
compress [파일 명]
uncompress [파일 명]
 
* Tip : tar zxvf [압축 파일 명] 아카이브와 gzip압축을 한 번에 해제할 수 있다.
        tarjxvf [압축 파일 명] 아카이브와 bzip압축을 한 번에 해제할 수 있다.
 
 
 
 
 



 
CHAPTER 8. 쉘 명령어 사용
 
 
CHAPTER 9. 쉘 프로그래밍
 
 
CHAPTER 10. 프로세스 제어 및 작업관리
 
 
CHAPTER 11. 아카이브 생성
 
 
CHAPTER 12. 압축 및 압축해제