권한에 대한 소유권과 허가권에 대한 상세 정보를 보고 싶으시면

아래의 글을 참고하여 주시기 바랍니다^^

 

2011/04/19 - [Linux/Tip & Tech] - Linux 에서 사용하는 소유권/허가권 을 알아보자.

 

그럼 이제 각각의 권한 설정 명령어의 내용을 살펴 보도록 하겠습니다.

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

- chmod (Change Modification, 허가권(Permission)) -
1. 정의 : 파일 또는 디렉터리의 허가권을 설정

 

2. 형식
  - Numeric  : #chmod [Perm] [파일 / 디렉터리 Name]

  - Symbolic : #chmod [Symbol] [파일 / 디렉터리 Name]

 

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

- chown (Change Ownership, 소유권(UID/GID)) -
1. 정의 : 파일 또는 디렉터리의 소유권을 설정 (uid, gid)

 

2. 형식
  - #chown [uid.gid] [파일 / 디렉터리 Name]
  - #chown [uid:gid] [파일 / 디렉터리 Name]

 

     [ 추가사항 ]
        - #chown root. [File/Dir]
             : 소유권 변경시 '.' 또는':' 뒤에 아무것도 없으면 입력했던 Uid 값을 기준으로 "/etc/passwd" 안에 존재하는

               gid를 검색하여 "/etc/group" 존재하는 gid의 그룹명으로 자동 입력되게 된다.

        - #chown .root [File/Dir]

             : 소유권 변경시 '.' 또는':' 앞에 아무것도 없으면 그룹 권한만 적용됨 (chgrp 와 동일한 기능)

 

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

☆권한 설정시 꼭 알아두기!!!☆

※ 모든 권한의 적용은 현재 로그인을 하는 사용자를 기준으로 적용 및 확인한다.


※ 권한 중 허가권보다 소유권이 우선한다.
   - 로그인한 사용자가 소유권의 UID/GID 에 모두 해당되는 경우는 Uid 의 권한을 적용받음
   - 로그인한 사용자가 소유권의 UID/GID 에 모두 해당되지 않을 때 other의 권한을 적용받음

      ( 권한적용 = Uid > Gid > Other)


※ ftp 및 Terminal (원격접속 서비스) 의 경우

Info

W

X

Dir 

목록출력

(ls, dir 등) 

업로드, 쓰기, 삭제

(FTP[put], mkdir, touch, rmdir, rm 등)

접근, Login, 필수권한

File

내용출력

(cat, more 등) 

업로드, 쓰기, 삭제

(FTP[put], mkdir, touch, rmdir, rm 등)

실행(#/$ 상태로 입력여부)

 - 허가권 설정시 Dir 의 경우는 ["x" -> "r" -> "w"] 순서로, File 의 경우 ["r" -> "w" -> "x"] 해석을 하면 관리가 용이하다. 


※ Web의 출력에 대한 사항

    -> 정상적으로 출력하기 위해 필요한 권한 (2가지 모두 충족해야함)
        * 해당 디렉터리의 경로에 other 부분의 'X' 권한 적용 여부
        * 해당 디렉터리의 경로안에 있는 파일의 other 부분의 'R' 권한 적용

 

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

- umask -
1. 정의 : 파일 또는 디렉터리 생성시 기본값을 설정/확인할 수 있는 명령어

 

2. 형식
  - #umask [Perm] 

  - 공식 : [ "맥스값"-"UMASK"="기본값" ]

 

    - Max Permission -
     Dir : 777 ('x'는 접근권한으로 생성시 접근이 가능해야 함)
    File : 666 ('x'는 실행에 대한 권한을 가지므로 최초 생성시
                  실행파일로 생성되지 못하게 설정됨)

 

 - 계산법 -

      DIR  : rwxrwxrwx  (777)

     FILE : rw-rw-rw-  (666)
UMASK  : ---rwx-w-  (072)
       dir  = rwx---r-x  (705)
        file = rw----r--  (604)

 


 [ 추가사항 ]
  * "/etc/profile" 에 의해 umask 기본값은 아래와 같이 적용되어 있다.
     - 사용자(users) : umask 002
     - 관리자(root) : umask 022

 

  ex) noose 로그인

     noose]$umask

     umask 0002
     noose]$ touch ./file
         rw-rw-r--   file   : 기본값으로 생성된 허가권 (664)
     noose]$ mkdir ./dir
         rwxrwxr-x  dir    : 기본값으로 생성된 허가권 (775)

 

       root 로그인

     root]# umask

     umask 0022
     root]# touch ./file
         rw-r--r--   file   : 기본값으로 생성된 허가권 (644)
     root]# mkdir ./dir
         rwxr-xr-x  dir    : 기본값으로 생성된 허가권 (755)

 

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

- 특수권한(stickybit, SetUID, SetGID) -

  ※ 특수권한의 표현식
