RAID 1

-미러링 RAID

-총 Disk 용량의 50% 사용

-Fault Tolerant 기능 제공

 

 

/dev/sdf, /devsdg

 

1. 파티션 생성

 

#fdisk /dev/sdf                                #/dev/sdg

n 새로운 파티션                            n 새로운 파티션

p 주파티션 생성                            p 주파티션 생성

1 파티션 1번                                1 파티션 1번

enter 디스크의 처음부터                enter 디스크의 처음부터

enter 마지막까지 파티션 생성      enter 마지막까지 파티션 생성

t 타입 변경                                t 타입 변경

fd 레이드 타입으로 변경                fd 레이드 타입으로 변경

w 저장 후 종료                            w 저장 후 종료

 

#fdisk -l /dev/sdf     //타입 확인

#fdisk -l /dev/sdg   //타입 확인

 

2. RAID 구성

#mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdf1 /dev/sdg1

부팅 장치로 사용할 수 없다는 경고 무시 (y키 입력)

 

3.파일 시스템 생성

#mkfs -t ext4 /dev/md1

4. 마운트 포인트 생성

#mkdir /RAID-1

#mount /dev/md1 /RAID-1

5. 마운트 및 확인

#df -h

#mount

#mdadm --detail /dev/md1

 

6.UUID 확인, fstab 등록

#blkid /dev/md1

UUID=5800d33c-51e0-4edc-a39e-2c9ae963a368

#vi /etc/fstab

7. RAID 설정 저장

#mdadm --detail --scan > /etc/mdadm.conf

 

RAID 5

- RAID 1처럼 데이터의 안정성도 어느정도 보장되면서 RAID 0 처럼 공간 효율성도 좋은 방식

-최소 3개의 이상의 DISK가 필요하여 보통 5개 이상의 disk로 구성한다.

-Disk 장애 발생 시 Parity 이용하여 데이터를 복구

 

 

저장 방향 -->

ㅁ 패리티

 

A    B    C    D

0    0    0     ㅁ

1    1    ㅁ    1

1    ㅁ    0    1

ㅁ    0    1    0

짝수 패리티를 사용하여 각 패리티 비트의 값

A    B    C    D

0    0    0     (0)

1    1    (1)    1

1    (0)    0    1

(1)    0    1    0

 

DISK C 장애 발생

A    B    C    D

0    0    X    (0)

1    1    X    1

1    (0)  X    1

(1)   0   X    0

 

첫 번째 행     0 0 X 0

두 번째 행     1 1 X 1

세 번째 행     1 0 X 1

  번째 행     1 0 X 0

 

각 행의 값이 짝수 이어야 하므로 C-disk 의 데이터 예측 가능

 

C-disk     0 1 0 1

 

1. 파티션 생성 ( /dev/sdh, /dev/sdi, /dev/sdj)

#fdisk /dev/sdh    주파티션 1 fd 타입

      #fdisk /dev/sdi     주파티션 1 fd 타입

#fdisk /dev/sdj     주파티션 1 fd 타입

2. 레이드 구성

#mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdh1 /dev/sdi1    /dev/sdj1

3. 파일 시스템 생성

#mkfs -t ext4 /dev/md5

4. 마운트 포인트 생성 후, 마운트

#mkdir /RAID-5

#mount /dev/md5 /RAID-5

#df -h

#mount

#mdadm --detail /dev/md5

5. UUID 확인 fstab 등록

#blkid /dev/md5

UUID=3cddf70c-be4e-4fbe-92fb-65bebe973e90

#vi /etc/fstab

[UUID] [마운트포인트] [파일시스템] [옵션] [덤프] [디스크검사]

 

6. 레이드 설정 저장

#mdadm --detail -scan > /etc/mdadm.conf

 

장애 복구 능력

LINEAR - X

RAID-0 - X

RAID-1 - O

RAID-5 -O

 

장애 테스트

sda (HardDisk)

 

LINEAR-RAID sdb sdc (2, 3)

RAID-0    sdd sde (4,5)

RAID-1    sdf  sdg (6,8)

RAID-5    sdh sdi sdj (9,10)

HardDisk 2,4,6,8 삭제하기

#reboot

#df -h 확인하기(md1 md5 남아있는것 확인)

 

#Disk 4개 추가 후, (0.25GB)

#reboot

 

#fdisk -l

 

# fdisk /dev/sdb

# fdisk /dev/sdd
# fdisk /dev/sdf
# fdisk /dev/sdh

 

LINEAR , RAID-0

 

#mdadm --stop /dev/md9

 

#mdadm --create /dev/md9 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1    

 

#mkfs -t ext4 /dev/md9

#mount /dev/md9 /RAID-LINEAR

 

#mdadm --stop /dev/md0

#mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1

#mkfs -t ext4 /dev/md0

#mount /dev/md0 /RAID-0


RAID -1

#mdadm /dev/md1 --add /dev/sdf1

RAID - 5

#mdadm /dev/md5 --add /dev/sdh1

 

 

 

 

 

1번 세션                                            2번 세션

#watch -n 0.1 -d "cat /porc/mdstat"        #mdadm /dev/md1 -add /dev/sdf1

 

#mdadm /dev/md5 -add /dev/sdh1

 

 

 

 


 

 

 

'리눅스 ' 카테고리의 다른 글

쿼터명령어  (0) 2017.04.15
쿼터  (0) 2017.04.15
빠진날 3  (0) 2017.04.15
빠진날 2  (0) 2017.04.15
빠진날 1  (0) 2017.04.15


데몬이란?
 - 실제 서비스를 제공하는 프로세스의 집합

데몬의 동작유형
 - xinetd 모드와 Standalone 모드
 
xinetd (eXtended Internet Services Daemon / 슈퍼데몬 )
 - 외부의 요청이 있을때만 반응하기때문에 반응속도가
   느리지만, 리소스 소모는 적다.
  
Standalone
 - 슈퍼데몬에 의지하지 않고 요청이 있을때 신속히
   반응 할 수 있지만, 항상 커널에 상주 하고 있기
   때문에 리소스 소모가 크다.
  
데몬의 종류
 - network 네트워크 관련된 정보를 설정을 활성화 하는 데몬
 - iptables 패킷 필터링 방화벽 데몬
 - postfix   메일 전송 역할을 하는 메일서버 데몬
 
리눅스마스터 1,2 급 시험용 데몬
ALSA - 사운드 관련 데몬
CUPS - 프린터 관련 데몬
SANE - 스캐너,캠 관련 데몬

-----------------------------------------------------------------
파일 시스템

리눅스에서 지원하느 파일 시스템의 종류
 - EXT3, EXT4, SWAP, XFS, NFS, ISO9660
 
EXT4 ( Extended File System )
 - 1EB의 최대 파일 시스템 사이즈와 16TB의 최대 파일 사이즈 지원
 - 서브 디렉토리 64000개 지원, 파일은 약 40억개 지원
 
Block Group
 - 슈퍼 블록
 - 그룹 디스크립터 테이블
 - 블록 비트맵
 - 아이노드 비트맵
 - 아이노드 테이블
 - 데이터 블록
 
inode
 소유자, 소유그룹 정보
 파일 접근 권한 정보
 타임 스탬프
 파일의 종류, 크기, 하드링크 수
 파일이 위치한 데이터 블록의 주소
 
Disk의 타입의 종류
1. IDE  (Integrated Drive Electronics)
2. SATA  (Serial Advanced Technology Attachment)
3. SCSI  (Small Computer System Interface)
4. SAS   (Serial Attachment SCSI)
 - 크기가 작고 안정적이며 성능이 우수하여 서버용으로
   자주 사용되는 디스크 타입이다.
  
파티션 (Partition)
 - 하나의 물리적인 하드 디스크를 여러 개의 논리적인
   디스크로 나누는 것
  
리눅스 파티션
- 주(Praimary) 파티션과 확장(eXtended)파티션, 그리고 논리(Logic)
  파티션으로 구분된다.
- 디스크 하나당 주 파티션은 4개까지만 생성이 가능
  그 이상의 파티션이 필요할 경우에는 확장 파티션을 생성 한 후에
  다시 논리 파티션으로 나누어 최대 12개까지 생성 할 수 있다.
- 파티션 명칭
 ex) /dev/sda  /dev/sdb
 
 1개의 디스크 1개의 파티션
 /dev/sda1
 
 1개의 디스크 3개의 파티션
 /dev/sda1
 /dev/sda2
 /dev/sda3
 
 2개의 디스크에 각 2개의 파티션
 
 1번 디스크     sda (SCSI, SAS 타입 디스크)
 /dev/sda1 /dev/sda2  hda (IDE타입,SATA타입 디스크)
       
 2번 디스크
 /dev/sdb1 /dev/sdb2

 df (Disk Free) - 파일 시스템 및 파티션별 자세한 용량 정보 확인
 -a 모든 파일 시스템 출력
 -h 용량을 읽기 쉽게 출력
 -i inode 사용정보를 출력

 du (Disk Usage) - 디렉토리나 파일의 용량을 확인
 -h 용량을 읽기 쉽게 출력
 -s 요약
 
 #fdisk (파티션 생성 / 수정)
 #fdisk [옵션] [장치명]
 -l 디스크 파티션 정보 출력
 
 파티션 생성 실습
 1. 시스템 종료 후, 오늘 날짜로 스냅샷
 2. 디스크 1GB 추가
 3. fdisk 확인
  #fdisk -l
 4. 디스크 사용을 위한 설정 과정
  파티션 생성
  (1) #fdisk [장치명]
   #fdisk /dev/sdb
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   p   print the partition table
   q   quit without saving changes
   t   change a partition's system id
   w   write table to disk and exit

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            1         130     1044193+  83  Linux

  
  
  
  
  1GB - 총 4개의 파티션으로 설정
  주파티션   200MB  /dev/sdb1
  주파티션   200MB  /dev/sdb2
  확장파티션
  논리파티션 200MB  /dev/sdb5
  논리파티션 나머지전부 /dev/sdb6
  
