★YUM(Yellowdog udater modifier)


  RPM기반의 패키지 관리도구로 의존성 문제를 자동으로 해결한다.
- 설치 가능한 패키지에 대한 정보가 담긴 저장소(repository)를 가지고 있다
- DVD이미지 혹은, 인터넷이 되는 환경에서 사용할 수 있다.

 

yum [옵션] [명령] [패키지명]
 -y
설치 과정에 출력되는 모든 질문에 yes로 대답

 -h 도움말 출력
 -v 자세한 메시지 출력
            //-h -v는 잘안쓰임

 

yum info [패키지명]         //패키지 정보 확인


yum list
yum list all             //설치가 되었거나 설치 가능한 모든 패키지의 목록을 출력
yum list update         //업데이트가 가능한 패키지의 목록만 출력
yum list installed     //이미 설치된 패키지 목록을 출력

 

yum list installed [패키지명] == rpm -qa    //해당 패키지 설치유무 확인


yum localinstall [패키지명].rpm          //rpm패키지 설치 ,

 

패키지 설치 하기
-저장소를 검색하고 패키지를 설치할 저장소 찾지를 못하면 자동으로 다른 저장소를 검색하여
패키지를 설치한다.

 

yum install [패키지명] [패키지명] ...

 

yum install autotrace

yum install xterm

패키지 삭제
yum remove [패키지명] [패키지명] ..

 

패키지 검색
yum search [패키지명]

 

yum provides [파일이름] //특정 파일이 어느 패키지에 포함되어 있는 확인
yum provides /bin/ls

 

yum clean all //기존에 다운로드한 패키지 목록을 지워 설치 시 새로운 목록을 다운로드
설치가 잘 안된파일에 유용


그룹 설치
yum grouplist | more //그룹 설치가 가능한 패키지 목록 확인


LANG=us_US.UTF-8

한글에서 영어로 바뀐거 확인

 

yum groupinstall [패키지 그룹 이름]

 

yum groupinstall "X Window System" "Desktop" "Fonts" "korea

n Support"
더블 커터 중요 하나의 패키지 인식

 

yum 동작 가정과 설정 파일
1. /etc/yum.conf         //yum 설정 파일
2. /etc/yum.repos.d/     //저장소(Repository)정보가 저장되어 있는 디렉토리

 

실무에서 저장소라는 단어를 레포 repo

 

(1) Server-A : yum install 입력
(2) Server-A : /etc/yum.repos.d/ 디렉토리에 repo 파일을 열어 URL 확인
(3) Server-A : 패키지 목록 파일을 REPO에 요청
(4) Repo : 패키지 목록을 서버-A 에게 전달
  //설치 패키지 파일을 다운 받는게 아니라 설치하고자 하는 패키지 목록만 다운로드
(5) Server-A : 화면에 설치할 패키지와 관련 패키지 이름을 출력
(6) Server-A : Y를 입력하면 설치 하고자하는 패키지 파일을 Repo에 요청
(7) Repo : 설치할 패키지를 전달
(8) Server-A : 다운로드한 패키지를 자동을 설치

ex) yum -y install vim 은 (1)~(8)   

 

cd /etc/yum.repos.d/

vi /etc/CentOS-Base.repo

 

CentOS-Base.repo 파일 안 구성내용

 

[base]  - 저장소 식별자
 - 각 식별자는 독립적으로 존재하여 동작

 

name  - 저장소의 이름
 - 보기 편한 이름으로 지정

 

mirrorlist
 - baseurl 에 설정 값이 생략되어 있으면 대신 동작하는 항목으로 해당 URL은 전세계에
 분포된 여러개의 Repository와 연결되어 있다.

 

#baseurl - repo url  적혀있으며 ftp주소,file 경로 등이 올 수 있다.
#은 주석

 

gpgcheck - 패키지 GPG서명을 확인할지 여부를 1(사용),0(사용안함)으로 지정

 - 1로 지정할 경우 gpgkey 항목을 반드시 설정 해야한다.

 

gpgkey - 아스키 GPG키가 들어있는 저장소의 URL이 적혀 있어야 한다.

- 사용할 서버의 공개키 경로를 설정한다.

 

enabled - 저장소를 사용할지 여부 1(사용),0(사용안함)을 지정

- 생략할 경우 기본값은 1

 

GPG - GPG(Gny Privacy Guard)서명은 rpm 패키지 인증시 암호화된 서명을 사용하는 방법.

 - 잘못된 패키지가 설치되는 일을 방지한다

 

repository를 DVD이미지로 변경
cd /mnt/
ls  //cd 마운트확인
cd /etc/yum.repos.d 경로
mkdir backup
mv *.repo backup
touch dvd.repo //새로운 repo 파일 생성

 

vi dvd.repo
[dongh-dvd]
name=CentOS DVD REPO
baseurl=file:///mnt/ //네트워크 주소가 아니라 DVD 경로 주소
gpgcheck=0

 

gpgcheck=0 //패키지가 안전한건지

 

네트워크 차단
ifdown eth0

 

vmware에서 설치
yum clean all
yum -y install mysql-connector-odbc
yum -y install php

 

DVD이미지에서 직접 다운받기 때문에 패키지를 외부에서 다운로드 하는 과정이 없어 설치 속도가
빠르다.

 

vi /etc/yum.repos.d/dvd.repo
[dongh-dvd]
name=CentOS DVD REPO
baseurl=file:///mnt/
gpgcheck=0
[extras]
name=network
baseurl=http://ftp.daumkakao.com/centos/6.8/extras/x86_64
gpgcheck=0

 

ifup eth0
cd /mnt/Packages/epel-release 패키지 유무 확인

 

 yum remove myspl-connector-odbc
 myspl-connector-odbc //로컬 dvd이미지에 있는 패키지 파일
epel-release //외부 레포에 있는 패키지 파일

 

yum -y install mysql-connector-odbc epel-release
설치가능 확인

 

★yum은 인터넷이 되야한다.

http://mirror.centos.org/centos/6/os/x86_64/
-실제 centos에서 기본으로 제공하는 기본 base repo 주소

 

★/etc/resolv.conf     //해당 파일에 네임서버 정보가 있어야지만 도메인에 대한 ip주소를 해석하여

yum이 해당 사이트(미러사이트)에 찾아가 패키지를 받아 올수 있다.