1. SetUID (4000)
   - 'x' 의 권한 O : rws rwx rwx
   - 'x' 의 권한 X : rwS rw- rw-

2. SetGID (2000)
   - 'x' 의 권한 O : rwx rws rwx
   - 'x' 의 권한 X : rw- rwS rw-

3. StickyBit (1000)
   - 'x' 의 권한 O : rwx rwx rwt
   - 'x' 의 권한 X : rw- rw- rwT

 

  => 'x'의 권한이 있으면 소문자로 / 'x'의 권한이 없으면 대문자로 출력

 

 

  ※ 특수권한의 형식
    - #chmod [SPerm] [ File / Dir ]

 

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

  ◎ stickybit
1. 정의 : 디렉터리에 쓰기권한이 있어 해당디렉터리내 파일에 권한이 없어도 삭제할 수 있는 사항을
            방지하기 위해 사용(stickybit 설정은 디렉터리에만 가능)

 

2. 형식
    - #chmod 1XXX [ Dir ]

 

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

  ◎ SetUID/SetGID
1. 정의 : 실행파일을 실행하려는 다른 사용자가 해당 실행파일의 소유자/소유그룹의 권한을
            빌려서 실행하고자 할 때 사용한다.

 

2. 형식
   - #chmod 4XXX [ 해당 File ] : SetUid 적용
   - #chmod 2XXX [ 해당 File ] : SetGid 적용


AND

- cat -
1. 정의 : 파일의 내용을 화면으로 출력(텍스트 문서만) 


2. 형식
  - #cat [옵션] [대상파일(텍스트문서)]


3. 옵션
  - n : 왼쪽에 행 번호와 함께 내용을 화면에 출력


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

- head/tail -

1. 정의 : 문서 파일의 내용을 머리/꼬리 부터 출력(기본값:10줄)
       
2. 형식
  - #head [옵션] [대상]
  - #tail [옵션] [대상]


3. 옵션
  - n : n 라인 만큼 내용을 출력
       (Syntax : #CMD [-n] [대상] // #CMD -n [n] [대상])


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

- more -
1. 정의 : 문서 파일의 내용을 화면단위로 출력

    - 기능키 -
     * Enter - 행단위로 내용을 아래로 출력
     * Space bar - 화면단위로 내용을 아래로 출력
     * vi 에디터 모드로 동작(실행모드키 일부 이용가능)
     * q - 종료


2. 형식
  - #more [대상(텍스트 문서파일)]


3. more 의 특징
  - 전체 내용에 대한 색인이 기능이 있어 화면 아래쪽에 "--MORE--(??%)"를 출력


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

- less -
1. 정의 : 문서 파일의 내용을 화면단위로 출력

            (more 와 유사하지만 성능이 보다 개선되어 있다.)


2. 형식
  - #less [대상(텍스트 문서파일)]


3. less 의 기능

  - ... 추가예정




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

  [ Service ]

  ◎ Pipe(|)을 이용하여 명령어 혼용하기
     * '| (Shift + \)' 는 기호를 기준으로 좌측 결과를 우측 입력으로 보내주는 커맨트 기호 

       ex)  #ls -l /etc | more : /etc 디렉터리 내용을 출력하는 ls 명령어와 more 명령어 혼용



  ◎ Redirection을 이용하여 파일 병합 및 입출력 방향 제시

     * > [ 쓰기 ] : 왼쪽 결과를 오른쪽으로 출력

     * < [ 읽기 ] : 오른쪽 결과를 왼쪽으로 입력

     * >>[ 추가 ] : 왼쪽 결과를 오른쪽으로 아래쪽으로 추가하기


    - 파일을 병합하는 경우 -

    ㄱ. 1:1 병합
        * ">"      : 생성 & 덮어쓰기
        * ">>"     : 추가(이어붙이기)

    ㄴ. 多:1 병합
        * ">" 로 병합이 가능하며 Argument의 순서대로 내용이 병합



  ◎ 다른 사용자에게 내가 원하는 내용을 보내보자! (Redirection 활용)
    - #echo "원하는 문자열" > [해당 장치]

    - #cat /etc/shadow > [해당 장치]            등.

AND

- VI Editor -

1. 정의 : Linux의 대표적인 문서 편집기 ("vim"도 있음)

 

2. 형식

  - #vi [대상 파일]


3. VI-Editor 동작 Mode

[ 그림참조 ]


 

4. Vi Editor 내 자주 사용되는 키(소문자 사용).


[ 명령모드 ]

 (커서이동 - 칸단위)


 

 (커서이동 - 단어단위)

  - w : 커서 위치의 다음 단어의 머리

  - b : 커서 위치의 이전 단어의 머리

  - e : 커서 위치의 다음 단어의 꼬리

 

 (커서이동 - 행단위)

  - 0(^) : 커서 위치 행의 처음으로 이동

  - $ : 커서 위치 행의 마지막으로 이동

 

 (커서이동 - 문서단위)

  - gg([[) : 문서의 가장 처음으로 이동

  - G(]]) : 문서의 가장 아래쪽 처음칸으로 이동

 

 (기능키)

  - x : 커서칸의 내용을 삭제

  - u : 지금까지 작업한 내용을 되돌리기(undo)

  - p : 조합키를 이용하여 삭제/복사한 내용을 커서 다음으로 붙여넣기

 