/dev/sdb1               1          26      208813+  83  Linux
/dev/sdb2              27          52      208845   83  Linux
/dev/sdb3              53         130      626535    5  Extended
/dev/sdb5              53          78      208813+  83  Linux
/dev/sdb6              79         130      417658+  83  Linux


mkfs (make filesystem)
#mkfs [옵션] [장치명]
 -t 파일 시스템의 타입을 지정
 
 #mkfs -t ext4 /dev/sdb1
 #mkfs -t ext4 /dev/sdb2
 #mkfs -t ext4 /dev/sdb5
 #mkfs -t ext4 /dev/sdb6
 
 마운트 - 특정 디렉토리에 파일시스템을 탑재하는것
        - 리눅스는 파일 단위로 모든 장치를 관리하기때문
       에 새롭게 만든 파일 시스템을 사용하기 위하여
    추가한 디스크 장치를 임의의 디렉토리에 마운트하여
    사용해야한다.
   
 마운트 포인트
  - 파일시스템을 디렉토리 연결시켜야하는데, 이때 연결되는
    디렉토리르 의미함
   
  mount [장치명] [마운트포인트]
  
  # mount /dev/sdb1 /DISK_1
  # mount /dev/sdb2 /DISK_2
  # mount /dev/sdb5 /DISK_3
  # mount /dev/sdb6 /DISK_4
  


 #vi /etc/fstab
 (1) 파일시스템 장치명
  - 장치명
  - UUID (범용 고유 식별자 / Universal Unique IDentifier)
   #blkid
   