yum 파일 원상복구
cd backup/
mv ./* /etc/yum.repos.d/

'Server > Linux' 카테고리의 다른 글

xshell/ ping ip selinux  (0) 2017.04.24
xshell/ Bonding  (0) 2017.04.22
xshell/ RPM  (0) 2017.04.22
xshell/ Find  (0) 2017.04.22
xshell/ 압축 gz bz2 xz  (0) 2017.04.19

RPM & YUM (패키지 관리 명령어)

 

- RPM (Redhat Package Manager)의 약자로 래드햇에서 만든 패키지 관리 도구

 

1.centos 6.8 DVD image 파일을 server-A에 삽입
2.mount -t iso9660 /dev/cdrom /mnt
3.cd /mnt
4.cd Packages

메뉴 VM에 install vmware tools를 눌르면 시디모양나온다.

 

NetworkManager-0.8.1-107     .el6   .x86_64     .rpm
[이름     ] [패키지 버전][릴리즈][아키텍쳐][확장자]

 

RedhatEnterpriseLinux 6의 커널에서 호환이 되는 패키지
아키텍쳐 - x86_64 64비트(운영체제)를 지원하는 인텔 CPU계열에서 사용 할수 있는 패키지
                i386   32비트(운영체제)
                noarch - 모든 CPU에 설치가 가능한 패키지


x-windows 환경 만들기
yum groupinstall "X Window System" "Desktop" "Fonts" "korean Support"
vi /etc/inittab
id:5:initdefault:
init 5
vm 확인 다음다음다음  기타 root


rpm 패키지 설치 (-ivh)
-i install
-v verbose (설치과정 화면에 출력)
-h hash    (해시 기호 #을 이용하여 설치과정 출력)
------------------------------------------------------------------------------------------
xterm - gui 환경에서 사용하는 터미널 프로그램

오류가 뜬것은 의존성 오류

 

의존성오류 생성 안되게 필요한거 설치 해시기호 보면서 설치완료 확인

 

터미널환경 보기

 

rpm -ivh yp-tools-2.9-12.el6.x86_64.rpm
오류: Failed dependencies:   //의존성 오류

 

★의존성 무시하고 설치하는 방법


--nodeps 의존성 무시
--force 강제 설치

 

의존성 오류무시 옵션 통해 설치가능 확인

 

[root@Server-A Packages]# rpm -ivh yp-tools-2.9-12.el6.x86_64.rpm --nodeps
준비 중...               ########################################### [100%]
   1:yp-tools               ########################################### [100%]

의존성 무시 옵션 앞이나 뒤에 써도 상관 없음을 확인

 

★패키지 정보 검색
rpm   -q  //질의옵션
        -a  //전체 패키지 목록 ->rpm -qa

 

-f           //파일명을 포함한 패키지명을 출력(절대경로)
             //rpm -qf /bin/ls               

 //파일의 경로를 입력하면, 파일이 어떠한 패키지에 포함된 파일인지 확인이 가능함
 

    

명령어 ls 기본적인 것을 지우면 coreutils 패키지를 설치하면 된다

 

-i          //패키지 상세한 정보 확인
            //rpm -qi [패키지명]

 

-l          //패키지가 설치한 파일의 목록을 출력
              //rpm -ql [패키지명]

-R       //패키지 의존성 확인
          //rpm -qR [패키지명]
이러한 내용이 설치가 되어있어야 xterm설치 가능

 

★패키지 삭제
rpm -e [패키지명]
rpm -e xterm
지운거 확인
rpm -qa | grep xterm

 

장점 : 설치가 쉽다.
단점 : 의존성 문제가 해결하기 어렵다.

'Server > Linux' 카테고리의 다른 글

xshell/ Bonding  (0) 2017.04.22
xshell/ YUM  (0) 2017.04.22
xshell/ Find  (0) 2017.04.22
xshell/ 압축 gz bz2 xz  (0) 2017.04.19
xshell/ 부팅프로세스  (0) 2017.04.19

find [경로] [옵션] [액션]

 

size 옵션
현재 시스템에서 가장 큰 파일 찾기
현재 시스템에서 50M 이상인 파일 찾기

 

find / -size +50M

50M이상인 파일들 확인

 

-type 타입 : 지정한 파일타입에 해당하는 파일. b,c,d,p,f,l,s 등이 있음
-empty : 비어 있는 파일, 단 일반파일 또는 일반 디렉토리에 한함

[수행할작업(action)]

 

-delete : 검색된 파일들을 삭제
-exec command ; : 지정한 command 를 실행
-exec command {} + : 검색된 파일들을 차례대로 매칭하면서 지정된 command 를 수행
-ls : 'ls - dils' 를 수행
-ok command ; : -exec 와 같지만 실행하기 전에 먼저 사용자에게 표준입력으로 수행할 command 를 입력 받는다.

                          만약 입력이 없다면 지정된 command 를 수행한다.
-print : 검색된 파일들에 대하여 전체파일 경로로 파일리스트를 표준출력으로 출력한다.
-printf format : 검색된 파일들에 대하여 지정된 format 형식으로 표준출력으로 출력

 

실습)

 mkdir /practice/find_test
cd /practice//find_test/
 touch test{01..10}

 

-delete 검색 결과 삭제

 

find . -type f -name "test*" -delete   //f 파일
find . -type d -name "test*" -delete   //디렉토리 d

test가 들어간 디렉토리를 삭제 확인

 

test가 들어간 파일 모두 삭제 확인

이름이 test로 시작하는 모든 파일을 현재 경로에서 삭제

 

-exec [명령어] \;  검색 결과를 지정한 명령어 처리
-exec [명령어] {} \;  검색 결과를 차례대로 매칭하면서 지정된 명령어 실행


find . -empty -exec ls -l \;         //ls -l 을 세번침
find . -empty -exec ls -l {} \;     //검색 결과가 {}에 대입

 

실습)

vi find_test.sh

 

#!/bin/bash                      shebang : 해당 쉘로 이용하여 아래 스크립트를  실행하겠다는 것을 커널에게 알리는 부분
for z in $(seq 0 7); do
for i in $(seq 0 7); do
for j in $(seq 0 7); do
for k in $(seq 0 7); do
touch ${z}${i}${j}${k};
chmod ${z}${i}${j}${k} ${z}${i}${j}${k}
done;
done;
done;
done;

sh find_test.sh //명령어 실행
0000~7777 확인
 

★퍼미션???

-파일이나 디렉터리의 읽기, 쓰기, 삭제 등의 권한을 설정해 놓은것

 


ex) 퍼미션이 777 파일을 찾아서 화면에 출력
find . -perm 777         //정확히 허가권이 0777인 파일 검색

 

find . -perm +777 | sort -n | more //
//기준이 되는 허가권에 비트가 하나라도 일치하는 파일
rwxrwxrwx

./0001~./7777

 

find . -perm -777      //기준이 되는 허가권 이상인 파일

 

mkdir test
cd test
touch {1..7}

 

chmod 100 1
...
chmod 700 7

find . -perm +300    //허가권 300이 하나라도 일치 4가 없는거 확인
1,2,3,5,6,7
find . -perm -300
3
7

 

1. find 명령어로 이름이 0으로 시작하여 1로 끝나는 파일만 gzip을 압축
                                   "0??1"
 -exec [명령어] {} \;

find -name "0??1" -exec gzip {} \;

 

실습2)

 

★xargs(eXtended Arguments)
-표준 출력 값 을 이용하여 명령을 실행
-find와 사용 시 결과물을 다음 명령어에 인자로 전달하는 역할
-여러 명령어와 함께 조합하여 사용할수 있다.

 

-i 인자로 문자열을 전달
-t 상세한 정보 출력

 

mkdir /practice/xargs_test
cd /practice/xargs_test/
 vi xargs_test.sh

 

#!/bin/bash
for z in $(seq 0 10); do
fallocate -l 10K "$RAMDOM.txt"
done;
for z in $(seq 0 10); do
fallocate -l 15K "$RAMDOM.txt"
done;
for z in $(seq 0 10); do
fallocate -l 20K "$RAMDOM.txt"
done;


sh xargs_test.sh

 

1.find를 쓰지 않고 크기가 10kb인 파일명만 출력하고 이름의 숫자가 작은순으로 정렬
ll -h | grep 10K | cut -d " " -f 8 | sort -n      //★공백을 자르고 8번째 필드만 보겠다.

 

2. find를 사용하여 크기가 10kb인 파일을 출력하고 파일의 이름만 출력하여 정렬
find . -size 10k | cut -d " " -f 8 | sort -n

 

3. 현재 경로에서 find를 사용하여 크기가 15kb 파일을 삭제, 단 -delete 옵션 사용 금지
 find . -size 15k -exec rm {} \;

k는 대문자K가아니라 소문자k로 해야인식이 된다. 용량15k 삭제 확인

 

시험 find xargs

 

4. find 를 사용하지 않고 크기가 20k 파일을 삭제
ll -h | grep 20K | cut -d " " -f 8 | xargs rm

 

ex) find로 원하는 파일찾아서 해당 파일에서 특정 문자열 검색
★find / -name "*" | xargs grep [계정명:암호]
/etc/passwd

 

ex) /bin 디렉토리에 가장큰 일반 파일을 찾아 크기를 확인하여 가장 큰 파일을 출력

find /bin -type f | xargs du -s | sort -n | tail -1  //용량 확인 du

가장 용량이 낮은 파일과 높은 파일 확인

 

cd /practice/find_test/ 이동후 현재 디렉토리에 gz 압축파일 해제

현재 디렉토리에 위치한 모든파일 이름뒤에 .perm 붙이기
이름 변경하기
mv [원본] [대상]
0000~7777 -> 0000.perm ~ 7777.perm

 

mv 0000 0000.perm
~
mv 7777 7777.perm

 

ls | xargs -t -i mv {} {}.perm

 

ex) 0000 ls | xargs -t -i mv {0000} {0000}.perm 총7777개 실행

 

du -sh /* //큰 파일 확인
rm -rf ./*
rm -rf ./a*

 

★ls | xargs rm // 하나하나 삭제  새벽시간 서버 한가할때 . 작업많은 시간은 서버부하.
ex) rm 0000
    rm 0001

 

원상복구 .perm삭제해보자
ls | cut -d "." -f 1 | xargs -t -i mv {0000}.perm {0000}

.perm 삭제 확인

'Server > Linux' 카테고리의 다른 글

xshell/ YUM  (0) 2017.04.22
xshell/ RPM  (0) 2017.04.22
xshell/ 압축 gz bz2 xz  (0) 2017.04.19
xshell/ 부팅프로세스  (0) 2017.04.19
xshell/ LVM  (0) 2017.04.18

압축 & 아카이브

 

압축 유틸리티 종류

gzip, bzip2, xz, zip

 

gzip & gunzip
#gzip [파일명]              //해당 파일 압축
                                   //파일 확장자 file.gz

gunzip [파일명].gz         //압축 해제
gzip -d [파일명].gz         //압축 해제

 

옵션 -[1~9]    -1 압축속도가 가장 빠르다. 압축율은 가장 낮다.
                      -9 압축속도가 가장 느리며, 압축율은 가장 높다.
                      ( -6 기본값)

압축 실습

 

mkdir /practice/gzip_test
cd /practice/gzip_test/
cp /usr/lib/locale/locale-archive /practice/gzip_test/
cp locale-archive  file1
cp file1 file2
cp file1 file3

 

gzip file1         //file1 압축 빨간글 확인

 

gunzip file1     //압축해제

 

time gzip -1 file2     //명령어 실행 시간 확인(real : 총 수행 시간)
time gzip -9 file3     //22M

 

file2 -1 압축
file3 -9 압축         //압축속도 느린거 확인
-1M 차이

 

압축해제 2개

압축해제 확인

 

bzip2 & bunzip2
- bzip2 [파일명]             //압축   20M
  bunzip2 [파일명].bz2     //압축해제
  bzip2 -d [파일명].bz2

 

gzip & bzip2 차이??
-용량이 bzip2이 최신압축  더좋다

 

xz & unxz

 

압축
xz [파일명]

옵션 -9로 했을때 2.4M 인 놀라운 압축기능을 볼수 있다.

 

해제
unxz [파일명].xz
xz -d [파일명].xz

압축해제 확인

 

xz -가장 최근에 배포된 명령어로, 압축률이 가장 좋다

 

gz . bz2 . xz

 

아카이브
tar(Tape ARchive)
-여러개의 지정된 파일들을 아카이브로 만든다.
-아카이브 파일에는 .tar 을 붙인다.

 

용량이 안줄고 묶는 느낌.

 

#tar [옵션] [만든 파일의 이름] [묶을 파일 이름]
 -c 새로운 아카이브 생성
 -x 아카이브 해제

 

 -f tar 아카이브 파일 지정
 -v 진행 과정 출력

 

 -t 아카이브 파일 확인

 

1. 아카이브 생성하기 (cvf) x c 차이
tar cvf [만든 파일.tar] [묶을 파일]
tar cvf dong_file.tar file*         //아카이브 생성

 

tar tvf dong_file.tar    // 내용 확인

 

2.아카이브 해제
 tar xvf dong_file.tar

 

3. 아카이브 파일 추가 (rvf)
  [파일 추가]
#tar rvf dong_file.tar

 

bzip2 dong_file.tar
->dong_file.tar.bz2

dong_file.tar.bz2확인 58M확인

압축풀기 다른 경로에 압축을 풀려면 -C(대문자)로 경로를 지정해야 한다.

압축푼 파일들 확인

 

압축해제 순서

1. bz2 해제
2. tar xvf dong_file.tar 아카이브 해제

3. tar 삭제

 

보통 아카이브로 묶고 압축한다.

 

아카이브 압축
-z     gzip 유틸리를 이용하여 아카이브 파일 압축/해제
-j     bzip2
-J     xz

 

기존 압축 방법    tar옵션을 이용
#tar cvf file.tar file*  tar cvfj file.tar.bz2 file*
#bzip2 file.tar   -> file.tar.bz2
 file.tar.bz2

 

bunzip2 file.tar.bz2  tar xvfj file.tar.bz2
#tar cvf file.tar file*

 

옵션 설명 압축율 속도 확장자명
z     gzip          낮음      빨름 .tar.gz
j     bzip2          높음     느림 .tar.bz2
J     xz             높음     빠름 .tar.xz

'Server > Linux' 카테고리의 다른 글

xshell/ RPM  (0) 2017.04.22
xshell/ Find  (0) 2017.04.22
xshell/ 부팅프로세스  (0) 2017.04.19
xshell/ LVM  (0) 2017.04.18
xshell/ 쿼터(quota)  (0) 2017.04.18

ssh 공부(http://cafe.naver.com/pipc/14175)

★리눅스 부팅 프로세스

1. Power ON & ROM BIOS
-전원이 들어오면 CPU가 ROM(read only memory)에 저장된 BIOS(basic input output system)실행
-BIOS는 POST(Power On Self Test)을 수행하여 하드웨어 장치들을 하나씩 인식하며 이상 유무 확인
-부팅 장치에서 bootsector에 MBR을 읽어드려 부트로더를 실행

 

리눅스 부트로더 - LILO -> 현재 사용 안함
  GRUB(부트로더) -> 현재 널리 사용하고 있는 부트로더

 

2. 부트로더 (GRUB)실행   reboot후 vm .3.2.1 엔터

 

-부팅메뉴 선택 (/boot/grub/grub.conf) 실행, 부팅하고자하는 운영체제를 선택
-커널 이미지(/boot/vmlinuz-*)가 메모리 로딩이 되고, 동작에 필요한 프로세스를  생성한다.

 

3.init 프로세스 실행 (PID=1)


- /etc/inittab 파일을 참고하여 설정된 Runlevel 실행
- 부팅 레벨이 결정되면 /etc/rc.d/rc.sysinit 스크립트 실행
 (PATH 변수 설정, 네트워크 설정, 스왑메모리, 호스트 등등)
-해당 런레벨에 맞는 /etc/rc.d/rc#.d/* 디렉토리에 스크립트가 실행
/etc/rc.d/rc0.d/*
/etc/rc.d/rc1.d/*
/etc/rc.d/rc2.d/*
......
/etc/rc.d/rc6.d/*

 

cd /etc/rc.d/rc3.d

S로 시작하는 파일은 해당 부팅 레벨로 부팅 시 자동으로 실행 되는 파일
K로 시작하는 파일은 자동으로 실행되지 않는 파일
        숫자 파일들이 실행되는 우선순위

 

RunLevel - 시스템을 어떤 방식으로 부팅할 것인가를 분류해 놓은것

0 - 시스템 종료
1 - 싱글 유저 모드 (안전 모드)
2 - 네트워크 기능이 없는 다중 사용자 모드
3 - 모든 네트워크 기능을 지원하는 다중 사용자 모드 //런레벨
4 - 사용x
5 - x-window
6 - 시스템 재부팅     //(0~6번 7개 레벨

 

init 0==shutdown -h now==poweroff==halt

init 6==shutdown -r now==reboot

 

★root패스워드 분실 시 (런레벨 1 (싱글 모드))
-timeout 전에 엔터 키 입력후 os선택시 e키를 눌러 파라미터 수정 //파라미터-매개변수


파라미터를 수정할 커널에서 e(edit)키를 눌러 설정값 수정

single 혹은 1 입력

부팅(b) 후 passwd 패스워드 변경

 

reboot root접속

 

★GRUB에 passwd 설정
grub > md5crypt 
password 입력
 $1$TGwYH/$TR0VJsJl6dMP96YGlVdpM1 // md5 알고리즘으로 암호화된 결과 복사

 

grub > quit 종료
vi /boot/grub/grub.conf
10번째줄 password --md5 $1$TGwYH/$TR0VJsJl6dMP96YGlVdpM.

 

reboot -> grub 부트로더 메뉴 진입

p를 눌러 패스워드를 입력해야 편집이 가능하다.!

 

★chkconfig
-데몬의 실행 레벨 정보를 관리 해주는 프로그램

 

chkconfig --list          //데몬 리스트 확인
chkconfig --list [데몬이름]         //chkconfig  --list sshd
chkconfig --[add|del] [데몬이름]
chkconfig --level # [데몬이름] [on|off|reset]

 

런레벨 3에서는 sshd 데몬이 부팅 시 자동으로 실행되지 않도록 설정
chkconfig --level 3 sshd off
chkconfig  --list sshd
sshd            0:해제 1:해제 2:활성 3:해제 4:활성 5:활성 6:해제

 

reoot 후에 xshell을 이용하여 해당 서버A 접속(ssh)  접속이안됨...

 

service sshd start // vm  sshd 데몬 실행
xshell 접속시도  //접속 가능

 

service [데몬 이름] [start|stop|status|restart]

 

★시스템 초기화및 관리 프로세스 순서!!!!!!!!!!!!!!! 시험
-과거 system V init 방식으로 시스템 초기화 (init -> inittab -> rc.sysinit)
★-현재 system V init + Upstart 방식을 함께 사용(init -> rcS.conf -> rc.conf -> rc.local)
-미래 systemd

'Server > Linux' 카테고리의 다른 글

xshell/ Find  (0) 2017.04.22
xshell/ 압축 gz bz2 xz  (0) 2017.04.19
xshell/ LVM  (0) 2017.04.18
xshell/ 쿼터(quota)  (0) 2017.04.18
xshell/ 파일시스템 RAID  (0) 2017.04.16

LVM (logical volume manager)

- disk 파티션 효율적으로 관리하고 사용할 수 있는 방식

- 독립적으로 구성된 파티션(Disk)을 하나로 연결하여 하나의 파티션처럼 사용할 수 있도록 한다.

 

LVM 특징 

-쉬운 관리

-직관적인 저장 장치로의 접근

-뛰어난 확장성

-편의에 따라 장치 이름 지정

 

PV(Physical Volume) 

- 물리적인 디스크를 의미하며, LVM을 사용할 수 있도록 LVM 데이터 구조를 생성한다.

VG(Volume Group)

 - LV를 생성할 수 있는 Volume Group을 의미하며, 하나 또는 그 이상의 PV를 포함한다.

LV(Logical Volume)

 - LVM으로 구성되지 않는 시스템에서의 디스크 파티션, 가상 파티션을 의미한다.

PE(Physical Extent)

 - PV에 나누어져 있는 데이터 블럭을 의미한다.

LE(Logical Extent)

 - LV에 나누어져 있는 데이터 블럭을 의미한다.

 

PV VG LV PE LE

앞에 두글자 빼고는 명령어 같다. create , remove

 

 

 

LVM 생산 실습

 

1. 스냅샷 초기화
1GB * 3EA 추가
reboot

 

2.fdisk 이용하여 디스크 확인

 

3.파티션 생성
 #fdisk /dev/sdb~sdd
n
p
1
enter
enter
t
l
8e     //linux LVM   ★시험많이출제
w

fdisk -l 확인

 

4. PV생성 (physical volume)
#pvcreate [장치명]
pvcreate /dev/sdb1~sdd1

LVM데이터 구조 생성

 

5. VG (Volume group)생성
vgcreate [볼륨그룹명] [PV장치명] [PV장치명] ... [PV장치명]

vgcreate PracticeVG /dev/sdb1 /dev/sdc1 /dev/sdd1

LV를 생성할수 있는 VG생성 [볼륨그룹명]안쓰면 오류

 

6. VG 구성확인
vgdisplay [볼륨그룹명]
vgdisplay PracticeVG


 VG Name               PracticeVG

  Cur PV                3                 //현재 PV개수
  Act PV                3                 //활성 PV 개수
  VG Size               2.98 GiB     //VG 용량
  PE Size               4.00 MiB     //PE 크기 (4MB)
  Total PE              762             //4MB x 762 =
  Alloc PE / Size       0 / 0              //할당된 PE개수   PV에나누어져 있는 데이터블럭
  Free  PE / Size       762 / 2.98 GiB //남은 PE 개수 / 용량

 

7. VG 파티션 LV 생성 (logical volume)

#lvcreate --size [크기] --name [LV이름] [VG이름]

lvcreate  --size 500M --name PracticeLV1 PracticeVG
lvcreate  --size 1.5GB --name PracticeLV2 PracticeVG
lvcreate --extents 100%FREE --name PracticeLV3 PracticeVG
- 나머지 용량(PE) 전부 PracticeLV3에 할당

 

8.LV 정보 확인
#lvdisply
#lvdisply [LV경로]


  LV Path                /dev/PracticeVG/PracticeLV3
  LV Name                PracticeLV3
  VG Name                PracticeVG
  LV Size                1012.00 MiB
  Current LE             253                  //LV에 할당된 LE개수   LV에 나누어져 있는 데이터 블럭

 

9. 파일 시스템 생성 및 마운트
mkfs -t ext4 /dev/PracticeVG/PracticeLV1
mkfs -t ext4 /dev/PracticeVG/PracticeLV2
mkfs -t ext4 /dev/PracticeVG/PracticeLV3

 

mkdir /LV-{1,2,3}
mount /dev/PracticeVG/PracticeLV1 /LV-1
mount /dev/PracticeVG/PracticeLV2 /LV-2
mount /dev/PracticeVG/PracticeLV3 /LV-3

 

LV-1 500M
LV-2 1.5G
LV-3 나머지 전부

LV 삭제 및 용량 추가

umount /LV-3         //언마운트
lvchange -an /dev/PracticeVG/PracticeLV3     //LV 비활성화
 -LV 상태를 change변경 (-a active -n no)
   -> 해당 LV를 비활성화

 

lvremove /dev/PracticeVG/PracticeLV3     //LV 제거

 

LV언마운트 ->LV비활성화 ->LV제거

 

lvdisply         //lv3삭제확인

vgdisplay
  Cur LV                  2
  Open LV               2
  Max PV                0
  Cur PV                 3
  Act PV                 3
  VG Size               2.98 GiB
  PE Size               4.00 MiB
  Total PE              762         //블록
  Alloc PE / Size       509 / 1.99 GiB 
  Free  PE / Size       253 / 1012.00 MiB   //여유 PE 253 / 1012MB

 

LV-1 500M
LV-2 1.5GB

 

lvextend --size +512M /dev/PracticeVG//PracticeLV1     //512M용량 추가

vgdisply
  Free  PE / Size       125 / 500.00 MiB //남은 블록 용량 확인 125 (1==4MB)

 

lvextend --extents +125 /dev/PracticeVG/PracticeLV2     //블럭 추가
lvextend --size +500M /dev/PracticeVG/PracticeLV2
vgdisply
  Free  PE / Size       0 / 0

남은 용량 없음 확인

 

기존                  추가     현재
LV-1 500M             +512M     1G
LV-2 1.5GB            +500M     2G

 

 

 

resize2fs /dev/PracticeVG/PracticeLV1     //파일 시스템 재설정 resize2fs
resize2fs /dev/PracticeVG/PracticeLV2     //파일 시스템 재설정

 

 

 

LVM 과 RAID 차이점????

-LVM 은 RAID 보다 관리 및 확장이 비교적 쉽다.    

-RAID 는 LVM 에는 없는 disk mirroring(RAID level 1), Parity Stripe (RAID level 4,5) 등의 방식이 있어

 속도 또는 데이터의 무결성을 보장된다.

 

 

LVM 생산 과정 사진

 

'Server > Linux' 카테고리의 다른 글

xshell/ 압축 gz bz2 xz  (0) 2017.04.19
xshell/ 부팅프로세스  (0) 2017.04.19
xshell/ 쿼터(quota)  (0) 2017.04.18
xshell/ 파일시스템 RAID  (0) 2017.04.16
xshell/ 파일시스템 데몬 파티션  (0) 2017.04.15

쿼터 (Quota) 사용자별 공간 할당

-파일 시스템 마다 사용자나 그룹이 생성할 수있는 파일의 용량 및 개수를 제한 하는것

 

쿼터 제한 영역
1. user hard limit
-사용자가 사용할 수 있는 최대 공간


2. user soft limit
-사용자가 soft limit 영역에 도달 할때 까지 데이터를 자유롭게 저장할수 있다.
 

3. group hard limit

4. group soft limit

5. grace(유예기간)
 - 소프트 제한 영역을 넘어서면 사용자나 그룹은 유예기간에 접어들게 된다.
 - 설정한 유예기간 시간동안 파일을 삭제하여 용량을 확보하지 않는경우에는 hardlimit로 변경된다.

 

quotacheck : quota설정파일이 존재하는지 설정은 이상없는지 등의 quota설정 체크
edquota : 디스크사용량제한(quota) 설정하기
quota : 현재 설정된 quota내용확인하기
quotaon : 설정된 quota 가동하기
quotaoff :  가동중인 quota 중지하기
repquota : 현재 사용중인 quota설정 및 용량제한내역 보기

 

------------------------------------------------------------------------------------------
quota [-u] [옵션] [사용자]
quota [-g] [옵션] [그룹]
- 사용자나 그룹의 제한량을 표시한다
- root만 -u 옵션을 통해 다른 사용자의 할당량을 확인 할 수 있다.


옵션 -q : 제한량의 설정값을 초과한 경우에만 간단한 메세지 출력
       -v : 자세한 모드로 저장 공간이 할당되지 않은 경우에도 제한량의 정보를 보여준다.

ex) quota -uv [사용자] //해당 사용자의 모든 제한량을 점검
------------------------------------------------------------------------------------------   
quotaon - 하나 이상의 파일시스템에 대해 설정된 제한량을 적용
quotaon [옵션] [파일시스템]

 옵션

-a : /etc/fstab에 등록되고 읽기와 쓰기 쿼터 사용으로 표시된
             모든 파일 시스템에대해 쿼터를 적용한다.
-g : 그룹 쿼터를 적용한다. -a 옵션을 사용할 경우 그룹 쿼터를
         동시에 적용하므로 해당 옵션은 불필요하다.    
-u : 기본 옵션으로, 사용자에게 쿼터를 적용한다.
-v : 상세하게 출력
    
ex) quotaon -av #/etc/fstab에 정의된 것에 쿼터를 모두 적용
     quotaon -gv  /home   #파일시스템 /home 사용자에 쿼터 적용
------------------------------------------------------------------------------------------
quotaoff - 하나 이상의 파일시스템에 적용된 쿼터 사용을 중지
quotaoff [옵션] [파일시스템]
  옵션

-a : /etc/fstab에 정의된 모든 파일시스템 대한 쿼터 적용 중지 한다.
-g : 그룹에 적용된 쿼터 사용을 중지
-a : 사용자 쿼터 적용을 중지
-v : 쿼터 적용이 중지되는 각 파일시스템에 대해 자세히 표시
     

ex) quotaoff -av   #모든 쿼터 적용을 중지
------------------------------------------------------------------------------------------  
quotacheck [옵션] [파일시스템]
- 파일시스템을 점검하고 쿼터 설정에 대한 데이터베이스를 컴파일
   cron을 이용해서 주단위로 'quotacheck -a' 옵션 실행을 권장함
  
  옵션 -a : /etc/fstab에 정의된 모든 쿼터 파일시스템을점검
  usrqouta와 grpqouta 적용 시 모두 점검 가능
  
-g : 그룹에 대한 쿼터 정보만 컴파일한다.
-u : 기본값, 사용자에 쿼터 정보만 컴파일 한다.
-v : 실행결과를 자세하게 표시
-n :복제 된 구조체의 첫 번째 사본을 사용합니다.
-m: 파일 시스템을 읽기 전용으로 다시 마운트하지 않는다.
------------------------------------------------------------------------------------------    
edquota - 사용자그룹 쿼터 설정을 수정한다.
  옵션

-g : 그룹쿼터 수정 (-g 사용 시 -u 옵션도 따라와도 모두 그룹명으로 인식한다)
-t : 유예기간을 변경한다. 
-u : 사용자 쿼터설정을 변경 (-g와 사용시 무시된다.)
     

ex) edquota -u [사용자] - 해당 사용자의 대한 쿼터 설정 변경
     edquota -tu - 모든 파일 시스템의 사용자에대한 유예기간을 변경한다
------------------------------------------------------------------------------------------
repquota - 쿼터 운영 상황을 출력
 -a : 모든 쿼터 파일시스템 정보 출력
 -g : 그룹 설정을 요약
 -u : 사용자 쿼터 설정 요약
 -v : 요약정보를 자세하게 표시하며 출력결과에 머리말을 추가
 
 제한여부
 quota 제한을 받는지 여부를 나타내며  ' - ' 이면 제한에 걸리지 않았음을 의미하며, ' + ' 이면 제한에 걸려 있음을 의미함
 첫 번째는 Block제한, 두 번째 파일제한을 뜻한다.
------------------------------------------------------------------------------------------
setquota [옵션] [이름] [Block soft limit] [Block hard limit]
            [inode soft limit] [inode hard limit] [파티션 명]
    
 -u : 사용자
 -g : 그룹
 -a : 해당 시스템의 모든 설정

--------------------------------------------------------------------------------------------------

실습 쿼터 설정


1.스냅샷 초기화
disk 2개(1GB)
reboot

 

2.디스크 추가 및 파티션 생성
fdisk -l 확인
fdisk [확인한 장치명]
n
p
1
enter
enter
w

3. 파일 시스템 생성
mkfs -t ext3 /dev/sdb1
mkfs -t ext3 /dev/sdc1

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

mkdir /quota_user             //사용자 쿼터 
mkdir /quota_group             //그룹 쿼터
mount /dev/sdb1 /quota_user
mount /dev/sdc1 /quota_group

mount -o remount /quota_group/     //강제

mount 확인

 

5. 마운트 적용 및 fstab등록
 #df -h
/dev/sdb1      1004M   18M  936M   2% /quota_user_dir
/dev/sdc1      1004M   18M  936M   2% /quota_group_dir

 

UUID=e55ca0f2-e565-4c9c-94c2-370a4df76cd9 /quota_user_dir ext3 defaults,usrquota 0 0
UUID=04bd587d-3305-4ab5-951a-ffe5bbd4939a /quota_group_dir ext3 defaults,grpquota 0 0

사용자 쿼터 옵션 : usrquota
그룹 쿼터 옵션 : grpquota

mount 쿼터적용 확인

 

6.쿼터 사용자 계정 및 그룹
groupadd q-group
useradd -g q-group q-user1
useradd -g q-group q-user2

q-group그룹을 가진 q-user1 q-user2 계정 생성 확인

 

7.쿼터 적용을 위한 selinux 비활성
setenforce 0                  //selinux 비활성(일시적)
vi /etc/sysconfig/selinux
7번째 줄 변경 SELINUX=enforcing ---> SELINUX=disabled         //selinux 비활성 (영구적)

 

8.쿼터 지원 여부 확인
rpm -qa | grep quota   //쿼터 설치여부 확인
yum -y install quota
rpm -qa | grep quota

 

9.쿼터 설정 파일 생성
cd /quota_user                 //쿼터를 적용시킬 파티션의 최상위 디렉토리로 이동
quotaoff /dev/sdb1         //쿼터 설정을 위해 설정 off

 

quotacheck -u /dev/sdb1
- 쿼터 설정 파일 확인하여 없으면 생성, 있으면 확인 명령어
 -u 사용자 쿼터 확인
 -g 그룹 쿼터 확인

 

ls                                 //aquota,user 생성 확인
quotaon /dev/sdb1         //쿼터 시작
edquota -u [계정명] 
edquota -u q-user1         //텍스트 편집기를 이용하여 q-user1 계정의 사용자 쿼터 설정

 

blocks 용량
inodes 파일개수

 

edquota -u q-user1  텍스트 편집기를 이용하여 유예기간 설정

 

repquota -u /dev/sdb1

 

chown q-user1:root /quota_user

q-user1 777권한

 

su - q-user1
cd /quota_user_dir
cp /boot/vm [tab] ./file1    //4.1M
ls

file1생성 확인

 

soft      hard
20M     40M 이니까 소프트 초과

 

cp file1 file2
cp file1 file3
cp file1 file4
cp file1 file5  //20m 초과  경고(유예기간)
     ...
2분 경과후 (유예기간)
cp file1 file7  //hard limit까지 디스크 할달량 초과

 

rm -f file*

 

touch file{1..10}
softlimit 11개째 오류

 

유예기간 2분끝나면 12개 파일 못씀

 

repquota -u /dev/sdb1       //해당 파티션에 설정된 사용자 쿼터 현황 확인

 

   -+ ?????

-quota 제한을 받는지 여부를 나타내며  ' - ' 이면 제한에 걸리지 않았음을 의미하며,

 ' + ' 이면 제한에 걸려 있음을 의미한다. 첫 번째는 Block제한, 두 번째 파일제한을 뜻한

 

그룹 쿼터 적용

쿼터 설정 파일 생성
cd /quota_group/         //그룹 쿼터를 적용시킬 파티션의 최상위로 이동
quotacheck -g /dev/sdc1
aquota.group              //그룹 쿼터 DB 파일 생성 확인

쿼터 적용 방법
(1) #edquota         //텍스트 편집기 이용
(2) #setquota         //명령어를 이용한 설정변경

 

#setquota -g [그룹명] [인자값] [장치명]

 

인자값
[block soft limint] [block hard limit] [file soft limit] [file hard limit]
ex) setquota -g q-group 10M 20M 10 20 /dev/sdc1

 

유예기간 적용 방법
(1) edquota -t //텍스트 편집기 이용
(2) setquota -t //명령어를 이용하여 유예기간 설정


ex) setquota -tg [block grace sec] [file grace sec] [장치명]
    setquota -tg 120 120 /dev/sdc1  //그룹에 대한 타입tg
  
확인 : repquota -g /dev/sdc1

chown root:q-group /quota_group
chmod 770 /quota_group

 

edquota -u q-user1   

edquota -u q-user2  

용량:10M/20M
파일:10/20

 

1번 세션                      2번 세션
q-user1                       q-user2
cd /quota_group         cd /quota_group
파일19개                       1개
파일19M                       1M        //초과 오류 워닝

 

 

quotaon /dev/sdc1

 

같은 룹(q-group)에 속한 사용자 (q-user1, q-user2)들은 쿼터 제한 설정을
공유 하므로 q-user1이 자원을 사용하면 q-user2 사용할수 없다.

 

'Server > Linux' 카테고리의 다른 글

xshell/ 부팅프로세스  (0) 2017.04.19
xshell/ LVM  (0) 2017.04.18
xshell/ 파일시스템 RAID  (0) 2017.04.16
xshell/ 파일시스템 데몬 파티션  (0) 2017.04.15
xshell/ 프로세스 명령어  (0) 2017.04.13

리눅스 학원과 공부했던것이 큰 힘이 되었다.

 

실습을 많이 해야 문제를 이해하고 풀수 있는 것을 알게 되었다.

 

구글링도 도움이 되지만 문제가 어려웠고 복습을 많이 해야한다는 것을 깨달았다.

 

2차 시험장가는 준비를 이제 열심히 준비 해야겠다

 

 

'자격증 > 리눅스 마스터' 카테고리의 다른 글

리눅스 마스터 2급 2차 합격  (0) 2017.06.23
리눅스 마스터 2급 준비 시험일정  (0) 2017.03.03

RAID

- 여러개의 disk를 하나의 disk처럼 사용

- 비용절감 신뢰성

 

soft RAID 중요

 

RAID 구성방식

hardware - RAID 컨트롤러 내부의 하드웨어 및 펌웨어에 의해 구현

 - 독자적인 메모리와 프로세스를 가지고 있다.

 - 안정적이나 대부분 고가다.

 

software

- 운영체제에서 지원하는 방식 
- 저렴한 비용으로 H/W RAID와 동일하게 구현가능

- 속도나 신뢰성은 H/w RAID보다 떨어진다.

 

Linear RAID

-여러개의 디스크를 하나의 디스크처럼 사용하도록 만든다.

-첫 번째 디스크 완전히 채워지면 순차적으로 다음 디스크에 저장을 한다.
-하나의 디스크에서 입/출력 작업이 실행
-성능면에서 별다른 장점이 x
-하나의 디스크가 장애가 발생하면, 전체 볼륨을 사용할수 없게 된다
- 모든 디스크의 총량과 RAID볼륨의 용량이 같다.
-2개 이상의 디스크를 필요로 한다

 

Linear 실습 작업 준비

스냅샷 초기화

1.디스크 추가
0.25GB HDD * 9EA

 

2.디스크 추가 확인
fdisk -l //9개 디스크추가 확인

sdb~sdj  디스크 확인

 

3.파티션 생성
Linear Raid 사용디스크(/dev/sdb,/dev/sdc)
fdisk /dev/sdb
주파티션 생성

 

새로운 파티션n
주파티션p
파티션 번호1
1
파티션 타입변경t
l 타입
타입 설정fd
w

 

4.파티션 생성 확인


fdisk -l /dev/sdb
fdisk -l /dev/sdc

 

5.RAID구성
mdadm --create /dev/md9 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1

mdadm?? RAID 장치들을 관리하기 위한 리눅스 유틸리티이다  (여러가지 작업을 처리)

 

mdadm
(1) RAID생성
mdadm --create[장치명]--level[레이드레벨]--raid-device=[디스크 수] [장치명] [장치명]
(2) RAID 확인
mdadm --detail --scan  mdadm -- detail [장치명]
(3) RAID적용
mdadm --detail --scan > /etc/mdadm.conf

 

6.파일시스템 생성
mkfs -t ext4 /dev/md9

 

7.마운트 포인트 생성
mkdir /RAID-LINEAR

 

8.마운트
mount /dev/md9 /RAID-LINEAR

9.UUID확인
blkid /dev/md9

 

10.fstab등록
UUID=40c0aa1e-5533-4c95-aa20-4e25ccc7b0ad /RAID-LINEAR ext4 defaluts 0 0

 

11.RAID확인
mdadm --detail /dev/md9
df -h

 

12.RAID 적용
mdadm --detail --scan > /etc/mdadm.conf

 

RAID 0
-스트파이핑 RAID라고도 불린다
-데이터를 여러개의 디스크에 나누어서 쓰고 읽어 들임으로서 데이터를
 중복해서 기록하지 않기 떄문에 가장 높은 입/출력 성능을 제공(가장큰 장점!)
-RAID 0의 용량은 모든 disk 총 용량과 같다
-최소 2개의 disk를 필요로 한다
-데이터 보호 기능이 없다. (Fault tolerant 기능 제공x)

 

 

문제
ex)  1TB 디스크1개 LINEAR->데이터를 저장할수 있는 공간은?11TB
ex) 10TB 디스크1개 RAID 0->데이터를 저장할수 있는 공간은? 2TB

 

1. 파티션 생성
fdisk /dev/sdd - fd타입
fdisk /dev/sde - fd타입

2.파티션 생성 확인
fdisk -l

 

3.RAID 구성
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1

md0 임의숫자 device sdd sde 2개

4. 파일시스템 생성
mkfs -t ext4 /dev/md0

5. 마운트 포인트 생성

UUID="be7a466d-24f0-41e7-8b41-5204204081b5


#vi /etc/fstab 
# mdadm --detail /dev/md0
df -h
mdadm --detail --scan > /etc/mdadm.conf

md9 md0 확인

 

실무에서는 RAID1 기반.

 

RAID 1
- 미러링(mirroring) RAID
- 총 disk 용량의 50% 사용
- 두개 이상의 디스크를 미러링을 통해 하나의 디스크처럼 사용하는 방식. 완전히 동일하게 데이터를 복제

하기 때문에 HDD의 용량은 절반 밖에 되지 않지만 하나의 디스크에서 에러가 발생하면 미러링 된 디스크를 통해

복구가 가능하다.

 

/dev/sdf, /devsdg

 

1. 파티션 생성
#fdisk /dev/sdf
    n
    p   주파티션
    1   파티션 번호
   enter 디스크의 처음부터
   enter 마지막까지 파티션 생성
   t  타입 변경
   fd  레이드 타입 변경
   w  저장 후 종료

 

2. 파티션 생성
#fdisk /dev/sdg
    n
    p   주파티션
    1   파티션 번호
   enter 디스크의 처음부터
   enter 마지막까지 파티션 생성
   t  타입 변경
   fd  레이드 타입 변경
   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

 

5.마운트 확인
mount dev/md1 /RAID-1
df -h
mount
mdadm --detail /dev/md1

 

6.UUID 확인 fstab 등록
blkid /dev/md1
vi /etc/fstab

/dev/md1: UUID="1763ee13-558c-48a1-b7be-a84b082a0136" TYPE="ext4"

 

7. RAID 설정 저장
mdadm --detail --scan > /etc/mdadm.conf

 

RAID1 ,RAID5 만해도 충분.

 

RAID5
- RAID 1처럼 데이터의 안정성도 어느정도 보장되면서 RAID 0 처럼 공간
 효율성도 좋은 방식
- 최소 3개의 이상의 DISK가 필요하여 보통5개 이상의 DISK로 구성
- DISK 장애 발생시 parity 이용하여 데이터를 복구 //parity 동등함

4개의 disk로 구성된 RAID5 저장 방식
ex)데이터 정보 : 000 111 101 010
저장 방향 -->
ㅁ 패리티 

 

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. 파티션 생성
fdisk /dev/sdh     fd타입
fdisk /dev/sdi     fd
fdisk /dev/sdj     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

 

5. UUID 확인 fstab 등록
blkid /dev/md5

/dev/md5: UUID="0ec91d09-08a1-4971-b8cf-2f597231194e" TYPE="ext4"

vi /etc/fstab 

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

mdadm --detail /dev/md5

 

6. 레이드 설정 저장
mdadm --detail --scan > /etc/mdadm.conf

 

장애 복구능력
INEAR-RAID x
RAID-0  x
RAID-1  o
RAID-5  o

 

장애 테스트
sda(harddisk)

 

LINEAR-RAID sdb sdc (2,3)//디스크 번호
RAID-0
RAID-1
RAID-5

 

linear로 묶은 하나가 고장나면 복구가 안됨

 

실무에서는 Raid1

 

2,4,6,8 디스크 지워준다

md1 md5 확인가능

 

cat /proc/mdstat (1,5 는 active 활성화)

디스크 빠진거 확인

 

mdadm --detail --scan

 

디스크4개 추가후(0.25GB)
reboot

 

fdisk -l 9개 디스크 확인
fdisk /dev/sdb     //fd타입
fdisk /dev/sdd     //fd타입
fdisk /dev/sdf     //fd타입
fdisk /dev/sdh     //fd타입

 

중지하고 새로 만들기.

 

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, RAID-5

 

RAID-1
mdadm /dev/md1 --add /dev/sdf1

 

RAID-5
mdadm /dev/md5 --add /dev/sdh1

디스크 빠진거 다시 생성 확인

 

1번세션                                                 2번세션
watch -n 0.1 -d "cat /proc/mdstat"             mdadm /dev/md5 --add /dev/sdh1
                                                               mdadm /dev/md1 --add /dev/sdf1

Raid6 시험에 많이 나온다    

 

Raid10 속도빠름 복구능력x


Raid10 그림처럼 묶어서 사용함 (실무)
#mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1/ /dev/sde1

'Server > Linux' 카테고리의 다른 글

xshell/ LVM  (0) 2017.04.18
xshell/ 쿼터(quota)  (0) 2017.04.18
xshell/ 파일시스템 데몬 파티션  (0) 2017.04.15
xshell/ 프로세스 명령어  (0) 2017.04.13
xshell/ 사용자계정 명령어3  (0) 2017.04.10

데몬이란?

- 실제 서비스를 제공하는 프로세스이 집합

 

데몬의 동작유형

- xinetd모드 Standalone 모드

 

xinetd (extended internet service daemon/ 슈퍼데몬)

-외부의 요청이 있을때만 반응하기 때문에 반응속도가 느리지만 리소스 소모는 적다.  //리소스???

 

리소스

- 컴퓨터 시스템의 여러가지 자원

 

Standalone

- 슈퍼데몬에 의지하지 않고 요청이 있을때 신속히 반응 할수 있지만, 항상 커널에 상주 하고 있기 때문에

   리소스 소모가 크다.

 

데몬의 종류

- network 네트워크 관련된 정보를 설정을 활성화 하는 데몬

- iptables 패킷 필터링 방화벽 데몬      //패킷 필터링??

- postfix 메일 전송 역할을 하는 메일 서버 데몬

 

패킷 필터링

-  패킷은 데이터의 전송 단위.

- 특정 송신원 주소나 발신원 주소등을 가진 패킷의 통과를 제한하는 것

- 라우터나 침입 차단 시스템에서 사용     //라우터??

 

라우터

- 서로 다른 네트워크 중계하는 장치

 

리눅스 마스터 1,2급 시험용 데몬
ALSA - 사운드 관련 데몬
CUPS - 프린터 관련 데몬
SANE - 스캐너,캠 관련 데몬

 

파일 시스템

- 파일을 디스크 상에 구성하는 방식

- 쉽게 데이터를 찾을 수 있도록 도와주는 시스템


리눅스에서 지원하는 파일 시스템의 종류

-EXT3(과거), EXT4(현재), SWAP, XFS(최신), NFS, lS09660


파일시스템의 종류
ext -초기 리눅스에서 사용하였던 종류, 현재는 사용하지 않음
ext2 -현재도 사용하며, 긴파일시스템 이름을 지원하는것이 특징
ext3 -저널링 파일시스템, ext2보다 파일시스템의 복수/보안기능을 크게향상되었고     
         현재 기본 파일시스템
ext4 -16TB까지만 지원하던 ext3과 달리 더큰 용량을 지원하며, 삭제된 파일 복구
          파일 시스템 속도가 훨씬 빨라진 파일시스템
iso9660 -DVD/CD-ROM을 위한 표준 파일시스템으로 읽기만 가능
nfs -원격서버에서 파일시스템 마운트할때 사용하는 시스템(Network File System)
swap -스왑파일시스템, 스왑공간으로 사용되는 파일시스템

  -  하드 디스크를 가상 메모리 처럼 쓰는 기법 

XFS     -64비트 고성능 저널링 파일 시스템.


ufs -Unix system에서 표준 파일시스템으로 사용(Unix File System)
vfat -윈도우95/98등등 ntfs를 지원하기위한 파일시스템
msdos -MS-DOS파티션을 사용하기위한 파일시스템
ntfs -윈도우NT/2000의 nfts를 지원하기위한 파일시스템
hfs -MAC컴퓨터의 hfs를 지원하기위한 파일시스템
hpfs -hpfs를 지원하기위한 파일시스템
sysv -Unix system v를 지원하기위한 파일시스템
ramdisk -RAM을 지원하기위한 파일시스템

 

centos - ext4 채택


EXT4(Extended file System)

- 1EB의 최대 파일 시스템 사이즈와 16TB의 최대 파일 사이즈 지원

- 서브(하위) 디렉토리 64000개 지원 파일은 약 40억개 지원

- Boot sector 와 block group으로 나뉜다


1TB=1024GB-> 1TBx1024-> 1PB(펙토라)x1024-> 1EB(엑사)


Boot sector 내용

- 논리적인으로 디스크의 첫번째 부분(0번 섹터 0번 실린더)영역

- 명령어들의 집합이 들어있고 파티션의 위치에 대한 정보


sector???

- 주소지정을 할 수 있는 최소 단위의 저장공간


실린더??

- 모든 디스크 상의 동일한 트랙이 수직으로 쌓여서 실린더 형태


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번 디스크

/dev/sda1        /dev/sda2

2번 디스크

/dev/sdb1        /dev/sdb2

3번 디스크

/dev/sdc1 


sda(SCSI,SAS타입 디스크) 최신

hda(IDE타입,SATA타입 디스크) 구식


#df -h


용량 정보 확인 sda3 use% 100%면 사용불가


df (disk free) - 파일 시스템 및 파티션 별 자세한 용량 정보 확인

-a 모든 파일 시스템 출력

-h 용량을 읽기 쉽게 출력

-i inode 사용 정보를 출력

-a 모든 파일 시스템 확인 -i 파일의 종류,크기,하드링크 수 확인 가능


#du

- 디렉토리나 파일 용량 확인

-h 파일 크기 확인 -s 요약


fdisk(파티션 생성/ 수정)

fdisk[옵션] [장치명]
-l 디스크 파티션 정보 출력


ex) fdisk -l /dev/sda1 /해당장치의 정보확인

디스크 파티션 정보 확인


파티션 생성 실습
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
    요것만 필요


1GB - 총 4개의 파티션으로 설정
250M
250M
250M
250M

p는 최대 4개 파티션

주 파티션을 이런식으로4번 하면된다 실린더 사이즈는  '+' 를 붙여야 한다.

마지막엔 w 로 저장나가면 된다.

잘 만들어졌나 생성 확인 4개 파티션 확인


더하고 싶으면 logic 파티션으로 많이 생성


서로연결(mount)


실습
1GB 총 4개의 파티션으로 설정
주파티션   200MB /dev/sdb1
주파티션   200MB
확장 파티션
논리파티션 200MB
논리파티션

파티션 생성 확인


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


mkfs를 해야하는 이유

- 파일을 잘 찾기 위해서

- 파일을 관리하기 위해서.


마운트

- 특정 디렉토리에 파일 시스템을 탑재하는것
- 리눅스는 파일 단위로 모든 장치를 관리하기 때문에 새롭게 만든 파일 시스템을 사용하기 위하여 추가한

   디스크 장치를 임의의 디렉토리에 마운트 하여 사용해야 한다.


마운트 포인트
- 파일 시스템을 디렉토리 연결시켜야 하는데 이때 연결되는 디렉토리를 의미


마운트 해제(umount [마운트 포인트]


mount [장치명] [마운트 포인트]

만든 파티션을 디렉토리에 마운트 연결


마운트 생성 확인


df -h 용량 확인


하지만 reboot을 하면 모두 다 사라진다.


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


reboot을 해도 파티션이 안사라지게 해보자


vi /etc/fstab
1. 파일시스템 장치명
-장치명
-UUID (범용 고유 식별자 /universal unique identifier)
-blkid

UUID 확인

위와같이 작성후 :wq  후 reboot 후 fdisk -l 확인


2. 마운트 포인트


3. 파일시스템 타입


4. 마운트 옵션
-defaults(rw, suid ,dev, exec, auto, nouser, async)

rw - 읽기/쓰기 (read/write) 가능

suid - setuid, setgid 의 사용을 허용

dev- 파일시스템 상의 문자, 블럭 특수 장치를 해석.

exec -바이너리 실행파일이 실행되는 것을 허용.     //바이너리- 0과 1, 두 숫자로만 이루어진 이진법

auto - 부팅시 자동 마운트

nouser - 일반 계정 사용자가 마운트할 수 없음 (즉, root만 mount 가능)

async - 파일시스템에 대한 I/O가 비동기적으로 이뤄지게 함.


5. 덤프 생성 유무
- 덤프(백업) 생성 1
- 덤프 파일 생성하지 않음 0


6. 파일시스템 검사 유무  (#fsck- 파일 시스템 검사)  부팅할때 속도 느려짐
  0 - 무결성 검사 하지 않음
  1 - 우선순위 1위를 뜻하며, 대부분 / 파티션에 설정
  2 - 우선순위 2위를 뜻하며, 1순위 검사 후 검사


vi /etc/fstab  맨밑에 생성

왜 간단한 장치명으로 안하고 복잡하게 하는 이유는??

-각각의 디스크가 번호가 있다. 디스크를 생성하거나 제거 장치명이 바뀌어 부팅이 안되는 것을 방지 실무 에서는

장치명 안쓴다. 위험하다. UUID로 하면 장치명이 바뀌어도 정상적 동작 good~


완벽한 과정

디스크 추가->파티션 생성->파일 시스템 생성->마운트 추가->마운트->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이용(df -h, mount)


3개 파티션 생성 확인


파일 시스템 생성

mkfs -t ext4 /dev/sdb1

mkfs -t ext4 /dev/sdb2

mkfs -t ext4 /dev/sdb3 


마운트 포인트 생성 후 마운트 확인 df -h 용량 확인 

/

/dev/sdb1: UUID="19a76809-e4f8-47a5-8a41-ce2fb637ac58" TYPE="ext4"
/dev/sdb2: UUID="6544483d-4912-44c1-a403-513e591839f7" TYPE="ext4"
/dev/sdb3: UUID="cef0171b-2132-49d9-b906-8d8968da95cd" TYPE="ext4"


부팅후 fdisk -l , df -h 확인 

'Server > Linux' 카테고리의 다른 글

xshell/ 쿼터(quota)  (0) 2017.04.18
xshell/ 파일시스템 RAID  (0) 2017.04.16
xshell/ 프로세스 명령어  (0) 2017.04.13
xshell/ 사용자계정 명령어3  (0) 2017.04.10
xshell/ 허가권,소유권 명령어  (0) 2017.04.08

프로세스

-시스템 초기화 프로세스


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


프로세스

- 커널의 관리하에 현재 시스템에서 동작중인 프로그램

- init을 제외한 모든 프로세스는 부모-자식 관계를 가지고 있다.


프로세스 종류

- 데몬 프로세스

 커널에 의해서 실행되고, 특정 서비스를 제공하기 위해 동작하고 있는 프로세스


-부모 프로세스

-자식 프로세스

  부모 프로세스에 의해 만들어지는 프로세스

  자식 프로세스는 종료시 부모 프로세스 에게 결과를 전달하고 종료한다.


-고아(orphan) 프로세스

 자식 프로세스 보다 먼저 부모 프로세스가 종료 되었을때 해당 자식 프로세스는 고아 프로세스가

 되어 init프로세스가 관리를 한다


-좀비(zombie,defunct) 프로세스

 자식 프로세스의 종료신호를 부모 프로세스가 처리하지 못할 경우, 자식 프로세스는 좀비 프로세스가 된다.


 ps (process status)- 시스템에 동작중인 프로세스 확인


 -e 모든 프로세스에 대한 리스트 출력

 -f full format 으로 출력

 -a 다른 사용자들의 프로세스도 출력

 -u 사용자 이름, 시간 등 상세한 정보를 출력

 -x 현재 사용하고 있는 모든 프로세스를 출력


ex) #ps   #ps -ef    #ps aux

 #ps -ef

 UID - 프로세스를 실행 시키는 프로세스의 소유자를 의미

 PID - 실행된 프로세스에 부여된 숫자를 의미

 PPID - parents process id , 프로세스를 생성한 부모 프로세스의 PID


STIME-프로세스의 시작날짜나 시간 TTY-프로세스가 실행된 터미널의 종류 와 번호

CMD- 실행되고 있는 프로그램 이름

USER- 프로세스 소유자 이름

PPID- 부모프로세스 id

%CPU- 사용된 cpu 측정량

%MEM- 사용된 메모리 측정량

VSZ- 가상 메모리 크기

RSS- 사용된 실제 메모리

TTY- 프로세스와 관련된 가상 터미널

STAT- 프로세스의 상태

R: 실행중 (running)

S: 대기상태(sleep)

T: 작업 제어 정지된 상태(stop)

Z: 좀비 프로세스(defunct)

X: 완전히 죽어 있는 프로세스

D: 중지(interrupt) 시킬수 없는 잠자고 있는 (휴지) 프로세스 상태

<: 프로세스의 우선 순위가 높은 상태

N: 프로세스의 우선 순위가 낮은 상태

STIME - 프로세스 시작 시간
TIME - 총 CPU 사용 시간
COMMAND - 실행된 프로세스 명, 실행된 명령어


kill - 프로세스에게 신호를 전달하여 상태를 변화시키는 명령어

     - 지정한 시그널을 프로세스에 전달


#kill - [시그널] [PID]


시그널 종류 확인

#kill -l


자주 사용하는 시그널

2) SIGINT - 프로세스 종료

9) SIGKILL - 프로세스 강제 종료
15) SIGTERM - 프로세스 종료 
18) SIGCONT - 프로세스 재시작
19) SIGSTOP - 프로세스 정지


프로세스 동작 형태

1. 포어 그라운드 (Foreground Process)

- 프롬프트에서 입력하는 대부분의 명령어는 포어 그라운드로 동작

- 명령어의 실행 과정이나 결과를 화면에 출력

- 포어 그라운드로 실행되는 프로세스가 종료되길 기다렸다가 종료되면 다시

  프롬프트(bash)를 보여주어 명령 대기 상태로 반환


2. 백 그라운드(Background Process)
- 프로세스의 종료 여부에 관계 없이 즉시 명령 대기 상태가 되어 다른 명령을 실행.
- 백그라운드 실행 시키기 위해 '&'(ampersand)를 붙여 사용

jobs 필드



ex) #[명령어] &
작업번호와 PID를 출력하며 백그라운드로 동작

#jobs - 백그라운드에 동작하는 프로세스 확인
#fg - 백그라운드 작업을 포어 그라운드로 변경
#bg - 포어 그라운드 작업을 백 그라운드로 변경   ex)bg %2
#fg %[작업번호] ex)fg %1
#sleep [숫자값] - 숫자값 만큼 정지

ex) 실습
#ps -ef    //sleep PID 확인

#kill -19 1471     //sleep 프로세스 정지

#ps -ef    //stop 확인

#kill -18 1471    //sleep프로세스 재시작

#jobs        //running확인

#ps -ef 실행

Ctrl+Z    //SIGSTOP신호 보내기 (프로세스 정지)

Ctrl+C    //SIGINT 신호 보내기 (프로세스 종료)


--------------------------------------------------------------------------------------

실습

Xshell 세션 추가하여 2개의 창에서 프로세스 확인 하며 실습 진행


1. sleep 99999 & 명령어 2번 입력 후 kill을 이용하여 해당 프로세스 강제 종료

(1) 첫번째 sleep 프로세스 숫자 시그널로 종료

(2) 두번째 sleep 프로세스 문자 시그널로 종료

시그널 잘못 입력후 그런 프로세스가 없음.


2. sleep 99999 & 명령어 5번 입력 후 pkill sleep 명령어 입력

    결과 확인 및 명령어의 용도 생각해보기

[6]-의 의미는 [7]보다 먼저 작업한것이고

[7]+의 의미는 가장 최근에 작업한 것 확인.

3. 초기 bash shell 상태에서 아래 명령어 순서대로 실행

(1)/bin/bash (2)/bin/bash (3)/bin/bash (4)sleep 99999 & (5)cat/etc/services | more

5개의 명령어 입력후 다른 세션에서 pstree 명령어 실행, 명령어의 용도 생각해보기

pstree 부모자식 트리구조 확인


4. 초기 bash shell 상태에서 아래 명령어 순서대로 실행

(1)/bin/bash (2)vi /etc/services  다른세선->#kill -9 [bin/bash의 pid] ps 명령어 옵션으로

vi /etc/services 프로세스의 pid와 ppid를 확인하고 

(2)vi /etc/services 프로세스의 상태 및 결과에 대해 생각해보기

/bin/bash의 pid를 kill -9 SIGKILL 강제종료 했더니 /services 죽었음이 떴다.


5. sleep 99999 & 명령어 실행 후 ps 명령어와 옵션으로 현재 상태(STAT)을 출력하여 상태 값을

나타내는 문자 확인 후, kill 명령어나 fg 명령으로 잠시 중지(STOP)시킨 후 다시 ps명령어로

현재 상태를 나타내는 문자 확인


----------------------------------------------------------------------------------------


#pkill sleep??

#pkill [signal] [option] [패턴]

-kill 명령어는 특정 프로세스에 signal을 보내는 명령어이지만, 특정 프로세스를 찾기 위해서는 먼저

 grep 명령어와 ps 명령어를 이용하여 특정 프로세스를 찾은 후 다시 kill signal을 보내야 하는 불편함

 이 있다. 이러한 점을 개선 하기 위해서 pgrep 명령어와 pkill 명령어를 이용하여 특정 프로세스에

 signal을 보낼수 있다.

-프로세스의 이름을 지정하여 프로세스를 죽인다.

 


$pgrep sleep

$pkill sleep

 

#kill,#pkill 차이 공부(http://blog.naver.com/jsky10503/220728907425)

 

#pgrep [option] [패턴]

-l : PID와 함께 일치하는 프로세스의 이름을 출력

-f : -l 옵션과 함께 사용하면 명령어의 경로도 출력

-n : 패턴과 일치하는 프로세스의 가장 최근 PID 출력

-x : 패턴과 정확하게 일치 되는 프로세스만 출력


-특정 프로세스를 탐색하여 사용자에게 보여주는 명령어로, 시스템에서 사용되고 있는 여러 프로세스 중

 특정 프로세스의 정보를 보고자 할때 ps 명령어로 grep pattern으로 찾는 방법(ps -ef | grep ps_name)

 같은 효과를 갖는다.


#pstree??

-프로세스의 상관관계(부모-자식 관계)를 트리 형태로 출력해주는 명령어로써, 관계를 트리 형태로

  출력해주므로 계층 관계를 한 눈에 파악할 수 있다


작업 예약 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, weeks, now,.,.

 

ex) #at 6pm + 4 days     //지금부터 4일 후 오후 6시에 작업을 수행

#at 10am jul 18        //7월 18일 오전 10시에 작업 수행

#at 4am tomorrow    // 내일 오전3시에 작업을 수행

#at 10:00am today    // 오늘 오전 10시에 작업을 수행

 

ex)

#at today + 1min    //at 실행

ctrl+D     //저장

E0T - End 0f Transmission //전송 끝

 

#at - l

[작업번호][날짜][시간][큐이름][사용자]

 

at 예약 작업은 /var/spool/at 디렉토리에 큐 파일이 임시 저장된 후, 저장이 완료 되면 자동으로 삭제가 되며

/var/spool/mail 디렉토리에 사용자명으로 결과가 저장된다.

디렉토리 및 파일 생성 확인

 

cron - 정해진 시간에 반복 실행

ex) 매일 오전 8시에 특정 파일 압축하여 전송

매달 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 //기본 양식

 

#crontab -e

ex) 30 22 1 * * cp -R /home/test /backup/home

매요일 매월 1월 22시 30분에 /home/test를 /backup/home으로 복사하라

 

ex) */2 10 * * * [명령어]