(조합키)

  - r + ? : 커서칸의 내용을 "?" 로 수정

  - d[] : 삭제의 조합키로써 "d" 다음 칸에 이동관련 키들을 조합할 수 있다.

           => 'dd' 명령어의 경우 행단위로 삭제를 할 수 있음

  - y[] : 복사의 조합키로써 "y" 다음 칸에 이동관련 키들을 조합할 수 있다.

           => 'yy' 명령어의 경우 행단위로 복사를 할 수 있음

 

   ※ 조합키의 경우 키 앞쪽에 "n(numberic)" 이 가능하다. (ex : 3dd, 2yw, 12yy ... etc)


[ 입력모드 ]

  - i : 커서칸부터 입력모드로 전환하여 내용 삽입가능

  - a : 커서 다음 칸부터 입력모드로 전환하여 내용 삽입가능 ("$ + a" 형태로 자주 사용)

  - o : 커서 다음 라인에 새로운 라인을 삽입하며 입력모드로 전환하여 내용 삽입가능("G + o" 형태로 자주 사용)

 

[ 실행모드 ]

(검색키)

  - / : "/Pattern" 형태로 Pattern 을 순차검색 (n=다음/N=이전)

  - ? : "?Pattern" 형태로 Pattern 을 역순검색 (n=이전/N=다음)


(활용키)

  - :e [File] : 현재 문서를 종료 하면서 File 을 열람

  - :n  : n라인으로 이동

  - :q  : 문서를 종료

  - :q! : 문서를 저장하지 않고 종료

  - :w : 문서를 저장

  - :wq : 문서를 저장하고 종료

  - :se nu : set number 의 약자로 문서내 왼쪽에 행번호를 출력

  - :se nonu : set nonumber 의 약자로 문서내 출력된 행번호를 제거


[ 추가사항 ]

(치환)

  - :[범위]s/[Old]/[New]/[g]

     * 범위 : 10,900 (10행부터 900행까지 적용) / % (문서 전체)

     * Old/New : Old 문자열을 New 문자열로 치환

     * g : 반복적용할 것인지 여부


(명령실행)

  - :! [Command] : Command 를 실행

  - :.! [Command] : Command 실행 결과를 Vi 로 출력


(내용삽입)

  - :w >> [File] : File 문서 하단에 현재 작업중인 문서를 삽입

  - :[n]r[File] : File 내용을 n 번째 라인에 삽입

  - :[n]r![Command] : Command 출력결과를 n 번째 라인에 삽입


 


 

AND

[ Grub 라고 불리는 BootLoader 를 활용하는 방법을 배워보자!! ]


* 설정파일

  - /boot/grub/grub.conf (링크파일 : /etc/grub.conf)