UUID=5d678039-b1a7-49df-8540-455cae233370 /DISK_1 ext4 defaults 0 0
UUID=1edbe3c3-a09e-418b-af85-1e9985f12574 /DISK_2 ext4 defaults 0 0
UUID=86a06f88-03fe-4c39-8675-f117f7d110c7 /DISK_3 ext4 defaults 0 0
UUID=180c5f29-89a2-4dd3-a44d-89d604b4bfbd /DISK_4 ext4 defaults 0 0
  
  장치명    
  /dev/sda
  /dev/sdb 
  /dev/sdc
  
  
 (2) 마운트 포인트
 
 (3) 파일시스템 타입
 
 (4) 마운트 옵션
  - defaults (rw, suid, dev, exec, auto, nouser, async)
 (5) 덤프 생성 유무
  - 덤프(백업) 생성         1
  - 덤프 파일 생성하지 않음 0
  
 (6) 파일시스템 검사 유무 (#fsck - 파일시스템 검사)
  0 - 무결성 검사 하지 않음
  1 - 우선순위 1위를 뜻하며, 대부분 / 파티션에 설정
  2 - 우선순위 2위를 뜻하며, 1순위 검사 후 검사
  
  
 /DISK_1  ext4 defaults 0 0
 /DISK_2  ext4 defaults 0 0 
 /DISK_3  ext4 defaults 0 0 
 /DISK_4  ext4 defaults 0 0 

 

 디스크추가 -> 파티션 생성 -> 파일 시스템 생성
    -> 마운트 추가 -> 마운트 -> UUID확인 -> fstab 등록

 1. 스냅샷으로 초기화
 2. 3GB 디스크 1개 추가
 3. 3개의 파티션 으로 생성 (#fdisk)
    주파티션 1G
    주파티션 1G
    주파티션 나머지 전부
   
 4. 파일 시스템 생성 ext4 (#mkfs)
 5. 마운트 포인트 /TEST_1 (#mkdir)
      /TEST_2
      /TEST_3 
 6. 마운트 확인    (#mount)
 7. 부팅 시 자동으로 마운트 하도록 fstab 등록, 단 UUID 이용 (#blkid)
 8. 리부팅 후 마운트 확인    (#df -h, #mount)
============================================================================== 

RAID (Redundant Array Of Inexpensive/Independent Disk)
 
RAID 구성 방식
 Hardware
  - RAID 컨트롤러 내부의 하드웨어 및 펌웨어에 의해 구현
  - 독자적인 메모리와 프로세서를 가지고 있다.
  - 안정적이나 대부분 고가
 Software
  - 운영체제에서 지원하는 방식
  - 저렴한 비용으로 H/W RAID와 동일하게 구현이 가능
  - 속도나 신뢰성은 H/W RAID보다 떨어진다.

Linear RAID   
 - 여러개의 디스크를 하나의 디스크처럼 사용하도록 만든다.
 - 첫 번째 디스크 완전히 채워지면 순차적으로 다음 디스크에 저장을한다.
    - 하나의 디스크에서 입/출력 작업이 실행된다.
 - 성능면에서 별다른 장점이 없음
 - 하나의 디스크가 장애가 발생하면, 전체 볼륨을 사용할 수 없게 된다.
 - 모든 디스크의 총량과 RAID볼륨의 용량이 같다.
 - 2개의 이상의 디스크를 필요로 한다.
 
 작업 준비
 스냅샷 초기화
 
 1. 디스크 추가
  0.25GB HDD * 9EA
 2. 디스크 추가 확인
  #fdisk -l   // /dev/sda를 제외한 /dev/sdb ~/dev/sdj 까지
                         9개 디스크 추가 확인
 3. 파티션 생성
  Linear Raid 사용 디스크 (/dev/sdb, /dev/sdc)
  #fdisk /dev/sdb
  새로운 파티션 n
  주파티션 p
  파티션번호 1
  파티션 크기 처음부터 마지막까지 전부 사용
  파티션 타입 변경 't'
  파티션 타입 설정 'fd'
 4. 파티션 생성 확인
  #fdisk -l /dev/sdb
     Id  System
     fd  Linux raid autodetect
  #fdisk -l /dev/sdc
     Id  System 
        fd  Linux raid autodetect
 5. RAID 구성
 

#mdadm
(1) RAID 생성
#mdadm --create [장치명] --level [레이드레벨] --raid-devices=[디스크 수] [장치명] [장치명]
(2) RAID 확인
#mdadm --detail --scan mdadm --detail [장치명]

(3) RAID 적용
#mdadm --detail --scan > /etc/mdadm.conf 
 
  #mdadm --create /dev/md9 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1
  mdadm: Defaulting to version 1.2 metadata
  mdadm: array /dev/md9 started
  
 6. 파일 시스템 생성
  #mkfs -t ext4 /dev/md9
 
 7. 마운트 포인트 생성
  #mkdir /RAID-LINEAR
  
 8. 마운트
  #mount /dev/md9 /RAID-LINEAR
  
 9. UUID 확인
  #blkid /dev/md9

UUID=42d6fa80-07a7-46c7-8181-f4dd4df4693f 

vi /etc/fstab << 여기에 입력
  
  
 11. RAID 확인
  #mdadm --detail /dev/md9
     #df -h
  
 12. RAID 적용
  #mdadm --detail --scan > /etc/mdadm.conf

 RAID 0
 - 스트파이핑(striping) RAID라고도 불린다.
 - 데이터를 여러 개의 디스크에 나누어서 쓰고 읽어 들임으로서
   데이터를 중복해서 기록하지 않기때문에 가장 높은 입/출력 성능을 제공한다. (가장 큰 장점!)
 - RAID 0의 용량은 모든 DISK 총 용량과 같다.
 - 최소 2개의 DISK를 필요로 한다.
 - 데이터 보호 기능이 없다. (Fault Tolerant 기능 제공 X)
 
 문제
 ex) 1TB 디스크 1개  LINEAR -> 데이터를 저장할 수 있는 공간은 ? 11TB
    10TB 디스크 1개  RAID 0 -> 데이터를 저장할 수 있는 공간은 ? 2TB
 
  
 1. 파티션 생성
 #fdisk /dev/sdd - 주파티션 1개 타입 FD
 #fdisk /dev/sde - 주파티션 1개 타입 FD
 
 2. 파티션 생성 확인
 #fdisk -l /dev/sdd  Linux raid autodetect
 #fdisk -l /dev/sde  Linux raid autodetect

 3. RAID 구성
 #mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1
 
 4. 파일 시스템 생성
 #mkfs -t ext4 /dev/md0
 
 5. 마운트 포인트 생성
 #mkdir /RAID-0
 
 6. 마운트
 #mount /dev/md0 /RAID-0
 
 7. UUID 확인
 #blkid /dev/md0
 
 8. fstab 등록
 UUID=f878311c-157e-4ad2-98d2-8374749d7282 

vi /etc/fstab
 9. RAID 확인
 #mdadm --detail /dev/md0
 #df -h
  
 10. RAID 적용
 #mdadm --detail --scan > /etc/mdadm.conf
 
 
 
 
 
 
 
 
 
 
 
 
 

 


  
  
  
  
  
  
  

 

 


   
   
   
   
   
   
   
   
   
  

'리눅스 ' 카테고리의 다른 글

쿼터  (0) 2017.04.15
RAID종류와설정  (0) 2017.04.15
빠진날 2  (0) 2017.04.15
빠진날 1  (0) 2017.04.15
계정생성  (0) 2017.04.01


4월8일 (토)

SetGID
- 프로세스가 실행한 사용자의 GID가아닌 소유한 그룹의 GID권한으로 실행된다.
- SetGID가 설정된 디렉토리에서 만들어지는 파일은 모두 해당 디렉토리의
  소유 그룹 허가권을 갖는다.
 
SetGID 설정밥법
- 기호모드 (g+s)
- 숫자모드 (2000)

- 팀단위로 작업할 경우 모든 사용자가 파일을 공유하도록 할때 사용된다.

Sticky Bit
- 모든 사용자가 생성/수정/삭제가 가능한 디렉토리에 적용하며, StickyBit 설정 후
  에는 해당 파일의 소유자만 해당 파일을 삭제할 수 가 있다.
 
StickyBit 설정
-기호모드 (o+t)
-숫자모드 (1000) 
 
  #cd /practice
  #mkdir sticky_test
  #cd sticky_test
  #mkdir temp1 temp2
 
  #chmod 1777 temp1   // 스티키 설정
  #chmod 777 temp2   // 일반 777 권한 설정

  #touch ./temp1/test1      // 테스트 파일 생성
  #touch ./temp2/test1      // 테스트 파일 생성

  #chmod 777 temp1/test1    // 777 허가권으로 수정
  #chmod 777 temp2/test1    // 777 허가권으로 수정
 
  #useradd web-admin1  // 사용자 계정 추가
  #su - web-admin1   // 계정으로 스위칭
 
  $cd /practice/sticky_test
  $cd temp2
 
  $ll
  rwx rwx rwx -> test1
  $rm test1     // 파일 삭제 가능
 
  $cd ..
  $cd /temp1
  $ll rwx rwx rwx -> test1
  rwx rwx rwx ->test1  // 파일 삭제 가능
  $rm test1
  rm: cannot remove `test1': 명령을 허용하지 않음
 
  허가권이 있음에도 삭제(rm, mv)를 할수가 없다.
 
 
  속성 (attribution)
  chattr - 특정파일에 속성을 변경하고자 할때 사용
  lsattr - 특정파일에 속성을 확인하고자 할때 사용
 
  속성의 종류
  i (immutable)   - 해당 파일의 내용 변경, 삭제, 링크 생성 등을 할수가 없다.
  a (append only) - 해당 파일의 내용만 추가가 가능하고, 삭제, 링크 생성 등은
                    할 수 가 없다.
 
  +  지정한 속성을 추가
  -  지정한 속성을 제거
 
  a_test 파일에 a속성 추가
  #cat > a_test    // X
  #cat >> a_test   // O
  #vi a_test    // X
  #rm a_test    // X
 
  e는 ext4 포멧을 ext3 포멧으로 변형시켜 주는 것
 
 
  ACL (Access Control List / 접근 제어 목록)
- 디렉토리 및 파일에 특정 사용자, 그룹에 특정 권한을 부여하는
  기능이다.

  getfacl [옵션] - 파일과 디렉토리에 ACL 설정 확인
  -d   기본 정보에 대해 확인
  -R   하위 디렉토리 및 파일까지 적용
 
  setfacl [옵션] [규칙] [파일명] 
  - 파일과 디렉토리에 ACL 설정
 
  -m 권한을 수정할 때 사용
  -x 권한을 삭제할 때 사용
  -R 하위 디렉토리 및 파일까지 적용
  -b 권한 및 mask를 전부 제거
 
  규칙
  u:[UID]:[권한] - 사용자에 대한 ACL을 설정
  g:[GID]:[권한] - 그룹에 대한 ACL을 설정
  o:[권한]   - 기타사용자에대한 ACL을 설정
  ex) 계정명 test1
      test1 계정의 UID 500
 
   1. u:500:rwx      group:500:rwx
   2. user:500:rwx         g:S-GROUP:rwx
   3. user:test1:rwx      other:rwx
   4. u:test1:rwx
   5. u:test1:1  -> --x   u:test1:7
   6. u:test1:2     -> -w-
   7. u:test1:7     -> rwx
 
 
# getfacl S-LV01   // S-LV01 디렉토리에 ACL설정을 확인

# file: S-LV01    // 파일/디렉토리의 이름
# owner: root    // 소유자
# group: S-GROUP   // 소유 그룹
user::---     // 사용자 허가권
group::rwx     // 그룹 허가권 
other::---     // 기타 사용자 허가권

#setfacl -m user:I-USER1:rwx S-LV01
// 사용자:I-USER1:가 S-LV01 디렉토리에 rwx권한 설정

#getfacl S-LV01
# file: S-LV01
# owner: root
# group: S-GROUP
user::---
user:I-USER1:rwx  // I-USER1 계정 추가 확인
group::rwx
mask::rwx
other::---

[root@Server-A test] # ll
d---rwx---+ 2 root S-GROUP 4096 2017-04-08 10:39 S-LV01
d---rwx---. 2 root S-GROUP 4096 2017-04-08 10:39 S-LV02

I-GROUP을 추가 한 후, I-USER1을 I-GROUP에 속하도록 설정
S-LV02 디렉토리는 I-GROUP에 속한 사용자들은 접근이 가능하도록 설정
I-USER1 계정으로 S-LV02 접근 가능 확인

#setfacl -m group:I-GROUP:rwx S-LV02


프로세스
- 시스템 초기화 프로세스
 init - 부팅 시 가장 먼저 실행되는 시스템 초기화 프로세스

프로세스 (Process)
 - 커널의 관리하에 현재 시스템에서 동작중인 프로그램이다.
 - init을 제외한 모든 프로세스는 부모-자식 관계를 가지고 있다.
 
프로세스 종류
 - 데몬 (daemon) 프로세스
   커널에 의해서 실행되고, 특정 서비스를 제공하기 위해 동작하고 있는 프로세스
  
 - 부모(parent) 프로세스 
 - 자식(child) 프로세스
   부모 프로세스에 의해 만들어지는 프로세스이다.
   자식 프로세스는 종료시 부모 프로세스에게 결과를 전달하고 죵료된다.
  
 - 고아(orphan) 프로세스
   자식 프로세스보다 먼저 부모 프로세스가 종료되었을때 해당 자식 프로세스는
   고아 프로세스가 되어 init 프로세스가 관리를 한다.
  
 - 좀비(zombie,defunct)프로세스
   자식 프로세스의 종료신호를 부모 프로세스가 처리하지 못할 경우, 자식 프로세스는
   좀비 프로세스가 된다.
  
   ps (Process Status) - 시스템에 동작중인 프로세스 확인
  
   -e  모든 프로세스에 대한 리스트 출력
   -f   full format 으로 출력
  
   -a   다른 사용자들의 프로세스도 출력
   -u   사용자 이름, 시간 등 상세한 정보를 출력
   -x   현재 사용하고 있는 모든 프로세스를 출력
  
   #ps -ef
   UID - 프로세스를 실행 시키는 프로세스의 소유자를 의미
   PID - 실행된 프로세에 부여된 숫자를 의미
   PPID - parents Process ID, 프로세스를 생성한 부모 프로세스의 PID
  
   #ps -ef | grep bash
   #ps -aux
  
   kill - 프로세스에게 신호를 전달하여 상태를 변화시키는 명령어
   #kill -[시그널] [PID]
  
   시그널 종류 확인
   #kill -l
   2) SIGINT - 프로세스 종료
   15) SIGTERM - 프로세스 종료
  
   9) SIGKILL - 프로세스 강제 종료
   18) SIGCONT - 프로세스 재시작
   19) SIGSTOP - 프로세스 정지
  
   #kill -SIGKILL 1234
   #kill -9 1234
  
   1번 세션       2번세션
   #vi /etc/passwd     #ps -ef | grep vi  
         // vi /etc/passwd -> PID 확인
   #kill -9 [vi /etc/passwd PID]
         #ps -ef | grep vi   // 종료 확인
  
   #ps -ef | grep bash
  
   프로세스 동작 형태
   1. 포어 그라운드 (Foreground Process)
  - 프롬프트에서 입력하는 대부분의 명령어는 포어 그라운드로 동작
  - 명령어의 실행 과정이나 결과를 화면에 출력
  - 포어 그라운드로 실행되는 프로세스가 종료되길 기다렸다가
    종료되면 다시 프롬프트(bash)를 보여주어 명령 대기 상태로 반환
   
   2. 백 그라운드 (Background Process)
  - 프로세스의 종료 여부에 관계 없이 즉시 명령 대기 상태가되어
    다른 명령을 실행 할 수 있음
     - 백그라운드로 실행 시키기 위해 '&' (ampersand)를 붙여 사용
          
  ex) #[명령어] &
  작업번호와 PID를 출력하며 백그라운드로 동작
  
  
 #jobs - 백그라운드에 동작하는 프로세를 확인
    #fg - 백그라운드 작업을 포어그라운드로 변경  
 #bg - 포어그라운드 작업을 백그라운드로 변경
  #fg %[작업번호]
        #bg %[작업번호]
  
 #sleep [숫자값] - 숫자값 만큼 정지 
  
  
    18) SIGCONT - 프로세스 재시작
    19) SIGSTOP - 프로세스 정지
  
  
   순서대로 명령어 입력
   1번세션           2번세션   
   1. #/bin/bash
   2. #/bin/bash
   3. #/bin/bash
   4. #sleep 9999999 &
   5. #cat /etc/services | more
   6.            #pstree -p
   명령어 용도 생각해보기
  
   #exit
   #exit
   #exit
  
   순서대로 명령어 입력
   #clear           #clear
  
 1. #/bin/bash
 2. #vi /etc/passwd        
             3. #ps -ef | grep bash
             // 방금 실행 시킨 /bin/bash의
                PID 번호 확인
             
             4. #kill -9 [확인한 /bin/bash PID]
                         [vi /etc/passwd PPID]
             5. ps -ef
             // vi /etc/passwd 의 PID/PPID
                확인
             
   작업예약  at & cron
   - 주기적으로 반복해야 하는 작업에 사용
  
   #rpm -qa | grep at   // at 패키지 설치 유무 확인
   #rpm -qa | grep mail   // mail 패키지 설치 유무 확인
  
   #yum -y install at   // at 패키지 설치
   #yum -y install mail   // mail 패키지 설치
  
   #rpm -qa | grep at   // at 패키지 설치 유무 확인
   #rpm -qa | grep mail   // mail 패키지 설치 유무 확인
  
   #service atd start   // at 데몬 실행
   #yum -y install cron*
  
   at - 정해진 시간에 한번 실행
   형식 #at [옵션] [시간]
   옵션 -l 현재 실행 대기 중인 목록을 출력 (#atq)
        -r  현재 실행 대기 중인 작업을 삭제 (#atrm)
  
    시간 형태
 yyyy-mm-dd, HH:MM, today, tomorrow, hours, days,wekks, now, midnight...
  
   ex) #at 6pm + 4days // 지금부터 4일 후 오후6시에 작업을 수행
   ex) #at 10am jul 18  // 7월 18일 오전 10시에 작업을 수행
   ex) #at 3am tomorrow // 내일 오전3시에 작업을 수행
   ex) #at 10:00am today // 오늘 오전 10시에 작업을 수행
  
 ex)
 #at today + 1min   // at 실행
 at> ls -l
 at> <EOT>    // Ctrl + D 저장

 // EOT - End Of Transmission
 
 #at -l
 [작업번호][날짜][시간][큐이름][사용자]
 
 at 예약 작업은 /var/spool/at 디렉토리에 큐 파일이 임시 저장된 후, 저장이 완료되면
 자동으로 삭제가 되며, /var/spool/mail 디렉토리에 사용자명으로 결과가 저장된다.

 #cd /var/spool/mail
 #cat root
 
 #at now + 1min
 at> mkdir /practice/at_test
 at> echo "at test!!" > /practice/at_test/at_test1
 at> <EOT>
 
 #at -l   or  #atq
 
 cron - 정해진 시간에 반복 실행
 ex) 매일 오전 9시에 특정 파일 압축하여 전송
 ex) 매달 1일에 /var 디렉토리를 삭제하라
 
 #crontab //crontab 파일을 관리
    옵션 -l   crontab 파일을 출력
         -r   crontab 파일을 삭제
         -e   crontab 수정
         -u [사용자명] 해당 사용자의 crontab 설정
  
 분  시  일  월  요일  작업내용
 0~59    0~23    1~31  1~12       0~6        반복할 명령어/스크립트
 
 - 일요일 (0), 월요일(1), 토요일(6)
 - 사용자 별로 각각 crontab 생성이 되며, 해당 파일에 반복할 작업의 내용을 작성
 - 여러개의 작업도 저장할 수 있으며, 한 행에 하나의 작업을 설정
 - 항목에 '*' (asterisk)이면 해당 항목의 모든 값을 의미
 - ' - ' (hypen) 두 숫자 사이에 포함된 범위 (ex 1-5 == 1,2,3,4,5)
 - ' , ' (comma)로 구분하여 나열된 숫자 중 일치하는 경우 (ex 1,3,5)
 - ' / ' (slash)로 시간 간격을 지정 할 수 있다.
 
 #cat /etc/crontab   // 기본 양식

# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

 #crontab -e
 ex) 30 23 1 * * cp -R /home/test /backup/home
 - 매요일 매월 1일 23시 30분에 /home/test를 /backup/home으로 복사하라
 
 ex) */2 10 * * * [명령어]
 - 매요일 매월 매일 10시에 2분마다 [명령어] 실행
 
 ex) 1-10 12 * * * [명령어]
 - 매요일 매월 매일 12시 1분 부터 10분까지 [명령어] 실행
 
 ex) 1,10 12 * * * [명령어]
 - 매요일 매월 매일 12시 1분, 10분에 [명령어] 실행
 
   분  시  일  월  요일  작업내용
 0~59    0~23    1~31  1~12       0~6        반복할 명령어/스크립트
 
#crontab -e 
문제 1) 매요일 매월 매일 매시 1,2,3분에 /practice 디렉토리에 test1 파일 생성
확인 - #crontab -l
#date -s "2017-04-08"
1,2,3 분에 /practice 디렉토리에 파일 생성 확인


#mkdir -p /home/cron_test
#crontab -e
1,2,3 * * * * touch /home/cron_test/cron1_`date +\%H-\%M`
1-3 * * * * touch /home/cron_test/cron2_`date +\%H-\%M'
#date -s "2017-04-08"
#watch -d -n 1 "ls -l /home/cron_test"

crontab 명령 사용 제한하기

/etc/cron.allow, /etc/cron.deny 파일로 사용자의 접근을 허용/차단 할 수 있다.
한줄의 사용자 계정명 하나씩만 작성하며, /etc/cron.deny 파일은 기본적으로 있지만
/etc/cron.allow 파일은 관리자 직접 만들어야 한다.

- /etc/cron.allow 파일이 있을 경우
 -> 해당 파일에 명시된 사용자만 사용 가능
- /etc/cron.allow 파일은 없고, cron.deny 파일이 있을 경우
    -> cron.deny 파일에 명시 되지 않은 사용자만 사용 가능
- /etc/cron.allow, cron.deny 파일이 둘 다 없을 경우
    -> root 만 사용이 가능
 
 #useradd cron_user1  // 테스트 계정 추가
 #su - corn_user1  // 테스트 계정 스위칭
 $crontab -e    // 테스트 계정 crontab 명령어 실행
 종료     // 실행 가능
 $exit
 
 #vi /etc/cron.deny  // 차단 파일 수정
 cron_user1    // 차단할 계정명 입력
 :wq      // 저장 후 종료
 
 #su - corn_user1  // 테스트 계정 스위칭
 $crontab -e          // 테스트 계정 crontab 명령어 실행
       // 실행 불가능
 $exit

 #mv /etc/cron.deny /etc/cron.deny_bk  // deny파일 이름 변경
 // allow 파일도 없고, deny 파일도 없는 경우 테스트
    #su - S-USER1
 $crontab -e    // 명령어 실행 여부 확인

vi를 이용하여 /etc/cron.allow 파일을 생성 한 후,
내용에 S-USER1 추가, S-USER1 과 cron_user1 계정 각각 crontab 명령어 사용 가능 여부 확인
 
 
 

 

 

 

 
 

 

 

 

 

 

 

 

 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 


 

 

'리눅스 ' 카테고리의 다른 글

RAID종류와설정  (0) 2017.04.15
빠진날 3  (0) 2017.04.15
빠진날 1  (0) 2017.04.15
계정생성  (0) 2017.04.01
환경 변수  (0) 2017.04.01

 

gpasswd - /etc/group, /etc/gshadow 파일을 관리한다.
#gpasswd [옵션] [그룹명]
-a [계정]   사용자 계정을 그룹에 추가한다.
-d [계정]  사용자 계정을 그룹에서 삭제한다.
-r     그룹 암호를 삭제한다.

1. 사용자 계정 추가
#useradd member1
#useradd member2

2. 그룹추가
#groupadd -g 2017 group2017
#cat /etc/passwd | tail -2    // 계정 생성 확인
#cat /etc/group  | tail -1     // 그룹 생성 확인

3. 사용자 계정을 그룹에 추가
#gpasswd -a member1 group2017  // member1 계정을 group2017 그룹에 추가
#usermod -G 2017 member2   // member2 계정을 group2017 그룹에 추가
            group2017 member2  

#cat /etc/passwd | tail -2    // GID 필드 확인
#cat /etc/group  | tail -1     // 멤버 필드 확인
group2017:x:2017:member1,member2

#groups [계정명]
#groups member1 member2
[계정명]: [주그룹] [보조그룹] ... [보조그룹]
member1 : member1 group2017
member2 : member2 group2017

4. 그룹 멤버 삭제
#gpasswd -d member2 group2017  // group2017 그룹에서 member2 계정 제거
#cat /etc/group | tail -1
#groups member2

5. 그룹 암호 설정
#gpasswd group2017   // group2017 그룹에 패스워드 설정
group2017 그룹의 암호를 바꾸는 중
새 암호:
새 암호를 다시 입력하십시오:

#cat /etc/gshadow | tail -1  // 패스워드 설정 확인

6. 그룹 패스워드 용도 확인
#gpasswd -a member2 wheel  // member1 계정을 wheel 그룹에 추가
#id member2
uid=1240(member2) gid=1241(member2) groups=1241(member2),10(wheel)

#su - member2      // member2 계정 스위칭
$groups        // 소속 그룹 확인
member2 wheel       // 주 그룹  member2
            보조그룹 wheel
$newgrp wheel      // member2 <--> wheel
$groups        // 주그룹 member2를 wheel 로 변경 
wheel member2      

$newgrp group2017     // 자신이 속한 그룹이아닌 다른 그룹으로
$groups        // 주그룹을 변경
group2017 wheel member2    // group2017 그룹에 암호가 설정되어 있어
                                       변경 시 해당 그룹에 암호가 필요하다.
           
sudo 권한 설정
사용자 추가나, 시스템 종료 등 특정 명령어만 실행할 수 있는 권한을 부여하는것

sudo 권한 설정 파일
/etc/sudoers

sudo 권한 설정 명령어
visudo == vi /etc/sudoers  // 차이점은 오타나 문법이 틀렸을때 저장이 안됨
vipw == vi /etc/passwd
vigw  == vi /etc/groups

     90 ## Allow root to run any commands anywhere
     91 root    ALL=(ALL)       ALL
    
[계정명]  [호스트]=(옵션)  [명령어]
 

실습 1
 (1) 일반 사용자 계정으로 로그인 ( member1 ) 후, 일반 사용자가
        사용할 수 없는 명령어 3개 찾기
  
 (2) 명령어 실행이 불가능 한 것 확인 후, 해당 명령어가 위치한
     절대 경로 확인 ( shutdown, reboot, halt 등 제외 )
 
 절대 경로 확인 방법 - #which [명령어]

 명령어 1 경로 : /usr/sbin/useradd
 명령어 2 경로 : /usr/sbin/usermod
 명령어 3 경로 : /usr/sbin/userdel

 
#visudo
member1 ALL=/usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod 
           
#su - member1
$passwd       // 암호 설정
$sudo [명령어]
$sudo useradd sudotest-1
[sudo] password for member1: // member1 암호 입력
$cat /etc/passwd | tail -1    //sudotest-1 계정 생성 확인

$sudo usermod -c "sudo-test" sudotest-1  //usermod 실행 확인
$cat /etc/passwd | tail -1    //sudotest-1 계정 정보 변경 확인

$sudo userdel -r sudotest-1   // sudotest-1 계정 삭제
$cat /etc/passwd | tail -1   // 계정 삭제 확인

패스워드 없이 sudo 명령어 사용 설정
#visudo
member1 ALL=NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod 
 
------------------------------------------------------------------------------
패스워드 정책 설정

chage - 패스워드 정책 설정
-l  설정 내용 확인

-d : 최종 암호 변경일 (/etc/shadows 3번째 필드) 
-m : 암호를 변경한 후 다시 변경할 수 있는 최소 기간 (/etc/shadows 4번째 필드)
-M : 유효한 암호의 최대 일 수 (/etc/shadows 5번째 필드)
-W : 사용자가 암호가 만료되기전 경고할 일 수 (/etc/shadows 6번째 필드)
-I : 암호 유효기간이 발료된 후 사용자의 계정이 비활성화 될 일 수 (/etc/shadows 7번째 필드)
-E : 사용자 계정을 사용할 수 있는 유효기간 (YYYY/MM/DD) (/etc/shadows 8번째 필드)

시스템 날짜 변경
#date -s "2017-04-02"
2017. 04. 02. (일) 00:00:00 KST

계정명 : member1  계정 유효 기간 : 2018-04-02

최초 설정한 암호는 최소 하루뒤에 변경 할 수 있으며, 암호는 10일에 한번씩 변경해야 하고,
최소 3일 전에 암호를 변경할 수 있도록 경고를한다. 만약 암호가 만료된 10일 뒤에도
암호를 변경하지 않으면 계정을 비활성화 시킨다.

#passwd memeber1

#chage -l member1  //member1 계정의 패스워드 정책 확인
마지막으로 암호를 바꾼 날     : 4월 02, 2017
암호 만료         : 안함
암호가 비활성화 기간      : 안함
계정 만료         : 안함
암호를 바꿀 수 있는 최소 날 수    : 0
암호를 바꿔야 하는 최대 날 수    : 99999
암호 만료 예고를 하는 날 수     : 7


최초 설정한 암호는 최소 하루뒤에 변경 할 수 있으며 ( m 1  )
암호는 10일에 한번씩 변경해야 하고,       ( M 10 )
최소 3일 전에 암호를 변경할 수 있도록 경고를한다.  ( W 3  )
만약 암호가 만료된 10일 뒤에도 암호를 변경하지 않으면 계정을 비활성 ( I 10 )
계정 유효 기간 : 2018-04-02       ( E 2018/04/02 )

#chage -E 2018/04/04 -m 1 -M 10 -W 3 -I 10 member1
#chage -l member1

마지막으로 암호를 바꾼 날     : 4월 02, 2017
암호 만료         : 4월 12, 2017
암호가 비활성화 기간      : 4월 22, 2017
계정 만료         : 4월 04, 2018
암호를 바꿀 수 있는 최소 날 수    : 1
암호를 바꿔야 하는 최대 날 수    : 10
암호 만료 예고를 하는 날 수     : 3


  1번 세션 (root)      2번 세션 (member1)      
           #su - member1
           $passwd
           (현재) UNIX 암호:
           암호 변경을 위해 조금더 기다려 주십시오. 
  
  #date -s "2017-04-03"    $passwd
  
  #date -s "2017-04-09"    $su - memeber1  // member1 로그인
  #date -s "2017-04-10"  2  $su - memeber1  // member1 로그인
  #date -s "2017-04-11"  1  $su - memeber1  // member1 로그인
  #date -s "2017-04-12"  0  $su - memeber1  // member1 로그인
  #date -s "2017-04-13"    $su - memeber1  // member1 로그인

 

#date -s "2017-04-02"
#passwd member1
#chage -E 2018/04/04 -m 1 -M 10 -W 3 -I 10 member1
#chage -l member1  
#chage -d 2017/04/02 member1

#date -s "2017-04-09"      $su - memeber1  // member1 로그인
#date -s "2017-04-10"  2    $su - memeber1  // member1 로그인
#date -s "2017-04-11"  1    $su - memeber1  // member1 로그인
#date -s "2017-04-12"  0    $su - memeber1  // member1 로그인
#date -s "2017-04-13"      $su - memeber1  // member1 로그인

 

디렉토리 및 파일의 권한과 소유권
- 시스템에 있는 모든 파일과 디렉토리는 접근 할 수 있는 권한 및 소유권 부여되어있다.
- 파일이나 디렉토리의 접근을 제한 것을 허가권(Permission)이라 한다.
- 파일이나 디렉토리의 소유권한을 소유권 (Ownership) 이라고 한다.


실습용 계정,그룹 생성
#groupadd -g 800 web_user
#groupadd -g 900 web_admin

#useradd -g 800 web-user1
#useradd -g 900 web-admin1

#cat /etc/passwd
web-user1:x:500:800::/home/web-user1:/bin/bash
web-admin1:x:501:900::/home/web-admin1:/bin/bash

#ll /bin/ls
-rwxr-xr-x. 1 root root 109208 2016-05-11 17:59 /bin/ls
    root    root
  [소유계정] [소유그룹]


chown (change ownership / 소유권 변경)

형식 - #chown [소유계정]:[소유그룹] [파일/디렉토리명]

#cd /home/web-user1
#touch test
#ll
-rw-r--r--. 1 root root 0 2017-04-02 12:29 test
#chown web-admin1 test  // test 파일의 소유자를 web-admin1 변경
#ll
-rw-r--r--. 1 web-admin1 root 0 2017-04-02 12:29 test

#chown web-user1 test
-rw-r--r--. 1 web-user1 root 0 2017-04-02 12:29 test

#chown web-admin1:web_admin test // test 파일의 소유계정:소유그룹 변경
-rw-r--r--. 1 web-admin1 web_admin 0 2017-04-02 12:29 test

test파일의 소유권 변경
소유계정 : web-user1
소유그룹 : web_user
  
#chown web-admin1:web_admin test
#chown web-admin1.web_admin test


형식 - #chown [소유계정]:[소유그룹] [파일/디렉토리명]
chown [계정명] [파일] 소유계정 변경
chown :[그룹명] [파일] 소유 그룹 변경

허가권 (Permission)

    -rwxrwxrwx
    
 -   r w x  r w x  r w x
파일 유형    사용자(User)  그룹(Group)  기타사용자(Other)
       소유 계정   소유 그룹
rwx의 의미
r (Read) - 읽기
w (Write) - 쓰기
x (eXecute) - 실행
- (bar) - 해당 권한이 없는 경우

ex)
rwxr-xr-x : 사용자는 읽기, 쓰기, 실행권한을 모두 가지고 있고,
            그룹과 기타사용자는 읽기와 실행권한만 있다.
   
rw------- : 사용자만 읽고 쓰기가 가능하고, 그룹과 기타사용자는 아무 권한이 없다.

r-------- : 사용자만 읽기 권한을 가지고 있다.

#ll /etc/passwd /etc/shadow

chmod - 허가권 변경
- 기호 모드 (상대값) (symbolic mode) - 사람의 입장
- 숫자 모드 (절대값) (absolute mode) - 컴퓨터의 입장

chmod [옵션] [기호/숫자모드] [파일명]
-R 하위 디렉토리 및 파일까지 전부 적용

- 기호모드
 + : 허가권 부여     u : 사용자(소유자) 권한
 - : 허가권 제거     g : 그룹 권한
 = : 허가권 유지     o : 기타 사용자
 s : SetUID,SetGID 권한 부여  a : 사용자, 그룹, 기타 사용자 모두
 t : Sticky Bit 권한 부여

 ex) 허가권 rwx r-x r-x 파일명 test
  
  -> 그룹과 기타사용자의 x(실행)권한을 제거
  #chmod go-x test
  
  -> 그룹에는 쓰기권한 추가, 기타사용자에게 읽기, 실행권한 제거
  #chmod g+w,o-rx test
  
 #mkdir -p /practice/symbolic_chmod/
 #cd /practice/symbolic_chmod/
 #touch test-file
 #ll
 rw- r-- r--   test-file
 
 (1)파일의 소유자(사용자), 그룹과 기타사용자에 실행권한 추가
 rwx r-x r-x
  #chmod u+x,g+x,o+x test-file
  #chmod a+x test-file
 
 (2) 파일의 소유자의 모든 권한을 제거하고, 그룹은 모든권한, 기타사용자는
     쓰기 권한만 추가
 --- rwx -w-
  #chmod u-rwx,g+w,o-rx+w test-file
 
 (3) 사용자, 그룹, 기타 사용자 모두 읽기와 쓰기 권한만 추가
 rw- rw- rw-
  #chmod u+rw,g-x,o+r test-file
  
- 숫자 모드
  - 각각의 허가권 필드를 3자리의 8진수로 표기
  - 완전환 표기법은 4자리이나 일반적으로 3자리를 사용
 
사용자 필드   허가권  기호  숫자모드

사용자    읽기  r   400   (100단위)
     쓰기  w   200
     실행        x   100
그룹    읽기  r   40   (10단위)
     쓰기  w   20
     실행  x   10
기타 사용자   읽기  r   4   (1단위)
     쓰기  w   2
     실행  x    1
     
ex) rwx r-x r-x
사용자    400 + 200 + 100 = 700
그룹      40 + 10      =  50
기타 사용자  4  + 1   =   5
        = 755
        
       
사용자 필드   사용자   그룹   기타 사용자
     r w x   r w x   r w x
자리수    4 2 1   4 2 1    4 2 1
2진수    1 1 1   1 1 1   1 1 1
8진수         7      7      7

     r w x    r - x    r - x
     1 1 1   1 0 1   1 0 1
       7      5      5 

     r - x   r - x   r - x
     4 + 1   4 + 1   4 + 1
       5      5      5

test-file     
chmod 744 test-file  ( rwx r-- r-- )

ex) rwx rwx r-x   ( 7 7 5 )
 r-x r-- ---   ( 5 4 0 )
 rw- rwx --x   ( 6 7 1 )    
     
 디렉토리 허가권 테스트
 #cd /practice/symbolic_chmod/
 #mkdir test-dir
 #chmod 000 test-dir 
 --- --- ---
 세션 추가
 1번 세션 root        2번 세션 web-admin1
 #           #su - web-admin1
            $cd /practice/symbolic_chmod/
            
 test-dir 디렉토리의 허가권을 001, 002, 003 ... 007 까지 변경하면서
 허가권 변경하는 명령어 입력 후, 2번세션에서 아래 명령어 테스트
 (1) $cd test-dir X
   성공 시 (2), (3) 진행 후 cd.. 으로 상위 디렉토리 이동 후 다음 권한 진행
 (2) $touch test  W
 (3) $ls    R
 
   --x  (1)  O (2)  X (3) X
   -w-  (1)  X (2)  X (3) X
   -wx  (1)  O (2)  O (3) X
   r--  (1)  X (2)  X (3) X
   r-x  (1)  O (2)  X (3) O
   rw-  (1)  X (2)  X (3) X
   rwx  (1)  O (2)  O (3) O

UMASK - 새로운 파일/디렉토리 생성 시 기본 허가권을 경정하는 기준이되는 값
      - 기본값 022
   - 파일의     기본 허가권 666
   - 디렉토리의 기본 허가권 777
   - 파일이나 디렉토리의 기본 허가권에서 UMASK 값을 뺀 값이 허가권으로 결정
     디렉토리  파일
기본값    777    666
UMASK     022    022
결정된 허가권  755    644
기호    rwx r-x r-x  rw- r-- r--

#mkdir test123  // 디렉토리 허가권 확인
#touch test456   // 파일  허가권 확인

#umask   // 현재 시스템에 설정된 UMASK 값을 확인하는 명령어
0022
#umask [값]  // [값]으로 UMASK 값 변경

#umask 007  // UMASK 값 변경
#umask
0007

디렉토리    파일
777     666    기본값
007     007    UMASK
770     660    적용값
RWX RWX ---   RW- RW- ---

777     666
020     020    UMASK
757     646
RWX R-X RWX   RW- R-- RW-

#umask 022

#cd /home
#ll
rwx------. 2 web-admin1 web_admin 4096 2017-04-02 12:15 web-admin1
drwx------. 2 web-user1  web_user  4096 2017-04-02 12:29 web-user1

#useradd -g web_admin web-admin2

계정   그룹
web-admin1  web_admin
web-admin2

web-admin2 계정이 web-admin1의 홈디렉토리 접근, 읽기, 쓰기가 가능 하도록 설정
단, 기타 사용자 권한은 수정X

#chmod 770 web-admin1
rrwxwx---. 2 web-admin1 web_admin 4096 2017-04-02 12:15 web-admin1

#su - web-admin2
$cd /home/web-admin1 (x)
$touch test1   (w)
$ls      (r)

특수권한의 종류 SetUID, SetGID, StickyBit
SetUID
- 실행파일에 한해서 설정이 가능하며, SetUID 속성이 있는 경우
  실행한 사용자가 아닌 파일을 소유한 사용자의 권한으로 프로세스(프로그램) 실행된다.
- SetUID는 보통 root가 소유한 실행파일에 적용을 하며, 이런 경우에 해당 파일을
  실행하는 순간에는 root의 권한을 가지게 된다.
 
#ll /etc/passwd  /etc/shadow
 644    400
 rw- r-- r--  r-- --- ---

#su - web-admin1
$passwd     // 명령어 실행 가능
$exit

#ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 2015-11-24 01:30 /usr/bin/passwd

SetUID 설정방법
 기호모드 (u+s)
 숫자모드 (4000)
 
 #cd /practice
 #mkdir SetUID
 #cd SetUID
 
 #touch SetUID-FILE-1
 #touch SetUID-FILE-2
 
 #chmod 4644 SetUID-FILE-1
 #chmod 4544 SetUID-FILE-2
 
 #ll
 -rwSr--r--. 1 root root 0 2017-04-02 14:51 SetUID-FILE-1
 -r-sr--r--. 1 root root 0 2017-04-02 14:51 SetUID-FILE-2
 
 실행 권한이 있는 파일 : s
             없는 파일 : S
    
 #cat > SetUID-FILE-3
 SetUID FILE TEST!!!!!!!!
 #chmod 400 SetUID-FILE-3
 -r--------. 1 root root 23 2017-04-02 14:55 SetUID-FILE-3
 
 #su - web-admin1
 $cat /practice/SetUID/SetUID-FILE-3
 $exit
 
 #ll /bin/cat
 -rwxr-xr-x. 1 root root 45224 2016-05-11 17:59 /bin/cat
 #chmod u+s /bin/cat
 
 #ll /bin/cat
 -rwsr-xr-x. 1 root root 45224 2016-05-11 17:59 /bin/cat

 #su - web-admin1
 $cat /practice/SetUID/SetUID-FILE-3
 
 #su - webadmin1
 
 $whoami
 $who am i
 
 UID - RUID (Real UID)
   web-admin1
    EUID (Effective UID)
   root     pts/1        2017-04-02 22:40 (100.100.100.1)
 
 GID - RGID
    EGID
 
 원상복구
 cat 파일의 SetUID 제거
 #chmod u-s /bin/cat
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    
    
    
    
    
    
    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  
  

 

 


     
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


           
           

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'리눅스 ' 카테고리의 다른 글

빠진날 3  (0) 2017.04.15
빠진날 2  (0) 2017.04.15
계정생성  (0) 2017.04.01
환경 변수  (0) 2017.04.01
쉘 환경변수 종류  (0) 2017.03.26

useradd [옵션] [계정명]

 

1. 사용자 계정추가

#useradd DOBONGSOON

 

# cat /etc/passwd  //확인

 

 

 

# useradd -d /sub_home/DOBONGSOON-6 DOBONGSOON-6

계정은 생성은 되어 /etc/passwd 파일에 등록되지만,

홈디렉토리의 상위 디렉토리가 미리 존재하지않으면, 홈디렉토리가 생성이 되지 않는다.

 

# mkdir /sub_home

# useradd -d /sub_home/DOBONGSOON-7 DOBONGSOON-7
# cd /sub_home/DOBONGSOON-7/

# ls -a

# ls -a /etc/skel

# touch /etc/skel/skel_file
# cd /home/DOBONGSOON-8

#ls

#ls -a

# su - DOBONGSOON-8        //치면 밑에와 같이 변함

 

[DOBONGSOON-8@Server-A ~] $ pwd

$exit

 

#su - DOBONGSOON-8

-bash-4.1$ //이렇게 깨져서나ㅣ온다

#cat /etc/bashrc

 

실습

아래 조건을 만족하도록 설정

계정명 :practice-2

UID :590

GID :500

정보 : Practice Account

쉘 :/bin/bash

답:#useradd -u 590 -g 500 -c "Practice Account" -s /bin/bash practice-2

정보 변경할땐 usermod

# usermod -u 503 -g 501 -c "Practice" -s /bin/sh practice-2

 

#usermod -d /home/[계정명2] -l [계정명1] [계정명2]

#cp /home/[계정명1]/* /home/[계정명2]/

 

su (Substitute User // Switching User) 사용자 전환

su [계정명] -해당 계정으로 전환하나 환경변수는 바꾸지 x

su - [계정명] - 해당 계정으로 전환하며 환경변수도 함께 변경

해당 계정의 ~/ .bash_profile ,~/ .bashrc 파일이 적용

 

userdel -계정 삭제

#userdel [계정명]

 

DOBONGSOON-1 계정 삭제

 #userdel DOBONGSOON-1

 #cd /home

 #ls

DOBONGSOON-1

 

 

# userdel -r DOBONGSOON-2 계정삭제

홈 디렉토리까지 전부 삭제 됨.

 

사용자 계정 생성 과정

(1) #useradd 명령어 실행

(2) /etc/default/useradd 와 /etc/login.defs 파일 설정 참조

(3) /etc/passwd 와 /etc/group, /etc/shadows, /etc/gshdows 파일에 정보 추가

(4)홈 디렉터리에 사용자 계정명과 동일한 디렉토리 생성

(5) /etc/skel에 있는 파일들을 사용자 홈디렉토리로 복사

(6) /var/spool/mail 에 메일박스 파일 생성

 

 

passwd - 패스워드 정책 및 설정

#passwd [계정명]

 

#useradd pass-user1    //pass-user1 계정 생성

#passwd pass-user1 //pass-user1 암호 생성

123123으로함

#useradd pass-user2    //pass-user2 계정 생성

#passwd pass-user2 //pass-user2 암호 생성

123123으로함

 

passwd - 패스워드 정책 및 설정

#passwd [계정명]

#passwd        //현재 로그인한 계정 비번 변경

 

-l 사용자의 패스워드 Lock을 걸어 로그인을 불가능하게한다.

-u 사용자의 패스워드 잠금 해제

-d 사용자의 패스워드를 제거

#passwd -l pass-user1    //pass-user1 잠금

#passwd -d pass-user2     //암호 삭제

 

# vim /etc/passwd

pass-user2:x: ->:*:

이설정을하면 암호를 쳐도 로그인이 안된다.

 

 

실습 -아래 조건 만족하도록 설정

 

계정명 : test1010

UID    :1010

GiD :1010

패스워드 : 자유

그외 모든 정보 기본값 적용

계정 스위칭 시 프롬프트 안깨지도록 설정

 

문제 1.useradd 명령어 사용하지 않고 계정생성

 

참고 파일

/etc/passwd /etc/group /etc/shadow /etc/skel/

 

확인 명령어

#su - test1010

답 :

/etc/passwd 파일 추가
test1010:x:1010:1010::/home/test1010:/bin/bash

/etc/group 파일 추가
test1010:x:1010:

/etc/shadow 파일 추가
test1010::17257:0:99999:7:::

/etc/gshadow 파일 추가
test1010:!::

홈디렉토리 생성
#mkdir /home/test1010

skel 디렉토리 파일 복사
#cp /etc/skel/.bash* /home/test1010

 

 

 

 

shadow password system (shadow-utils 패키지)

 

#pwunconv    -> shadow password system Disable

#pwconv    ->shadow password system Enable

다시 원래대로 돌아옴

# su - DOBONGSOON

 

$ cat /etc/passwd  읽기 가능

$ cat /etc/shadow 읽기 불가능

 

 

사용자 및 그룹 파일 무결성 검사

#pwck    //    /etc/passwd, shadow 파일을 검사

#grpck    //   /etc/group, gshadow 파일을 검사

- 각 필드 설정, 사용자와 그룹아이디설정 검사

  기본 그룹 존재 유무 , 홈디렉토리 , 쉘 ,패스워드 등 존재 유무

  확인 명령어

 

그룹추가 명령어

groupadd

# groupadd [그룹명]
# groupadd test-group

#cat /etc/group

 

 

그룹수정 명령어

#groupmod

#groupmod -g XXX test-group

#cat /etc/group

그룹삭제 명령어

#groupdel

#groupdel test-group

#cat /etc/group

 

 

 

 

 

'리눅스 ' 카테고리의 다른 글

빠진날 2  (0) 2017.04.15
빠진날 1  (0) 2017.04.15
환경 변수  (0) 2017.04.01
쉘 환경변수 종류  (0) 2017.03.26
다중 명령어  (0) 2017.03.26

지역 환경 변수

- 현재 사용하는 쉘에서만 적용되는 변수

-변수 선언 및 초기화

변수명=값    (주의 사항 : 변수명 = 값 x - 공백 x)

ex) #A=10      O

ex) #A = 10    X

- 변수 해제

unset 변수명

EX) #unset A