매요일 매월 매일 10시 2분마다 [명령어] 실행

 

ex) 1-10 12 * * * [명령어]

매요일 매월 매일 12시 1분부터 10분까지 [명령어] 실행

 

ex) 1,10 12 * * * [명령어]

매요일 매월 매일 12시 1분, 10분 [명령어] 실행

 

#crontab -e

문제 1) 매요일 매월 매일 매시 1,2,3분에 /practice 디렉토리에 test1 파일 생성

확인 - #crontab -l

#date -s 20170413 

date 20170413으로 설정후 1분뒤 test1파일 생성 확인

다른 계정에 있을시 crontab -u root -e 접속 수정

현재계정 -r crontab삭제

삭제 확인

 


#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-13"

1분 2분 3분 파일 생성 확인

 

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 만 사용이 가능

 

 

사용자 테스트

테스트 계정 스위칭 후 crontab -e 명령어 실행가능 확인

vi로 cron.deny들어가 cron_user1 입력 저장

다시 계정 스위칭후 crontab 명령어 실행 불가능 확인

deny 파일 이름 변경

allow 파일도 없고, deny 파일도 없는 경우 테스트

crontab명령어 불가능

 

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

crontab명령어 사용가능

 

 

'Server > Linux' 카테고리의 다른 글

xshell/ 파일시스템 RAID  (0) 2017.04.16
xshell/ 파일시스템 데몬 파티션  (0) 2017.04.15
xshell/ 사용자계정 명령어3  (0) 2017.04.10
xshell/ 허가권,소유권 명령어  (0) 2017.04.08
xshell/ 사용자계정 명령어2  (0) 2017.04.07

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

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