* 옵션

  - timeout = 부팅시간(초단위)

    ( ex. timeout=10 )


  - default <엔트리번호> = 기본값으로 부팅될 순서

    ( ex. default 0 )


  - fallback <엔트리번호> = 부팅실패시, 차순위 부팅순서

    ( ex. fallback 1 )


  - title <부팅제목>

    ( ex. title Redhat 9 )


  - root (<하드디스크장치,파티션>)

    ( ex. root (hd0,0)


  - kernel /vmlinuz-<버전> ro root=/dev/<장치명>

    ( ex. kernel /vmlinux-2.4.20 ro root=/dev/hda2 )


  - initrd <이미지파일명> = 시스템 초기화용 램디스크 이미지 파일



※ Windows 설치후 GRUB가 없어졌을 경우 Grub 재설치하기

  1. 리눅스 설치시디 1번으로 부팅

  2. "boot : " 부분에서 아래의 내용을 입력한다.

      - vmlinuz root=/dev/sda7           // 루트파티션을 지정해주어야 함

  3. #grub-install /dev/sda               // 리눅스가 설치된 디스크에 grub 부트로더를 다시 설치

 


※ Windows 와 멀티부팅 설정하기

  - /boot/grub/grub.conf에 아래형식을 추가하여 멀티부팅 설정

     title <타이틀명>

          rootnoverify (<장치명,파티션>)

          makeactive

          chainloader +1


AND

- touch -
1. 정의 : 빈 파일을 생성하거나 또는 지정된 파일의 시간정보를 수정할 수 있다.

 

2. 형식
  - #touch [옵션] [파일명]

3. 옵션
  - c : 파일을 생성할 때 존재하는 파일명을 입력하면 시간정보만 수정한다. 
  - d : 지정하는 파일의 시간정보를 수정할 수 있다.
  - t : 지정하는 파일의 날짜 및 시간정보를 모두 수정가능하다.

        (Syntax : #touch -t [MMDDHHmm] [ 대상 ] - MM월 DD일 HH시 mm분으로 지정된 날짜를 지정가능)

        ※ 단, 현재 시스템 시간보다 미래의 시간을 설정하면 시간내용이 아닌 날짜 정보가 입력됨

==========================================================================================
- cp -

1. 정의 : 파일 또는 디렉터리를 복사할 때 사용하고, 이름을 변경하여 복사가 가능하다.

 

2. 형식
   - #cp [옵션] [원본경로] [대상경로]

 

3. 옵션
 - i : 파일을 복사할 때 대상경로에 같은 파일명이 존재하면 덮어쓸 것인지 사용자 동의란이 출력된다.
 - r : 디렉터리 복사시 필수 옵션. 하위 내용까지 모두 포함하여 복사한다.
 - p : 권한 및 시간에 대한 속성 정보를 유지하면서 복사한다.

 - a : '-p' 옵션에서 링크정보를 포함하여 모든 속성에 대한 정보를 유지하여 복사한다.

==========================================================================================
- mv -
1. 정의 : 파일 또는 디렉터리를 이동할 때 사용하고, 이름을 변경하여 이동이 가능하다.

 

2. 형식
   - #mv [옵션] [원본경로] [대상경로]

 

3. 옵션
   - i : 파일을 이동할 때 대상경로에 같은 파일명이 존재하면 덮어쓸 것인지 사용자 동의란이 출력된다.


※ cp 와 mv 의 차이
   1. cp : 원본을 유지한 채로 대상으로 복사
   2. mv : 원본을 삭제하면서 대상으로 복사

          -> [ mv = 'cp -rp' - 원본 ] 공식으로 표현이 가능하고,

               원본의 속성정보들을 유지한채로 대상으로 이동된다.
     

==========================================================================================
- rm -

1. 정의 : 파일 또는 디렉터리를 삭제할 때 사용

 

2. 형식
   - #rm [옵션] [대상경로]

 

3. 옵션
 - i : 파일을 삭제할 때 삭제할 것인지 사용자 동의란이 출력된다.
 - r : 디렉터리 삭제시 필수 옵션. 하위 내용까지 모두 포함하여 삭제한다.
 - f : 삭제시 사용자의 동의확인이 없이 그냥 무시하여 삭제한다.


==========================================================================================
※ cp, mv, rm 명령어를 사용할 때 알아두기.

1. 다수의 agument 사용
   - #cp [/etc/fstab /etc/inittab /etc/httpd/conf/httpd.conf] [/backup]
     : 다수의 파일(디렉터리)을 복사하려면 띄어쓰기로 구분하여 가장 마지막 자리에 있는
       경로가 대상경로로 쓰이고, 그외의 내용은 원본 경로로 전부 사용된다.

 

2. Alias 를 활용한 BashShell 장점 
  - cp, mv, rm 명령어의 옵션 중 "-i" 의 경우는 $HOME/.bashrc 를 통해서 정의되어 있다.

AND

- pwd -
1. 정의 : 현재 자기 자신의 디렉터리 경로 정보를 확인

 

*  상대경로 : '.' 또는 '..' 과 같은 표시로 경로를 나타냄

                  (자신의 경로를 기준으로 대상경로를 출력)

*  절대경로 : /etc/rc.d/init.d 와 같은 표시로 경로를 나타냄
                  (최상위 디렉터리('/')를 기준으로 대상경로를 출력) 

 

2. 형식
   - #pwd
※ 디렉터리 이동시는 해당 명령어로 경로 확인을 필히 할 것.
   (쉘 프롬프트상에서 혼동이 가능하므로 : Unix(ksh)의 경우 Default 설정시 "#" or "$" 만 출력)
 
========================================================================================== 
- cd(Change Diretory) -
1. 정의 : 디렉터리를 변경할 때 사용

2. 형식
   - #cd [대상 경로]
 
========================================================================================== 
- ls -
1. 정의 : 디렉터리 및 파일의 목록을 출력 (DOS 에서의 'dir'과 동일)

2. 형식
   - #ls [옵션] [대상경로] : 대상 경로를 입력하지 않으면 현재 자신의 디렉터리내 목록을 출력해줌

3. 옵션 
   - l : 이름 및 권한, 시간정보, 용량을 리스트형식으로 출력 - Linux 에서 'll'로 정의됨
   - a : 숨김 파일까지 모두 이름만 출력
   - al : 'a' 옵션과 'l' 옵션을 합성한 내용 출력

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

- Alias -
1. 정의 : 명령어의 별칭을 지정

 

2. 형식
  - #alias [원하는 명령어(별명)]='[리눅스 명령어]'
     -> 명령어를 설정한 터미널에서만 사용이 가능하다. 

 

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

- mkdir(MakeDirectory) -
1. 정의 : 디렉터리를 생성할 때 사용

2. 형식
   - #mkdir [옵션] [대상 디렉터리명]
 
3. 옵션
   - p : 
상위 디렉터리의 생성여부에 관계없이 디렉터리를 생성한다.
          =>누스식 : 하위 디렉터리까지 모두 함께 생성하고 싶을 때 사용

 

==========================================================================================   
rmdir(ReMoveDirectory) -
1. 정의 : 비어있는 디렉터리를 삭제할 때 사용

2. 형식
   - #rmdir [옵션] [대상 디렉터리명]

3. 옵션
   - p : 
상위디렉터리도 포함하여 삭제가 가능
         ※ 단, 상위 디렉터리 중 비어있지 않은 디렉터리는 삭제가 불가능. 
AND

- uname -
1. 정의 : 시스템 정보 확인할 때 사용

2. 형식
  - #uname
  - #uname -a : 시스템의 전체 정보를 출력

3. 옵션 
   ① a : 시스템의 모든 정보
   ② s : 커널 이름 (Linux)
   ③ n : 노드 네임 (localhost.localdomain)
   ④ r : 커널 릴리즈 (배포판, 2.6.18-194.~~~~)
   ⑤ v : 커널 버전
   ⑥ m : 머신(i686)
   ⑦ p : 프로세서(i686)
   ⑧ i : 하드웨어 플랫폼(i386)
   ⑨ o : OS(GNU/Linux) 

========================================================================================== 
- man / --help -
1. 정의 : 명령어의 상세 페이지(도움말) 내용을 확인

2. 형식
  - #man [CMD]
  - #[CMD] --help

==========================================================================================  
- cal -
1. 정의 : 달력정보를 출력

2. 형식
  - #cal [MM] [YYYY]  : 현재 시스템의 시간정보를 기준으로 달력을 출력 

3. 유의사항

  * 명령어 사용시 기본값이 [YYYY] 부분이므로 원하는 '월' 정보를 출력할 때는

    [MM] [YYYY] 형태까지 모두 사용해주어야 한다. 


========================================================================================== 
 
- date -
1. 정의 : 현재 시스템 날짜와 시간을 출력

2. 형식
  - #date   : 현재 시스템의 날짜와 시간을 화면으로 출력

==========================================================================================  
- passwd -
1. 정의 : 사용자 비밀번호를 변경할때 사용
             (관리자만 해당 명령어를 사용할 수 있도록 컴파일이 되어있으나 SetUid 권한이 적용되어
              사용자의 경우는 자기자신의 비밀번호를 변경 가능함)

2. 형식
  - #passwd                   : root 사용자의 비번 변경
  - #passwd [UserName] : UserName 의 사용자 비번 변경

  - $passwd       : Login 한 사용자가 자신의 비번을 변경 

 
* 사용자($)로 비밀번호 변경시 간단한 에러 유형
   - 현재 비밀번호를 입력하라는 메세지가 출력
   - 6자이상의 비밀번호가 필요하다.
   - 현재 비밀번호와 유사한 것도 안된다.
   - 사용자 ID 와 동일한 것은 불가능하다.
   - 영문자, 숫자, 특수문자 등의 조합이 필요하다.
   - 명령어 뒤로 사용자명을 입력할 수 없다.
 
==========================================================================================  
- sysCMD -
1. 정의 : 시스템의 정보를 변경하는 명령어
  - shutdown, halt, poweroff, reboot, init
     ※ 위 명령어들은 관리자 계정으로만 사용가능하다.

2. 형식
 [ halt/poweroff ]
  ㄱ. 정의 : 시스템을 종료 (shutdown -h now, init 0 와 유사)

  ㄴ. 형식
   - #halt

   - #poweroff

 [ reboot ]
  ㄱ. 정의 : 시스템을 재부팅(shutdown -r now, init 6 와 유사)

  ㄴ. 형식

   - #reboot



 [ init ]
  ㄱ. 정의 RunLevel을 변경하는 명령어
               - Default RunLevel 설정 및 정의파일 : /etc/inittab

  ㄴ. 형식
      - #init [RunLevel]

 ※ RunLevel 정의
     * 0 - Halt : 시스템 종료
     * 1 - Single User Mode  : root 계정만으로 Login 된 상태
     * 2 - Multi User Mode, without NFS : /etc/passwd 파일내 사용자를 로딩/단, Network File Sytem 은 사용 불가
     * 3 - Full Multi User Mode : RunLevel 2 + Network File Sytem 사용 가능
     * 4 - UnUsed  : 현재는 사용하지 않음/단, 설정시 RunLevel 3 으로 동작함.
     * 5 - X11  : [init 3] + [X-Window]
     * 6 - Reboot


 [ shutdown ]
  ㄱ. 정의 : 시스템 종료/재부팅, 예약취소 등 작업가능

  ※ Shutdown 명령어와 다른 명령어들의 차이점
      - Login 한 사용자들에게 예약작업에 대한 Message 를 전송가능
      - HDD 내 Swap 공간을 이용하여 처리완료되지 못한 프로세스를 저장
      - Mount 된 정보를 umount 하여 파일시스템 에러를 방지

  ㄴ. 형식
   - #shutdown [Option] [Time] [MSG]

  ㄷ. Option
   - r : reboot 의 약자로 시스템을 재부팅
   - h : halt 의 약자로 시스템을 종료
   - c : cancle 의 약자로 종료 예약작업이 있는 경우 취소

  ㄹ. Time

   - HH:MM : 정해진 시간에 작업

   - +MM    : MM(분) 후에 작업

   - 0 or now : 지금 바로 작업

AND

[ 시스템 설정을 위한 내용 ]
설치된 CentOS 버전 : CentOS 5.8
설치된 VMware 버전 : VM workstation 8.0.1

 

 

Single Booting 이란?

- 정의 : Disk 의 MBR내 존재하는 부트로더(Grub)를 이용하여 RunLevel 1 상태(싱글유저모드)로 부팅하는 것.


- 목적 : 시스템 긴급 오류 수정 및 시스템 관리자 (root)의 계정 비밀번호를 초기화하기 위해 진행.

Single Booting 방법

ㄱ. 터미널 대화창에서 리부팅 : #reboot 입력

ㄴ. 리부팅 시 나타나는 카운트다운 중 아무키나  누른다. (부트로더 메뉴로 진입을 위해)

 


ㄷ. CentOS(2.6.18-308.1.1.el5) 위에서 'e'를 누른다. (최신버전의 커널 로딩 메뉴를 선택)

 


ㄹ. kernel 설정을 로드하는 부분에서 'e'를 누른 후 편집화면으로 이동한다. 

 


ㅁ. 'LABEL=/' 뒤에 한칸 띄어쓰기 후 'single' 또는 '1' 을 입력 (다른 내용이 있는 경우 삭제하고 입력)하고 enter로 저장
 

 


ㅂ. 수정한 내용에 커서를 옮겨두고 'b'를 눌러 부팅한다. 


ㅅ. sh-3.2#passwd : 부팅이 되고 나면 강제로 쉘 프롬프트가 "#" 상태가 되어져서 관리자(root) 비밀번호를 변경 가능
     (강제로 root 계정만 있는 상태로 부팅한 것이므로 여러가지 조작이 가능해짐 - 보안 취약)
-> 시스템 관리자의 비밀번호를 변경(초기화)
 


ㅇ. 모든 내용이 완료되면 #reboot 또는 #init 5 




- 보안 설정 : Grub BootLoader 에 암호를 걸어 부트로더 편집을 허가된 사용자에게만 허용
=> Single Booting 을 하면 강제로 "#" 프롬프트가 되므로 시스템 설정(root 비번 변경 등)을 쉽게 변경이 가능하여,
허가된 사용자만 가능하도록 설정하기 위한 보안 설정 (grub.conf 를 이용하여 설정)

 

가. #grub : 터미널 대화창에서 'grub'를 입력 

 

나. grub>md5crypt : md5형식으로 암호화를 위한 비밀번호 설정
다. password : 설정하기 위한 비밀번호를 입력(입력 내용이 "*" 형태로 출력됨)

라. 하단에 출력되는 암호화 코드를 확인 

 

마. 또 다른 터미널 창을 실행한 후 'vi /boot/grub/grub.conf' 입력

 

바. 'default...' 항목에 커서를 위치시킨 후 'O'키를 한 번 누른 후 'password n00$e'을 입력 후 저장종료 

 

사. #reboot
=> 정상적으로 비밀번호가 설정되지만 암호화되지 않아 노출 위험이 있다.

아. Single Booting 이 아닌 그냥 일반 부팅 후 다시 grub 를 진행하여 수정함. (가. ∽ 마. 항목까지 진행)
자. 'password n00$e' 항목 줄에 커서를 위치시킨 후 'dd'로 삭제 후 'password MD5코드값' 가 되도록 입력 후 저장종료

차. #reboot
=> 비밀번호를 입력해도 정상적으로 설정되지 않은 오류가 발생한다. (비밀번호가 달라 Grub 진입불가)

카. Single Booting 이 아닌 그냥 일반 부팅 후 다시 grub 를 진행하여 수정함. (가. ∽ 마. 항목까지 진행)
타. 'password MD5코드값' 항목 줄에 커서를 위치시킨 후 'dd'로 삭제 후 "라"항목에서 확인한 해쉬값을
입력하여 최종적으로 확인시 "password --md5 MD5코드값" 형태가 되도록 설정하고 저장종료 

 

파. #reboot
=> Single Booting 보안 설정이 정상적으로 적용됨을 확인

** Single Booting 보안설정이 되어 있는 경우
"root"의 비밀번호와 "grub" 설정 비밀번호 두가지를 모두 잃어버리는 경우

시스템을 새롭게 설치하거나 Rescue 를 진행하여야 하는 안타까움이 있습니다.

그러므로 보안 설정을 하는 것도 중요하지만 그 만큼 "왜 이러한 보안설정을 하는지?", "보안 설정을 하는 방법",
"운영 관리"가
중요하다는 부분도 꼭 유의해서 기억하시기 바랍니다^^


AND

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

※ 해당 내용의 경우 VMware를 이용한 로컬 네트웍 상에서 작업을 하는 내용을 안내하여 드립니당~!

[ 시스템 설정을 위한 내용 ]

설치된 Base Windows  : Windows 7 Pro
설치된 CentOS Server  : CentOS 6.4
설치된 VMware Program : VM workstation 9.0.2

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


 - NFS(Network File System) -

1. 정의

   - 원격서버에서 공유한 File-System 을 클라이언트에서 mount 하여 관리하는 원격관리 서비스



2. 특징

   - Dir 를 공유하는 윈도우즈와 동작하는 내용이 유사하지만 File-System 자체를 공유하므로 파티션으로 적용된다.

   - Portmap 을 이용하여 통신하기 때문에 유동포트 이다.

※ portmap, rpcbind, sunrpc 모두 동일한 패키지를 나타내는 명칭이다.



3. Package

[ NFS 관련 PKG ]

- nfs-utils-....rpm

nfs-utils-lib-....rpm

 

[ Portmap 관련 PKG ]

- rpcbind-...rpm



4. nfs 활성화

   - #/etc/rc.d/init.d/nfs restart



5. 동작상태 확인

   - #netstat -atunp | grep nfs      : 해당내용으로 확인시 확인불가 (portmap 통신을 하므로)

   - #rpcinfo -p



6. 이용

 [ Server ]

  - #/etc/rc.d/init.d/nfs restart / #rpcinfo -p   : 데몬 활성화 및 동작상태 확인

   * 설정파일 : /etc/exports

=================================================================================
[ Share Dir ]        [ Access allow Host/Net ](Option)
/nfs_dir1               10.1.1.129(rw,no_root_squash,sync)         : HOST 방식
/nfs_dir2               10.1.1.0/255.255.255.0(ro,sync)                : Network 방식
/nfs_dir3                *(rw,no_root_squash,sync)                    : All Network 방식
=================================================================================
 * 옵션 
  - sync : 서버와 클라이언트간에 동기화를 자동으로 한다.
  - secure : 클라이언트 마운트 요청시 포트를 1024 이하로 할 때 이용


      - NFS 명령어 -
         - #exportfs -v    : nfs 서비스를 통해 동작하는 Share 정보 확인
         - #exportfs -ra   : nfs 서비스 정보를 갱신 (nfs 데몬 재실행이 필요없다.)



 [ Client ]

  - #/etc/rc.d/init.d/nfs restart / #rpcinfo -p   : 데몬 활성화 및 동작상태 확인

  - #mount -t [파일시스템 형식] [NFS서버:/공유경로] [MP]   : mount 를 이용하여 Server 측의 공유시스템을 적용



7. 동작환경

 [ 그림참조 ]

 



 [ NFS-Server : 서비스 ]
※ nfs 서비스의 rpc 유동포트를 고정하기.

   ⓐ #vi /etc/sysconfig/nfs  : lockd, mountd, rquotad 포트를 수정
======================================================================
 - #RQUOTAD_PORT=875 -> RQUOTAD_PORT=4003
 - #LOCKD_TCPPORT=32803 -> LOCKD_TCPPORT=4001
 - #LOCKD_UDPPORT=32769 -> LOCKD_UDPPORT=4001
 - #MOUNTD_PORT=892 -> MOUNTD_PORT=4002
======================================================================


   ⓑ #system-config-firewall 에서 해제 후 #cat /etc/sysconfig/iptables 로 확인
=========================================================================================
rpcinfo -p 로 확인하여 출력되는 포트 중 "nfs, rquotad, nlockmgr, mountd, portmapper"
서비스가 사용하는 포트를 해제한다. (tcp/udp 모두)
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4000:4003 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 4000:4003 -j ACCEPT
=========================================================================================





 - Autofs(Auto File System) -

1. 정의

   - 클라이언트에서 File-System 을 사용시 자동으로 마운트,

     사용하지 않은 상태로 일정시간 후 자동으로 언마운트 해주는 데몬



2. Package

   - autofs-....rpm



3. autofs 활성화

   - #/etc/rc.d/init.d/autofs restart



4. 동작상태 확인

   - #netstat -atunp | grep autofs



5. 이용

 [ Server ]

   ** NFS 부분의 "Server" 를 참조하세요.


 [ Client ]

  - #/etc/rc.d/init.d/nfs restart / #rpcinfo -p   : 데몬 활성화 및 동작상태 확인


  - #vi /etc/sysconfig/autofs : autofs 데몬의 전반적인 설정파일
      =====================================================================================
        BROWSE_MODE="yes"  : auto.master 값을 활성화 할 것인지의 옵션
      =====================================================================================


  - #vi /etc/auto.master    : autofs 데몬에 대한 마운트될 기본 디렉터리 및 설정파일을 지정
      =====================================================================================
          /misc (Autofs Base MP)  /etc/auto.misc (Autofs 주 설정파일)
      =====================================================================================


  - #vi /etc/auto.misc          : autofs 데몬으로 자동 마운트를 설정 및 옵션 내용을 지정
      =====================================================================================
      [ Mount Dir ]   [ FileSystemType & Option ]   [ Remote Mount DEV ]
          mp1              -fstype=nfs,rw,nosuid            10.1.1.50:/nfs_test1

    * Mount Dir : 경로명을 입력할 때 마운트될 디렉터리명만 입력 (MP:/misc/mp1)
    * Option : -fstype 으로 "nfs(Network), ext3(Local)" 마운트 옵션 이용, 구분자 "콤마(,)" 로 사용
    * Remote Mount DEV : Local 의 경우 (:장치 또는 :파티션명)
                                    Network 의 경우 (원격서버:공유Dir)
      =====================================================================================

AND


VNC라는 원격 접속 프로그램보다 빠른 속도를 보여주고 있습니다!

원격 접속프로그램인 putty 나 secureCRT 와는 다른 원격프로그램입니다.

본 프로그램은 터미널 접속이 아닌 리눅스의 X-window 에 원격 접속이

가능하게 해줍니다!

일단!

홈페이지 : http://www.nomachine.com/

접속후 Download 탭 클릭!



다음으로 NX Free Edition for Linux 클릭!



다음으론 현재 사용하고 있는 리눅스 버전을 찾아 항목을 클릭!



다음 항목에서
Download client, Download node, Download server
세가지 항목을눌러 모두 다운하세요.



파일 3가지가 다운이 되었다면!
nxclient-3.5.0-7.x86_64.rpm
nxnode-3.5.0-7.x86_64.rpm
nxserver-3.5.0-9.x86_64.rpm
설치 합시다ㅋ

윈도우에서 다운을 받았다면 당연히 리눅스로
옮겨주세요! (FTP, USB) 고고싱!

이제 설치 합니다
#rpm -ivh nxclient-3.5.0-7.x86_64.rpm
#rpm -ivh nxnode-3.5.0-7.x86_64.rpm
#rpm -ivh nxserver-3.5.0-9.x86_64.rpm

설치가 완료 되었다면!
#vi /usr/NX/etc/server.cfg

EnableUerDB="0" 항목을 EnableUerDB="1" 로 변경!
EnablePasswordDB="0" 항목을 EnablePasswordDB="1" 로 변경!
#SSHDAuthPort="22" 의 # 주석처리 제거
EnableClipboard="both" // 운영체제 간의 복사등의 기능을 설정.

ssh 사용 포트가 막혀 있다면 당연히 포트를 열어 주세요!
포트를 여는 방법은 검색 고고 하세요 ㅋ
방화벽 재구동 해주시고요!

이제 원격 접속에 필요한 사용자를 생성해 줍시다!
#useradd test10 <-- 리눅스에사용자 추가!
#passwd test10 <-- 추가된 사용자 비번 설정!
(리눅스에 실제 사용자가 있어야 접속이 가능 합니다!)

이제 원격 접속을 위해 프로그램에 사용자를 등록 합니다!
#/usr/NX/bin/nxserver -useradd test10 --system

--system 을 뒤에 붙여주면 관리자권한 부여가 됩니다.
입력 후 패스워드를 지정하세요!

NXserver 재구동!
#service nxserver restart 혹은 #/etc/rc.d/init.d/nxserver restart

이제는 윈도우에서 접속해 봅시다!
Download 탭의 윈도우 클라이언트 클릭!


다운로드 패키지!



다운로드 후 설치를 진행하고 실행하면.


세션이름은 임의로 적고, 접속하려는 리눅스의 아이피를 입력.


사용하는 환경에 따라 KDE 혹은 GNOME 선택 -> 넥스트!



아까 생성한 test10 사용자 이름과 암호 입력! -> 접속!


개인적으로 이 프로그램을 CentOS에서는 사용해보지 않았습니다..

우분투 ver.10.10 사용을 확인 했습니다.
ssh 키 생성과 키 import 부분은 다루지 않았습니다.
키를 생성하지 않고 사용하면 default 키를 입력받는 형식인가 봅니다.
우분투에서는 key 생성과 import 부분을 다 해보았는데..
나중에 CentOS 에서 해보고 후기 다시 올리겠습니다.
도움이 되었으면 좋겠습니다 ㅋㅋㅋ

     - 백업종결자 씀 -

AND