- 변수 확인

#set

전역 환경 변수

- 모든 쉘에 적용되는 변수

 

- 변수 선언 및 초기화

#export     변수명=값

- 변수 해제

#unset 변수명

- 변수 확인

#env

 

지역 환경 변수 테스트

 # LOCAL=test               //선언

 #set | grep LOCAL        //확인

 

#/bin/bash            //bash 서브 쉘 실행

#exit                    //상위 쉘로 이동 (logout)

#echo $LOCAL      // 지역 변수 LOCAL 값 확인

 

#/bin/bash

#echo $LOCAL    //출력 안되지

#exit    

 

#unset LOCAL          //해제

#set | grep LOCAL    //해제확인

 

전역 환경 변수 테스트

#export GLOBAL=test1    //선언

#echo $GLOBAL                 //확인

#set |grep GLOBAL        //확인

# env |grep GLOBAL        //확인

 

#/bin/bash

#echo $GLOBAL

 

전역 환경이라 요기 쉘에서도 출력이 된다.

 

# GLOBAL=test2        //지역 환경 변수  그냥 덮어 씌워진거다.

 

#exit

 

 

#echo $GLOBAL      // test1

 

 


#echo $PS1

[\u@\h \W]\$

이런거로 설정가능

설정힘들면 http://ezprompt.net/사이트들가서 원하는 것 다운