Sticky Bit
- 특정 디렉토리를 누구나 자유롭게 사용하기 위함.

   모든 사용자가 생성/수정/삭제가 가능한 디렉토리에 적용하며, StickyBit 설정 후
   에는 해당 파일의 소유자와 root만 해당 파일을 삭제할 수 가 있다.
 
StickyBit 설정
-기호모드 (o+t)
-숫자모드 (1000) 


#cd /practice
#mkdir sticky_test
#cd sticky_test
#mkdir temp1 temp2
  
#chmod 1777 temp1   // 스티키 설정
#chmod 777 temp2   // 일반 777 권한 설정

 

스티키 설정 확인 777권한 설정 확인


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


#chmod 777 temp1/test1    // 777 허가권으로 수정
#chmod 777 temp2/test1    // 777 허가권으로 수정
  

파일 두개 허가권 777권한 확인


#useradd test-admin1  // 사용자 계정 추가
#su - test-admin1   // 계정으로 스위칭 
  
$cd /practice/sticky_test
$cd temp2
 
  $ll
  rwx rwx rwx -> test1
  $rm test1     // 파일 삭제 가능 

test1파일 삭제 확인


  $cd ..
  $cd temp1
  $ll rwx rwx rwx -> test1
  rwx rwx rwx ->test1  // 파일 삭제 가능
  $rm test1 