export PS1="[\[\e[33m\]\u\[\e[m\]@\[\e[36;40m\]\h\[\e[m\] \[\e[35m\]\W\[\e[m\]] \\$ "

 

 

 세선 유지

 

#echo $TMOUT    //세션유지시간

#TMOUT=10    //10초후 로그아웃됨

#TMOUT=        //무제한

 

 

사용자 환경을 구성하는 초기화 파일

/etc/profile

- 환경변수와 bash가 동작 시 사용되는 프로그램을 제어하는

   전역적인 시스템 설정과 관련된 파일

 

/etc/profile.d/

- /etc/profile 파일에 의해서 /etc/profile.d/ 디렉토리내에 스크립트가 실행이 되며 여러가지 변수들이 동작하며 쉘 환경 제공

 

/etc/bashrc

- 사용자가 로그인 하였을때 사용자 계정에 있는 .bashrc 파일에 의해서 실행이 되며, 전체 사용자에게 적용할 alias 및 쉘 환경변수값을 설정하는 파일

 

~/.bash_profile

- 환경변수와 bash가 동작 시 사용되는 프로그램을 제어하는

   지역적인 시스템 설정과 관련된 파일

~/.bashrc

  - ~/.bash_profile에 의해서 실행되며 .bashrc 파일은 다시 /etc/bashrc을 실행 하여, 사용자에게 기본적으로 적용할 alias 정보가 있다.

 