rm 명령어로 파일삭제 불가능

  
허가권이 있음에도 삭제(rm, mv)를 할수가 없다.

-------------------------------------------------------------------------------------------------------------

실습


- 회사 사원들이 사용하는 디렉토리를 생성 후 사원들 만 사용 할 수 있는 권한을 주어 다른 사용자는
  접근할 수 없도록 설정 하시오.
 
0. 사원 계정 S-USER1, 사원그룹 S-GROUP, 사원 전용 디렉토리 S-LV01 ~ S-LV10


1. /practice/day10/test 디렉토리 생성


2. /practice/day10/test 디렉토리로 이동 후 S-LV01 부터 S-LV10 까지 총 10개의 하위 디렉토리 생성


3. 사용자 계정 및 그룹 생성
- 계정 명 : S-USER1, I-USER1
- 그룹 명 : S-GROUP

계정 그룹 생성

4. S-USER1 계정의 기본 그룹을 S-GROUP 으로 변경
 # usermod -g S-GROUP S-USER1


5. S-LV01 ~ S-LV10 모든 디렉토리 설정
- 소유자와 기타 사용자는 디렉토리 내부 읽기 권한, 파일생성, 수정 권한 및 접근 권한 제거
- 오직 해당 디렉토리의 그룹 사용자만 모든 권한을 가지도록 설정