Login시 실행되는 파일의 순서

/etc/profile -> /etc/profile.d/*

~/ .bash_profile

~/ .bashrc

/etc/bashrc

 

 

 

 

# vim /etc/bashrc

 

 

다시 로그아웃했다 들어와도 저기에 입력된 내용은 초기화 되지 않는다.

 

 

 

 

 

 

 

'리눅스 ' 카테고리의 다른 글

빠진날 1  (0) 2017.04.15
계정생성  (0) 2017.04.01
쉘 환경변수 종류  (0) 2017.03.26
다중 명령어  (0) 2017.03.26
리다이렉션  (0) 2017.03.26

쉘 환경변수의 종류

1. 지역 환경 변수 (쉘 변수)

2. 전역 환경 변수 (환경 변수)

 

예약되어 있는 환경 변수

 

$PATH         실행파일을 찾을 경로

$HOME        현재 로그인한 사용자의 홈 디렉토리 경로

$LANG         쉘에서 사용하는 언어

$SHELL         로그인 시 사용하는 쉘

$PS1            프롬프트

$HISTSZIE     히스토피 파일에 저장되는 명령어 개수

$HISTFILE      히스토리 파일 경로

#echo $SHELL

 

변수 값 확인

#echo [변수명]

#echo $PATH

#echo $HOME

#echo $SHELL

 

$PATH 변수 테스트

# cp /bin/ls ./
# mv ls 123    // ls 파일의 이름을 123으로 변경

#123

-bash: 123: command not found

PATH=$PATH:/root

 

이제 123이 실행 된다.

 

'리눅스 ' 카테고리의 다른 글

계정생성  (0) 2017.04.01
환경 변수  (0) 2017.04.01
다중 명령어  (0) 2017.03.26
리다이렉션  (0) 2017.03.26
파이프,메타문자  (0) 2017.03.26

다중 명령어

1. [명령어1] ; [명령어2]

- 첫 번째 명령어 부터 순차적으로 실행

-첫 번째 명령어가 실패하여도 반드시 실행

 

2. [명령어1] && [명령어2]

- 첫 번째명령이 에러가 아닐 시 두번째 명령을 실행

 

CMD = 정상 명령어     EX) #pwd, #ls, #date

ERR = 오류 명령어        EX) #qwer

 

[CMD1] && [CMD2] -> CMD1,2 정상 출력

[CMD1] && [CMD2] && [CMD3] -> CMD1,2,3 정상 출력

[ERR1] && [CMD2] && [CMD3] -> 에러메세지

[CMD1] && [ERR2] && [CMD3] -> CMD1 정상 출력후 에러메세지

   CMD3 실행 조차 안됨

- 에러가 발생하는 시점에서 명령 실행 종료

 

3. [명령어1] || [명령어2]

[ CMD1 ] || [ CMD2 ]        //CMD1 실행

[ ERR1] || [CMD2]        //오류메세지 발생후 CMD2 실행

 

[ CMD1 ] || [ CMD2 ] [CMD3]       //CMD1 실행

[ CMD1 ] || [ ERR2 ] [CMD3]         //CMD1 실행

[ ERR1 ] || [ ERR2 ]  [CMD3]        //ERR1,2 출력 후 CMD3 실행

 

-즉, 명령어가 정상으로 실행된 시점까지만 실행(출력)

 

 

'리눅스 ' 카테고리의 다른 글

환경 변수  (0) 2017.04.01
쉘 환경변수 종류  (0) 2017.03.26
리다이렉션  (0) 2017.03.26
파이프,메타문자  (0) 2017.03.26
Server-B Client-Linux 둘다 Xshell연결  (0) 2017.03.26

리다이렉션(Redirection)

 

파일 리스크립터 (File Discriptor, fd)

-리눅스의 일반 파일과 장치파일을 포함한 모든 파일을 관리하는 방식

-파일을 열거나 실행할때 혹은 명령어를 입력하면은 커널이 프로세스를 실행시켜 기본적으로 사용하는 장치들과 추가로 실행한 프로세스가 있다면 이정보를 파일디스크립터 테이블이라는 곳에 저장하는데, 이대 파일 디스크립터 테이블에 비어있는 0번부터 순차적으로 지정하고 가장 기본적으로 사용되는 장치에 대해서는 디스크립터 테이블에 미리 예약되어 있다.

 

-표준 입력장치 (키보드) fd/0 stdin

-표준 출력장치 (모니터) fd/1 stdout

-표준 에러장치 (모니터) fd/2 stderr

 

리다이렉션

-표준입력과 출력의 방향을 재지정하는 방법

 

명령어 입력 (키보드/표준입력) -> 명령어 결과 (모니터/표준출력)

 

출력 리다이렉션

- 화면에(표준출력)나오는 결과를 파일 내용으로 전달

#echo 'show me the money' 1> echo_test

 

fd번호 1은 생략 가 능

 

#cat > [파일명]

내용입력 후, 엔터 한번 치고

Ctrl + D ( 저장 ) 

 

# mkdir /practice/day4
# cd /practice/day4
# cp /etc/resolv.conf ./
# cat resolv.conf

ex) nameserver 8.8.8.8

#cat resolv.conf 1> redirection_test    //표준입력 후 결과를 출력아닌 파일로 재지정

 

#cat > cat_test1     //표준입력은 1은 생략 가능

//기존 파일이 없다면 생성

cat_test!!!! [Enter]    //개행 후

[Ctrl+d]                //저장

#cat cat_test1        //cat_test1 내용 확인

cat_test!!!!

 

#cat > cat_test1        // 파일 내용입력 후 생성

cat_test????    //내용 입력 후 저장 (Ctrl +D)

 

#cat cat_test1        //기존에 있던 cat_test!!!! 없어지고

  새롭게 썼던 cat_test???? 만 존재

즉, 파일의 내용을 덮어쓴다.

 

Bash 쉘에서 파일 덮어쓰기 방지하기 위한 설정

# set -o noclobber    //덮어쓰기 방지 설정

#cat > cat_test1

 

 

-bash: cat_test1: cannot overwrite existing file (이런식으로 덮어쓰기를 방지한다.)

 

#set +o noclobber     //덮어쓰기 방지 설정 해제

 

 

추가 리다이렉션

[명령어] >> [파일] - 기존 파일에 내용 추가

 

#ls > ls_test

#date > ls_test

#ls > ls_test

#date >> ls_test

#pwd >> ls_test

#cal >> ls_test

 

오류 리다이렉션

#ls error_test        //오류메세지 발생

ls: cannot access error_test: 그런 파일이나 디렉터리가 없습니다

#ls error_test 1> err1

ls: cannot access error_test: 그런 파일이나 디렉터리가 없습니다

하지만 err1 파일은 만들어졌다. 그러나 안에 내용은 없다.

 

 

 

# ls error_test 2> err1        //표준 에러의 방향을 파일로 재지정
오류 출력메세지 x

# cat arr1

ls: cannot access error_test: 그런 파일이나 디렉터리가 없습니다

 

오류 메세지 출력하지 않기

/dev/null -리눅스 특수 파일로 파일의 내용을 지우거나, 오류메세지를 해당 파일로 리다이렉션하여 출력하지 않을 수 있다.

    (윈도우 쓰레기통과 비슷)

 

# cat ls_test 1> /dev/null            //출력결과를 null파일로 재지정

# cat ls_test 2> /dev/null            //출력에러결과를 null파일로 재지정

#ls / 1> /dev/null        //정상 결과 출력하지 않음

# ls / 2> /dev/null        //에러 결과 출력 하지 않음

입력 리다이렉션

 

[명령어] < [파일]

#sort < /etc/passwd    == sort /etc/passwd

#cat < /etc/passwd     == cat /etc/passwd

#head -1 < /etc/passwd == head -1 /etc/passwd

#tail -2 < /etc/passwd    == tail -2 /etc/passwd

 

 

tail <a.txt> b.txt

(1) a.txt 내용을 tail 명령어 입력 값으로 리다이렉션 (#tail a.txt)

(2) tail 명령어는 입력은 a.txt의 내용에서 마지막 10줄 출력

(3) tail 명령어의 출력결과를 b.txt파일에 리다이렉션

(4) 화면에 출력이아닌 b.tx t파일 안에 결과가 저장

 

cat < a.txt > b.txt 와 동일한 명령어는??

#cp a.txt b.txt


 

 

 



 

'리눅스 ' 카테고리의 다른 글

쉘 환경변수 종류  (0) 2017.03.26
다중 명령어  (0) 2017.03.26
파이프,메타문자  (0) 2017.03.26
Server-B Client-Linux 둘다 Xshell연결  (0) 2017.03.26
텍스트 편집기의 종류,vi사용법  (0) 2017.03.26

 파이프

-프로세스(프로그램)간에 실행되는 입출력을 다음 프로세스에게 전달하는 방식

 

    출력                입력

#cat /etc/passwd | grep root

#cat /etc/services | more

#cat /etc/services | tail -1

#cat /etc/services | head -5

 

 

정규식에서 사용하는 메타문자

^                    -행의 시작

$                    -행의 끝

.                     -하나의 문자와 대응

[]                    -[]사이의 문자 하나와 대응

[^]                  -[]사이의 문자를 제외한 문자와 대응

\<                  -단어의 시작

\>                  -단어의 끝

A\{N\}              -문자A를 N번 반복

A\{N,\}             -문자A가 적어도 N번 반복

A\{N,n\}            -문자A가 N번이상 n번이하 반복

 

grep '문자열' 파일

grep 'root' /etc/passwd

 

#grep -i 'the' grep_test     //대소문자 구별 없이 the가 포함된 라인

#grep '^#' grep_test        //'#' 으로 시작하는 라인

#grep 't$' grep_test         //'t'로 끝나는 라인

#grep 's.n' grep_test       //s와n사이의 임의의 문자하나를 포함한 라인

#grep -i 'c...y' grep_test        //c와y사이 임의의 문자3개를 포함한 라인

#grep '[tT]' grep_test        // t혹은 T가 포함된 라인

#grep '[AB]' grep_test       // A혹은 B가 포함된 라인

#grep '[AB]r' grep_test       //A혹은 B이후에 r을 포함된 라인

#grep '[a-z]' grep_test      //a부터 z를 포함한 라인, 즉 소문자 영어  와 모두 매칭

#grep '[a-zA-Z]' grep_test     //영어를 포함한 라인

#grep '[^0-9]'    grep_test    //숫자를 제외하고 매칭

#grep '\<F.....'                    //F로시작하고 총6글자인 단어

#grep 'd\{2\}' grep_test    //d가 2번이상 반복되는 라인

#grep 'e\{1,2\}' grep_test    //e가 1번또는 2번 반복되는 라인

 

 

현재 위치한 곳에 디렉토리 개수 확인 하기

#cd /

#ls -l | grep '^d'

#ls -l | grep '^d' | wc -l

 

/bin 에 파일 개수 확인

#ls -l | grep '^-' | wc -l

 

현재 디렉토리에서 파일 크기가 가장 큰 파일 '만' 출력 

# ls -S | head -1

 

'리눅스 ' 카테고리의 다른 글

다중 명령어  (0) 2017.03.26
리다이렉션  (0) 2017.03.26
Server-B Client-Linux 둘다 Xshell연결  (0) 2017.03.26
텍스트 편집기의 종류,vi사용법  (0) 2017.03.26
watch 명령어  (0) 2017.03.26

+ Recent posts