허가권 070 설정 확인


- S-LV01 ~ S-LV10 디렉토리의 소유자는 Root, 그룹 소유자는 사원 그룹으로 설정

소유권의 소유계정과 소유그룹 확인

----------------------------------------------------------------------------------------------------------

속성 (attribution)
  chattr - 특정파일에 속성을 변경하고자 할때 사용
  lsattr - 특정파일에 속성을 확인하고자 할때 사용
  
속성의 종류
   i  (immutable)   -  해당 파일의 내용 변경, 삭제, 링크 생성 등을 할수가 없다.
  a  (append only) - 해당 파일의 내용만 추가가 가능하고, 삭제, 링크 생성 등은
                            할 수 가 없다.
  
+  지정한 속성을 추가
-  지정한 속성을 제거

=  기존 속성을 초기화 후 지정한 속성만 부여
  

속성 확인

속성 변경

+i 로 설정한 옵션은 삭제 불가능 쓰기 불가능 testfile2 +a 옵션으로 쓰기 가능 삭제 불가능


e 옵션은 ext4 포멧을 ext3 포멧으로 변형시켜 주는 것
  

ACL (Access Control List / 접근 제어 목록)
 - 디렉토리 및 파일에 특정 사용자, 그룹에 특정 권한을 부여하는
  기능이다.


getfacl [옵션] - 파일과 디렉토리에 ACL 설정 확인
  -d   기본 정보에 대해 확인
  -R   하위 디렉토리 및 파일까지 적용
  


# getfacl S-LV1           // S-LV1 디렉토리에 ACL설정을 확인

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


setfacl [옵션] [규칙] [파일명]  
 - 파일과 디렉토리에 ACL 설정
 
  -m 권한을 수정할 때 사용
  -x 권한을 삭제할 때 사용
  -R 하위 디렉토리 및 파일까지 적용
  -b 권한 및 mask를 전부 제거
 
  규칙
  u:[UID]:[권한] - 사용자에 대한 ACL을 설정
  g:[GID]:[권한] - 그룹에 대한 ACL을 설정
  o:[권한]   - 기타사용자에대한 ACL을 설정
-------------------------------------------------------------------------------------------------

실습

 

회사 사원만 사용할 수 있는 S-LV01~S-LV10디렉토리가 있다.

사원 디렉토리는 사원그룹(S-GROUP)에 속한 사용자만 사용할 수 있다.

인턴이(I-USER1)오게되어 S-LV01 디렉토리만 사용 할수 있도록 변경해야 한다.

S-GROUP 속하면 S-LV01외에 다른 S-LV디렉토리에도 접근이 가능해진다.

허가 거부 발생

 

cd 로 들어가는 방법소개

setfacl -m user:I-USER1:rwx S-LV01      //S-LV01 디렉토리에 I-USER1에게 rwx권한 부여

getfacl S-LV01     //S-LV01 디렉토리에 ACL설정 확인

 

cd S-LV01 접근 가능

---------------------------------------------------------------------------------------------

실습 ++

 

추가 인턴사원이 입사하여 인턴 그룹이 필요(I-GROUP)

입사한 인턴사원(I-USER2)와 기존 인턴사원을 같은 그룹에 포함시켜

S-LV02 디렉토리는 I-GROUP에 속한 계정들은 접근이 가능하도록 설정(rwx)

I-USER1,2계정으로 S-LV02 디렉토리 접근 확인(재 로그인 후)

usermod -g I-GROUP I-USER1 // 인턴 사원을 같은 그룹에 포함

usermod -g I-GROUP I-USER2 // 인턴 사원을 같은 그룹에 포함

두 인턴사원계정 S-LV02 디렉토리 접근 확인

-----------------------------------------------------------------------------------------------

'Server > Linux' 카테고리의 다른 글

xshell/ 파일시스템 데몬 파티션  (0) 2017.04.15
xshell/ 프로세스 명령어  (0) 2017.04.13
xshell/ 허가권,소유권 명령어  (0) 2017.04.08
xshell/ 사용자계정 명령어2  (0) 2017.04.07
xshell/ 사용자계정 명령어  (0) 2017.04.05

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


★소유권 허가권

실습용


groupadd -g 600 test_user
# groupadd -g 600 test_admin
# useradd -g 600 test-user1
# useradd -g 700 test-admin1

GID에 맞게 생성 확인


    허가권                     소유자 소유그룹

ls -l = ll   명령어   파일리스트를 볼수 있고 허가권과 소유권 확인


chown (change ownership/소유권 변경)


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


#cd /home/test-user1
#touch test
#ll

useradd 로만든 test-user1에 test 파일인 리스트 확인


chown test-admin1 test  // test소유자를 변경
ll

소유계정 변경 확인


chown test-admin1:test_admin testfile

소유계정과 소유그룹 변경 확인


소유계정과 소유그룹 변경 확인


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


허가권
- 9개 문자
    -                  r  w   x      r  w  x    r  w  x
  파일유형      사용자        그룹       기타사용자


rwx의 의미
r read 읽기
w write 쓰기
x execute  실행
- bar  해당 권한이 없는 경우


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


   rw-------: 사용자만 읽고 쓰기가 가능

ll /etc/passwd /etc/shadow
-rw-r--r--. 1 root root 1754 2017-04-10 00:21 /etc/passwd
-r--------. 1 root root 1402 2017-04-10 00:21 /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

기호모드로 허가권 변경 (그룹,기타사용자)


1)파일의 소유자, 그룹과 기타사용자에 실행권한 추가

# chmod u+x,g+x,o+x  test


2)파일의 소유자는 모든 권한을 제거하고, 그룹은 모든권한, 기타사용자는 쓰기
 권한만 추가


3) 사용자,그룹,기타 사용자 모두 읽기와 쓰기 권한만 추가


숫자 모드
 -각각의 허가권 필드를 3자리의 8진수로 표기
 -완전한 표기법은 4자리이나 일반적으로 3자리 사용


ex) rwx r-x r-x
사용자    400+200+100   =700
그룹            40+10        =50
기타 사용자   4+1           =5


사용자 필드    사용자       그룹     기타사용자


자리수              421             421            421
2진수               111             111            111
8진수                7                7               7


                          rwx              r-x              r-x    
                          111              101             101
                          7                  5                5


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


test
chmod 744 test   (rwx r-- r--)
ex) rwx rwx r-x      (7 7 5)


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


#umask
0022
umask [값]
umask 007
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가 클수록 보안이 올라간다


cd /home
# useradd -g test_admin test-admin2


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


# su - web-admin2
$ cd /home/test-admin1
$ touch test1
$ ls

test-admin2 소유자 test_admin 소유그룹


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


#ll /etc/passwd /etc/shadow
             644         400


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


SetUID 설정방법
 기호모드 (u+s)
 숫자모드(4000)


# cd /practice/
# mkdir SetUID
# cd SetUID/
# touch SetUID_1
# touch SetUID_2


# chmod 4644 SetUID_1
# chmod 4544 SetUID_2

실행권한이 있고 없음의 차이


실행 권한이 있는 파일 :s
                 없는 파일 :S


 cat > SetUID_3
SetUID list file
[root@Server-A SetUID]# chmod 400 SetUID_3
[root@Server-A SetUID]# ll



su - web-admin1
$ cat /practice/test123/SetUID/SetUID_3
cat: /practice/test123/SetUID/SetUID_3: 허가 거부
#ll /bin/cat
# chmod u+s /bin/cat


chmod u+s /bin/cat  으로 허가거부 없이 파일열람 가능


원상복구
cat 파일의 SetUID 제거
chmod u-s /bin/cat


SetUID 보안해킹


su - test-admin1
whoami
who am i

계정 확인 , 계정 생성 시간 확인


R(Real)- 계정관리 기본적인 계정권한

UID - RUID(real uid)  //RUID-실제 계정은 누구인가
        EUID(effective uid)    //EUID- 어떤 유저권한으로 프로세서를 실행하고 있는가


E(Effective)- 프로세스 권한 확인

GID -  RGID //RGID- 실제 그룹이 누구인가
         EGID //EGID- 어떤 그룹 권한으로 프로세서를 실행하고 있는가

'Server > Linux' 카테고리의 다른 글

xshell/ 프로세스 명령어  (0) 2017.04.13
xshell/ 사용자계정 명령어3  (0) 2017.04.10
xshell/ 사용자계정 명령어2  (0) 2017.04.07
xshell/ 사용자계정 명령어  (0) 2017.04.05
xshell/ 환경변수 명령어  (0) 2017.04.02

gpasswd - /etc/group, /etc/gshadow 파일을 관리한다

#gpasswd [옵션] [그룹명]

-a [계정]  사용자 계정을 그룹에 추가한다.
-d [계정] 사용자 계정을 그룹에서 삭제한다.
-r  그룹 암호를 삭제한다.

 

ex)

1. 사용자 계정 추가
#useradd mem1
#useradd mem2


2. 그룹 추가
#groupadd -g 2000 group2000

# cat /etc/passwd | tail -2       //계정 생성 확인


# cat /etc/group | tail -2         //그룹 생성 확인


3.사용자 계정을 그룹에 추가
#gpasswd -a mem1 group2000              //memr1 계정을 group2000 그룹에 추가 -a 옵션 사용자계정 추가
#usermod -G 2000 mem2                     //mem2 계정을 group2000 그룹에 추가 -G 그룹
#usermod -G group2000 mem2 위랑같음

# cat /etc/passwd | tail -2                        //GID 필드 확인
# cat /etc/group | tail -2                         //멤버 필드 확인

group2000 그룹에 mem1계정추가

그룹 사용자 계정 확인, 2000GID에 mem2계정 추가

group2000 그룹에 mem1, mem2 계정추가 확인


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


4. 그룹 멤버 삭제
#gpasswd -d mem2 groupadd2000
# cat /etc/group | tail -2
#groups mem2

-d 옵션 삭제 mem2 계정 사라진거 확인



5. 그룹 암호 설정
#gpasswd group2000
암호:
새 암호를 다시 입력하십시오:

그룹 암호 설정


6. 그룹 패스워드 용도 확인
ex) gpassswd -a mem2 wheel
id mem2  

 

wheel?-/etc/wheel

UID GID groups wheel 식별자 확인

 

newgrp - 소속 그룹을 다른 그룹으로 바꾼다
 

su - mem2            //mem2 계정 스위칭
$groups                   //소속 그룹 확인
mem2 wheel          //주 그룹 mem2 보조그룹 wheel

주그룹과 보조그룹확인

 

newgrp wheel      //mem2 <--> wheel
$groups            //주그룹 mem2를 wheel 로 변경
wheel mem2

주그룹과 보조그룹 바뀐거 확인


newgrp group2000           //자신이 속한 그룹이 아닌 다른 그룹
groups                           //주그룹을 변경
group2000 wheel mem2     //group2000 그룹에 암호가 설정되어 있어 변경시 해당 그룹에 암호가 필요

암호설정한 값 입력 주그룹 group2000


sudo 권한 설정
사용자 추가나, 시스템 종료 등 특정 명령어만 실행할 수 있는 권한을 부여하는것


sudo 권한 설정 파일
/etc/sudoers


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


91줄
[계정명] [호스트]=(옵션)  [명령어]

-------------------------------------------------------------------------

실습


(1) 일반 사용자 계정으로 로그인 (mem1) 후, 일반 사용자가

    사용할 수 없는 명령어3개 찾기


(2) 명령어 실행이 불가능 한 것 확인 후, 해당 명령어가 위치한 절대
    경로 확인 ( shutdown, reboot, halt 등 제외 )

                   

절대 경로 확인 방법 - #which [ 명령어]

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



#visudo
 맨 아래


mem1 ALL=/usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel

mem1 ALL=NOPASSWD: /


인증 토큰오류 날땐 root 로 가서 passwd [ ]


su - mem1
$passwd
$sudo useradd sudotest-1
[sudo] password for member1 : 암호 입력
$cat /etc/passwd | tail -1 //계정생성 확인

보통 root에서 계정생성 mem1에서 sudo로 사용자계정 생성


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

-c 코멘트 설명 으로 sudo-test 추가 확인


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

-r 옵션으로 사용자디렉터리까지 삭제 기능 삭제 확인

-----------------------------------------------------------------------------

패스워드 정책 설정


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

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


시스템 날짜 변경
2017-04-08


계정명 : mem1
계정 유효 기간 : 2018-04-08

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


# chage -l mem1
마지막으로 암호를 바꾼 날                              : 4월 14, 2017
암호 만료                                                     :안함
암호가 비활성화 기간                                     :안함
계정 만료                                                     :안함
암호를 바꿀 수 있는 최소 날 수                        : 0
암호를 바꿔야 하는 최대 날 수                          : 99999
암호 만료 예고를 하는 날 수                              :


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


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


 1번 세션(root)                            2번 세션(mem1)
                                                 # su - mem1
                                                 $ passwd
                                                 (현재) UNIX 암호: 암호 변경을 위해 조금더 기다려 주십시오.
                                                  passwd: 인증 토근 수정 오류

                                                  passwd
 date -s "2017-04-10"                  su - mem1
 date -s "2017-04-11"                  su - mem1

 date -s "2017-04-12"                  su - mem1
       

root 계정에서 스위칭x 

날짜를 현재날짜 보다 나중이면 암호를 쳐야된다.

'Server > Linux' 카테고리의 다른 글

xshell/ 사용자계정 명령어3  (0) 2017.04.10
xshell/ 허가권,소유권 명령어  (0) 2017.04.08
xshell/ 사용자계정 명령어  (0) 2017.04.05
xshell/ 환경변수 명령어  (0) 2017.04.02
Linux- vi  (0) 2017.04.01



사용자 계정명은8글자 이하(소문자영어) // 실무


/etc/passwd
root 계정의 정보가 입력

사용자 계정명

- 로그인 ID 사용자 이름이라고 불리며 최대 32자를 넘을수 없다.

 

 x(password)

- 이전 프로그램과 호환성을 위해 그대로 유지하고 있으나 x로 표시

 

 UID(User IDentifier)  identifier?- 식별자

- 사용자 개인을 숫자로 구별하는 고유ID 배포판에 따라 보통500번 부터 시작한다   최대 60000까지 범위 가능

 

 GID(Group IDentifier)

- 그룹을 식별하는 고유한 값. 시스템에 등록된 그룹에 대한 정보는 /etc/group 파일에 저장

- 500번 시작  60000최대

 

 설명

- 사용자 계정에 대한 주석을 작성하는 항목

 

 홈 디렉토리

- 사용자의 홈 디렉토리의 절대경로 일반 사용자일 경우 /home 디렉토리 하위에 계정명과 동일한 디렉토리 생성

   로그인할때 가장 처음에 위치하는 디렉토리

 

 로그인 쉘

- 사용자가 로그인 시 사용할 쉘 파일의 위치  기본 설정은/bin/bash 이다

 

 

/etc/shadow
사용자 패스워드 정책과 패스워드가 암호화되어 저장되어있는 파일

 

 

 사용자 계정명

- /etc/passwd 동일하게 사용자 계정명을 나타낸다.

 

 암호

- 실제 비밀번호가 암호화되어 저장 . 사용한 알고리즘 확인가능

 

 최종 변경일

- 암호가 마지막으로 변경된 날짜

 

 MIN(패스워드 변경 기간 중 최소값)

- 암호를 변경한 후 사용해야 하는 최소 기간. 보안적인 측면에서는 0으로 설정이 좋다.

 

 MAX(패스워드 변경 기간 중 최대값)

- 암호를 사용할 수 있는 최대기간.

 

 WARNING (패스워드  만료 경고 일수)

- 값이 10이면 암호 만료 10일 전부터 로그인시 암호만료가 임박했음을 뜻하는 경고

 

 INACTIVE(패스워드 만료 후 계정 비활성화 기간)

- 암호가 만료된 후에도 이 항목에 지정한 일수 동안은 로그인이 가능 사용자는 이기간 동안 암호를 변경 해야 한다.

 

 EXPIRE(사용자 계정 만료 기간)

- 사용자 계정이 만료되는 날로 이기간이 지나면 로그인 할수 없다.

 

 Flag(예약)

- 사용할 목적으로 비워둔 항목

 

사용자 계정의 설정과 관련된 기본 값 확인

 

/etc/group
- 그룹에 대한 정보가 저장되어 잇는 파일

- /etc/passwd 파일의 GID 항목에 지정된 그룹이 기본 그룹 보조그룹은 /etc/group 파일에 지정

그룹 이름

- 그룹 명이 위치한 곳

 

 x

- 그룹의 패스워드를 저장하는 곳 실제 패스워드는 /etc/gshadow 파일에 암호화 저장

 

 GID

- 그룹을 식별 번호 500~60000

 

 그룹 멤버

- 그룹에 속한 사용자 계정 이름 사용자의 보조그룹을 나타낸다.

 

 /etc/gshadow

- 그룹 암호가 저장되는 파일

 

 

그룹 이름

- 그룹의 이름

 

 그룹 암호

- 암호화된 그룹의 패스워드

 

  관리자

- 그룹의 암호나 멤버를 바꿀 수 있는 사용자 계정

 

 그룹 멤버

- 그룹에 속한 멤버들의 사용자 계정 이름

 

useradd                                                    groupadd

- 사용자 계정을 생성                     그룹을 생성

 

usermod                                                   groupmod

- 사용자 계정 정보를 수정한다        그룹 정보를 수정

 

userdel                                                      groupdel

- 사용자 계정을 삭제한다                그룹을 삭제

 

gpasswd

- /etc/group 과 /etc/gshadow 파일을 관리

 

newgrp

- 소속 그룹을 다른 그룹으로 바꾼다.

 

최소 500 부터 최대 60000인것을 확인

홈 계정이 /home

 

useradd

-c : 코멘트

-d : 홈디렉토리 지정.

-e : 계정 만료일 지정.

-f : 패스워드 만료일 지정.

-g : 그룹에 포함 시키며 생성할 경우에 사용. (GID/그룹명)

-G : 보조그룹 포함 시 사용.

-s : 로그인 시 사용할 쉘.

-u : UID를 지정하여 생성 시 사용.

-m -k : skel 디렉토리 지정.

 

usermod

-u uid : UID를 수정

-o : UID의 중복을 허용

-g gid: 기본 그룹을 수정

-G gid: 2차 그룹을 수정

-d 디렉터리명: 홈 디렉터리를 수정

-s 셸: 기본 셸을 수정

-c 설명 : 부가적인 수정

-f : 계정 비활성화 날짜를 수정

-e: 계정 만료 날짜를 수정

 

 

 

ex)

#useradd dongh1 // dongh1 계정생성.

#cat /etc/passwd | tail -1       // passwd 파일 하단에 추가된 계정정보 확인.

 

#useradd dongh2 // dongh2 계정생성.

#cat /etc/passwd | tail -2 // 마지막 2줄 확인.

 

#useradd -u 520 dongh3 // 계정생성 UID 550.

#cat /etc/passwd | tail -3 // 마지막 3줄 확인.

UID 520 확인

 

dong5 계정이 홈 디렉토리인 sub_home/dongh5 에 생성

 

계정 생성은 되어 passwd 파일에 등록되지만 홈디렉토리의 상위 디렉토리가

미리 존재하지 않으면 홈 디렉토리가 생성 되지 않는다

 

/etc/skel

- 기본적으로 사용자 환경을 구성해주는 초기화 파일

su (Substitute User) 사용자 전환


su [계정명] - 해당 계정으로 전환하나 환경변수는 바꾸지 않음
su - [계정명] - 해당 계정으로 전환하며 환경변도 함께 변경

--------------------------------------------------------------------------

실습

 

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


계정명:practice_3
UID:590 (-u)
GID:500 (-g)
정보:Practice Account (-c)
쉘:/bin/bash (-s)

 

생성확인(/etc/passwd)

계정을 root 에서 useradd 명령어를 실행해야 /user/sbin/useradd 허가거부가 안뜬다.

생성 확인.

 

 

계정변경
계정명:practice_3
UID:503 (-u)
GID:501 (-g)
정보:Practice (-c)
쉘:/bin/sh (-s)

생성확인(/etc/passwd)

계정이 변경 된것을 알수 있다

----------------------------------------------------------------------------
 userdel-계정삭제
#userdel [계정명]


1.userdel 명령어 테스트

 

2.userdel -r 옵션을 이용하여 dongh3 계정 삭제
(1)/etc/passwd 삭제확인
(2)홈디렉토리 존재 여부확인
(3)/var/spool/mail 사용자 계정과 동일한 이름의 메일파일도 함께삭제

practice_1 계정이 삭제된 것을 알수 있다.

 

사용자 계정 생성 과정
(1) #useradd 명령어 실행
(2) /etc/default/useradd 와 /etc/login.defs 파일 설정 참조
(3) /etc/passwd 와 /etc/group, /etc/shadows, /etc/gshadow 파일에 정보 추가
(4) 홈 디렉토리에 사용자 계정명과 동일한 디렉토리 생성
(5) /etc/skel에 있는 파일들을 사용자 홈디렉토리로 복사
(6) /var/spool/mail 에 메일박스 파일 생성

 

passwd - 패스워드 정책 및 설정
#passwd [계정명]
- 현재로그인한 계정의 패스워드 변경
-l 사용자의 패스워드 lock을 걸어 로그인을 불가능하게 한다
-u 사용자의 패스워드 잠금해제

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

practice-1 암호가 있어서 암호를 쳐야 계정에 들어갈수 있다

practice-1 암호를 삭제하니 암호 없이 접속 가능

 


사용자 및 그룹 파일 무결성 검사
#pwck           //  /etc/passwd, shadow 파일을 검사

- /etc/passwd 파일의 내용을 분석하여 잘못된 내용이 있는지 검사 패스워드 보안 문제점 발견


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

 

그룹 추가 명령어
groupadd
 #groupadd [그룹명]
 #group test-group
 #cat /etc/group


그룹 수정 명령어
groupmod
groupmod -g xxx test-group

#cat /etc/group

그룹 생성 및 그룹 수정 확인


그룹 삭제
groupdel
groupdel test-group
#cat /etc/group

dongh 계정 삭제 확인

 

'Server > Linux' 카테고리의 다른 글

xshell/ 허가권,소유권 명령어  (0) 2017.04.08
xshell/ 사용자계정 명령어2  (0) 2017.04.07
xshell/ 환경변수 명령어  (0) 2017.04.02
Linux- vi  (0) 2017.04.01
xshell/ 리다이렉션  (0) 2017.04.01

+ Recent posts