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

 사용자 관련 명령어

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

- id -

1. 정의 : 사용자의 uid, gid, group 에 대한 내용을 출력


2. 형식

  - #id [UserName]



- groups -

1. 정의 : 사용자가 속한 그룹의 정보를 출력


2. 형식

  - #groups [UserName]



- su(Switch User) - [ 중요도 : ☆☆☆ ]

1. 정의 : 사용자를 전환하고자 할 때 사용


2. 형식

  - #su [UserName]
  - #su - [UserName]  : '-' 옵션을 사용

3. 정보
  [ 명령어 사용 제한사항 ]
  - 관리자(#) -> 사용자($)
  - #su noose : 암호를 물어보지 않는다.
  - $

  - 사용자($) -> 관리자(#)
  - $su root   : 암호를 물어본다
  - 암호 :     : root 비밀번호를 입력 후 root 로 전환
  - #

  - 사용자($) -> 사용자($)
  - $su noose1 : 암호를 물어본다
  - 암호 :     : noose1 비밀번호를 입력 후 noose1 로 전환
  - #

  ※ su 명령어를 이용하는 경우
     - 관리자 → 사용자 로 변경 : 암호가 불필요
     - 사용자 → 관리자 로 변경 : 암호가 필요 (관리자 암호)
     - 사용자 → 사용자 로 변경 : 암호가 필요 (변경하고자 하는 사용자 암호)


  [ 명령어 옵션에 대한 차이 ]
  - $su root
  - 암호 :
  - #
  - #ifconfig  : 명령어를 사용할 수 없다.
  - #exit
   ※ 단, '#/sbin/ifconfig' 이라고 하면 정상 동작.

  - $su - root
  - 암호 :
  - #
  - #ifconfig  : 명령어를 정상적으로 사용할 수 있다.
  - #exit

※ "su" , "su -" 명령어의 차이
   - $su     : 시스템 환경변수 정보를 변경하지 않고 사용자만 전환된다.
   - $su -   : 시스템 환경변수 정보를 변경하면서 해당 사용자로 전환된다.

    ◎ 'su' 명령어가 아닌 'su -' 명령어로 사용자 전환을 할 것.
       -> su 명령어로만 사용자를 변경하면 최초로 접속한 사용자의 환경변수를 그대로 사용하기 때문이다.

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

- who / whoami / w -

1. 정의 : 터미널(원격 접속)을 통해 접속된 사용자의 정보를 확인

 

2. 형식

  - #who

     : 시스템에 접속한 사용자의 이름, 열려 있는 포트번호, 접속시간, 접속IP를 확인


  - #whoami

     : 시스템에 접속한 사용자의 이름만 출력


  - #who am i

     : who 명령어로 확인되는 내용 중 자신에 해당하는 부분만 출력


  - #w

     : who 명령어로 확인되는 내용과 런타임, 실행되는 프로그램 내용을 출력


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

 검색 관련 명령어

==========================================================================================
- which -
1. 정의 : 실행파일을 찾고자 할 때 사용

 

2. 형식
  - #which [파일명]

 

3.예제
  - #which su  : 정상 검색 (/bin/su)
  - #which vsftp  : 오류발생
  - #which vsftpd : 정상 검색
   ※ 실행파일(명령어)의 풀네임으로 검색하여야 한다.


  - #which useradd usermod userdel
  - #which useradd su ifconfig
    -> 다수의 Argument 값도 인식이 되고, 서로다른 경로라도 무관

 

  [ 섭수! ]
  - #which vsftp  : 오류발생(경로를 확인)
  - #env | grep PATH
     -> 두개의 경로가 같게 출력

 

  - #which ifconfig : 정상출력(/sbin/ifconfig)
  - #su - noose
  - noose]$which ifconfig : 오류발생

 

   ※ which 명령어로 확인되는 명령어의 경로는 환경변수의
      "PATH" 값을 참조하여 검색된다.

 

==========================================================================================
- find -
1. 정의 : 파일을 검색할 때 사용

 

2. 형식
  - #find [검색시작경로] [옵션] [검색조건]

 

3. 옵션
  - name : 이름을 조건으로 사용

  - exec : 검색된 결과를 배열로 받아 특정 명령을 실행하도록 적용
  - print : 결과값을 화면으로 출력(Linux 기본값, Unix 필수값)
  - perm : 특정권한 유무에 대한 조건을 사용
  - atime : access time을 조건으로 사용 (ls -lu=마지막 접근시간)
  - mtime : modification time을 조건으로 사용 (ls -l=마지막 수정시간)
  [시간정보]
    * +n : ((n*24)+24) 이전 시간에 작업한 내용을 출력
    *  n  :(n*24) 시간동안 작업한 내용을 출력
    * -n : n ~ Now 동안 작업한 내용을 출력

 

4. 실습예제
  - #man find
  - #find /etc -name passwd    : "/etc/" 경로 아래에서 'passwd' 이름의 파일을 검색
  - #find / -name su  : "/" 경로 아래에서 'su' 이름의 파일을 검색
     => 단, "/" 에서 검색을 시작할 경우 시간이 오래 걸릴 수 있음.

 

  - #find /etc -name passwd
  - #find /etc -name passwd -print
     => Linux 시스템은 기본값으로 적용되어 있어 차이가 없다.

 

  - #find /backup -perm 600 : "backup" 내 600 허가권인 파일을 검색
  - #find / -perm 4000  : "/" 내 4000 허가권인 파일을 검색 (오류)
  - #find / -perm +4000 : "/" 내 4000 이상인 파일을 검색
     => 취약점 분석 : setuid 설정된 파일을 검색
         (ex : #find / -perm +4000 > /backup/setuid)
 
  - #find /backup -mtime +n
  - #find /backup -mtime n
  - #find /backup -mtime -n
   ※ ls -l 명령어로 보이는 시간정보에서 Modification Time 확인가능

 

  - #find /backup -atime +n
  - #find /backup -atime n
  - #find /backup -atime -n
   ※ ls -lu 명령어로 보이는 시간정보에서 Access Time 확인가능


  - #find /backup -name "test*" -print  : /backup 경로내 "test" 로 시작되는 정보를 검색하여 출력

  - #find /backup -name "test*" -exec rm {} \; : 위 결과로 나타난 정보를 삭제하도록 적용

 

==========================================================================================
- grep -
1. 정의 : 파일로 부터 일정한 패턴값을 찾을 때 사용

 

2. 형식
  - #grep [패턴] [파일명]
  - #grep [옵션] [패턴] [파일명]

 

3. 옵션
  - i : 대/소문자 구분없이 검색가능
  - n : 패턴의 실제 위치의 행번호와 함께 내용을 출력
  - v : 패턴을 제외한 내용을 출력 (특정내용 삭제시 이용)

 

4. 실습예제
  - #grep noose /etc/passwd
  - #grep wheel /etc/group
  - #grep password /boot/grub/grub.conf

 

  - #grep -i RooT /etc/passwd
  - #grep -i virtualhost /etc/httpd/conf/httpd.conf
    : 대/소문자를 구분없이 패턴 값으로 내용을 검색함

 

  - #grep -n root /etc/passwd
  - #head -15 /etc/passwd | nl
    : 패턴 내용을 위치하고 있는 행번호까지 함께 출력

 

  - #grep -in document /etc/httpd/conf/httpd.conf
    : 'i', 'n' 옵션의 혼용으로 오류사항을 검색할 때 유용하다.

 

  - #grep -v root /etc/passwd
  - #grep -v sdb /etc/fstab > /backup/fstab
    : Mount 를 위해 추가한 /dev/sdb 정보를 삭제하여 원본 fstab을 만들어
      백업시킬수 있음.

 

 [ 응용예제 ]
  - #cat /etc/passwd | grep [사용자명]
  - #cat /etc/group | grep [그룹명]
  - #rpm -qa | grep [패키지명]  : 패키지명에 해당하는 패키지를 출력
  - #env | grep [변수명]         : 변수명에 해당하는 환경변수 내용 출력
  - #useradd -D | grep HOME : 사용자의 기본 홈 디렉터리만 출력
  - #useradd -D | grep -v MAIL : 사용자 기본설정 중 Mail 내용만 빼고 출력

 

==========================================================================================
- egrep -
1. 정의 : 파일로 부터 일정한 패턴값을 찾을 때 사용
            (grep 보다 확장된 형태로 가능)

 

2. 형식
   - #egrep [옵션] [패턴] [파일명]

 

3. 옵션
   - a|b : a or b 의 검색결과 출력

 

4. 예제
   - #egrep 'root|noose' /etc/passwd
      : '/etc/passwd' 파일내 'root' 또는 'noose'를 포함하는 내용을 출력
   - #env | egrep 'HOME|PATH|SHELL'

      : 시스템 환경변수 중 HOME,PATH,SHELL 의 값을 모두 출력

 

 

==========================================================================================
시스템 응용관리 명령어

==========================================================================================
 - file -
1. 정의 : 파일의 속성정보 및 디스크의 포맷정보를 확인가능


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


3. 옵션
   - s : 디스크의 포맷정보를 확인


4. 예제
조건 : pwd = /backup, tarfile = /backup/test.tar, /backup/aaa


[ 파일정보확인 ]
   - #file /backup/test.tar : tar archive
   - #file /backup/aaa : tar archive
   - #file /etc/passwd : ASCII text
   - #file /usr/bin/passwd : setuid, executable


[ 디스크정보확인 ]
   - #file -s /dev/sdb7 : ext3 filesystem data
   - #file -s /dev/sdb3 : data
    ※ mkfs 명령어가 사용되어 포맷된 형식을 확인 가능

 

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

- ln -

1. 정의 : 서버 설치 후 시스템 관리에 용이하도록 스크립트 또는 경로 이동의 최소화에 자주 사용


2. 링크의 종류

 [ 하드 링크 (Hard Link) ]

    ㄱ. 형식

       - #ln [Source 파일] [심볼릭 링크 파일이 생성되는 디렉터리] 파일명

    ㄴ. 특징

       - 원본이 삭제되어도 링크파일에는 영향을 주지 않는다.(cp와 유사)


 [ 심볼릭 링크(Symbolic Link) ]

    ㄱ. 형식

       - #ln -s [Source 파일] [심볼릭 링크 파일이 생성되는 디렉터리] 파일명

    ㄴ. 특징

       - 원본이 삭제되면 링크파일이 동작되지 않는다.(바로가기 키)


 ※ 링크 생성시 유의사항 : 파일 생성 시 반드시 절대경로로 생성할 것!

 

==========================================================================================
- PS(Process) -

1. 정의 : 현재 동작하고 있는 프로세스의 현황을 출력
            (Windows 의 "작업관리자"와 유사)


2. 형식
   - #ps [옵션]
   - #pstree [옵션]


3. 옵션
   [ ps ]
   - a  : 현재 실행하고 있는 전체 프로세스(일반사용자들 포함)
   - e  : 모든 프로세스가 실행하는 정보를 출력
   - f  : 출력할 정보의 내용을 풀 포맷형식으로 출력


   [ pstree ]
   - n  : PID(ProcessID) 순서로 정렬하여 출력
   - p  : 프로세스명과 PID를 함께 출력


4. 예제

   - #ps      : 현재 로그인한 사용자에 대한 CMD 정보만 간단하게 출력
   - #ps -aef   : 모든 프로세스정보를 풀 포맷 형식으로 출력
   - #ps -aef | grep [XX]  : XX 내용을 실행하는 프로세스 정보만 출력


   - #pstree
   - #pstree -np
   - #pstree -np | grep [XX]  : XX 내용을 실행하는 프로세스 정보만 출력

 

==========================================================================================
- wget -
1. 정의 : 웹서버에서 파일을 다운로드 받을 때 사용


2. 특징

   - 인터넷이 연결되어 있는 상태에서만 지원

   - PWD 경로내 파일이 다운로드 됨


3. 형식

   - #wget [URL]

   - #ls -l     : URL 정보를 이용하여 원하는 파일이 다운로드되었는지 확인하세요.

 

==========================================================================================
- pwconv/pwunconv -
1. 정의 : /etc/shadow 파일을 복구할때 이용
  
2. 형식
  - #pwunconv : shadow 파일을 참조하지 않도록 설정
  - #pwconv : shadow 파일을 참조하도록 설정
                   (파일이 존재하지 않으면 /etc/passwd 파일을 참조하여 재 생성)

 

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

- wc -

1. 정의 : 파일내 단어, 문자, 라인의 수를 출력


2. 형식

  - #wc [옵션] [argument]


3. 예제

  - #wc /etc/passwd      : 사용자 정보파일내 단어, 문자, 라인의 수 정보를 확인

  - #cat /etc/passwd | wc -l    : 시스템의 사용자 수를 확인 가능

  - #ps -ef | wc -l         : 시스템의 동작 중인 프로세스 수를 확인 가능

  - #rpm -qa | wc -l      : 시스템내 설치된 패키지의 수를 확인 가능

==========================================================================================
시스템 로그관련 명령어

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

- last -

1. 정의 : 로그인 정보를 화면에 출력

 

2. 형식

  - #last      : 시스템내 로그인 내역에 대한 정보를 출력

  - #last UserName    : UserName 계정의 로그인 내역을 출력


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

- lastlog -

1. 정의 : 사용자별로 가장 마지막 로그인 정보만 출력

 

2. 형식

  - #lastlog      : 시스템내 '/etc/passwd' 파일을 참조하여

                       모든 계정들의 마지막 로그인 정보를 출력


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

- lastb -

1. 정의 : 접속실패에 대한 로그 정보를 출력

 

2. 형식

  - #lastb      : 시스템에 로그인 시도를 하였다가 실패한 내역을 출력

 


AND

- RPM(RedHat Package Manager) -
1. 정의 : 리눅스에서 패키지를 설치/수정/삭제/확인 할 수 있는 패키지 관리자
            (Windows 의 "프로그램 관리자" 와 유사)

 

2. 형식
  - 설치 : #rpm -ivh [풀 패키지명]
  - 수정 : #rpm -Uvh [풀 패키지명] (업그레이드 형식)
  - 삭제 : #rpm -e [패키지명]
  - 질의 : #rpm -qa | grep [패키지명(일부가능)]

 

3. 옵션
  - i : install - 설치
  - v : verbose - 자세히 출력
  - h : hash - '#'으로 화면에 출력
  - e : erase - 삭제
  - q : question - 질의
  - nodeps : no dependencies - 의존성을 없애고 설치
  - U : upgrade - 설치된 패키지를 버전업할 때 이용
          (설치하려는 버전이 더 높은 경우 기존 설치된 패키지를 지우고 설치)

 

4.  RPM 파일 설명
   [패키지 파일 : mysql-5.0.77-4.el5_6.6.i386.rpm]
   - mysql : 패키지명
   - 5.0.77 : Upgrade Version (설치하는 패키지의 버전)
   - 4.el5_6.6 : Update Version (패키지가 업데이트 된 버전)
   - i386 : Architecture (시스템의 플랫폼 형식)
   - rpm : 확장자

 

   [패키지의 종류]
   - 단일 패키지 : 하나의 pkg(RPM) 파일을 설치 후 관련 서비스가 가능한 패키지
   - 다중 패키지 : 여러개의 pkg(RPM) 파일이 하나의 패키지 이름으로 묶여서 모두
                       설치 후 서비스가 가능한 패키지(특징 : 대표pkg 존재)

 

5. 실습예제
  [ 패키지 설치를 위한 확인 ]
  - #uname -a(-i)   : 아키텍처를 확인
  - #rpm -qa | grep 패키지명  : 설치하려는 패키지명의 설치 및 버전 확인
    (#rpm -qa | grep mysql)

 

  [ 패키지 설치 ]
  - #rpm -ivh mysql-bench-5.0.77-4.el5_6.6.i386.rpm
     : mysql-bench 패키지 설치 -> 의존성 오류 발생으로 설치불가

  - #rpm -ivh mysql-5.0.77-4.el5_6.6.i386.rpm : mysql 패키지 정상설치
  - #rpm -i mysql-bench-5.0.77-4.el5_6.6.i386.rpm
      : 옵션없이 mysql-bench 설치시 바로 프롬프트가 출력되어 확인절차가 필요

  - #rpm -ivh mysql-connector-odbc-3.51.26r1127-2.el5.i386.rpm
      : 의존성 오류가 발생하여 설치 불가
  - #rpm -ivh --nodeps mysql-connector-odbc-3.51.26r1127-2.el5.i386.rpm
      : 오류가 발생한 패키지의 의존성을 무시하고 설치


  [ 패키지 수정 ]
  - #rpm -Uvh


  [ 패키지 삭제 ]
  - #rpm -e mysql  : mysql 패키지를 삭제
                             -> 의존성 오류가 발생

  - #rpm -e --nodeps mysql : 의존성을 무시하여 삭제

 

 ※ RPM 의 단점
    - pkg들의 의존성이 발생(ex: 다중pkg의 경우 대표pkg 부터 설치해야함)
    - 설치시 하나씩 설치해야하는 번거로움이 있다.

 

 ※ RPM 의존성 해결방안
    - 다중pkg 의 경우 대표pkg 부터 설치한다.
    - 삭제 또는 설치하려는 pkg가 의존성이 발생한 pkg와 대표pkg 명이 같으면
       "--nodeps" 옵션을 사용하면 안됨.

 

==========================================================================================
- yum(Yellowdog Update Manager) -
1. 정의 : 리눅스에서 pkg를 설치/수정/삭제/확인 하기 위한 도구
            (의존성을 해결한 프로그램)

 

2. 형식
  - 설치 : #yum [-y] install [패키지명]
  - 수정 : #yum [-y] update [패키지명]
  - 확인 : #yum list (rpm -qa | grep 으로 확인하는 경우가 많음)

 

  - 삭제 : #yum [-y] remove [패키지명]

    * 유의사항
       -> 삭제하기 위한 대표pkg 명을 입력하여야 함
       -> 의존성 발생 pkg 까지 모두 삭제하므로 신중히 사용해야 함
           ==> 가능한 rpm 을 이용하여 삭제할 것!

 

3. 실습예제
  [ 패키지 설치 ]
  - #yum install telnet-server : telnet-server 패키지 설치시도

  - #yum install telnet*
  - #yum install mysql-*
      : "*" 를 이용하여 여러개의 pkg도 한번에 설치가 가능

  - #yum -y install telnet-server : telnet-server 패키지 설치완료

 

  [ 패키지 확인 ]
  - #yum list  : 시스템내에 전체 패키지내용을 출력
  - #yum list mysql : mysql 패키지의 설치된 정보 및 update 가능 내용도 출력

 

  [ 패키지 수정 ]
  - #yum update mysql : mysql 패키지의 업데이트 버전을 설치시도
  - #yum -y update : list 로 확인되는 모든 패키지의 업데이트를 한다.

 

  [ 패키지 삭제 ]
  - #yum remove telnet-server  : telnet-server 패키지 정상삭제
  - #yum remove mysql  : 의존성이 발생하는 패키지도 모두 삭제를 시도

 

==========================================================================================
※YUM 과 RPM 의 차이점

[ RPM ]

  1. 의존성이 발생한다.
  2. pkg를 하나씩 설치해야하는 번거로움
  3. On/Off Line 모두 사용 가능
  4. pkg 명의 일부만 알아도 검색으로 설치가 가능

 

 [ YUM ]

  1. 의존성을 해결한다.
  2. 필요한 경우 pkg를 모두 함께 설치 (mysql-*)
  3. On Line 상태에서만 가능
  4. pkg 명의 일부만 아는 경우 필요없는 pkg를
     설치할 가능성이 있음 (php* - php53 도 설치)

 

AND

* File System 에 대해 궁금하신 부분은 아래 글을 참고해주시기 바랍니다.

2013/12/31 - [Infomation's] - File System 이란 무엇인가?

 

리눅스에서는 파일시스템을 ext 계열로 사용하고 있으며, 현재는 ext3/ext4 형태로 사용하고 있습니다.

파일시스템을 만들기 위해 파티션 작업을 하는 부분과 파일시스템 생성/사용 부분으로 알아봅시다.

 

우선적으로 Device 를 인식하는 부분을 알고 아래의 내용을 따라서 진행해보시기 바랍니다.

※ 단, CentOS 6.X 부터는 IDE Type 에 대한 부분도 SCSI 로 인식되어집니다.

* SCSI Device : /dev/sdX(a ~ )    -> ex) 1번째 SCSI HDD : /dev/sda

- Partition : /dev/sdXN(0 ~ )  -> ex) 1번째 SCSI HDD 2번째 Partition : /dev/sda2

   -> ex) 3번째 SCSI HDD 5번째 Partition : /dev/sdc6 (extended 파티션 때문에 1개가 늘어남)

* IDE Device : /dev/hdX(a ~ )      -> ex) 1번째 IDE HDD : /dev/hda

- Partition : /dev/hdXN(0 ~ )  -> ex) 2번째 IDE HDD 3번째 Partition : /dev/hdb3

   -> ex) 1번째 SCSI HDD 6번째 Partition : /dev/hda7 (extended 파티션 때문에 1개가 늘어남)

 

 

##### Partitioning (파티션 설정) #####

 

- fdisk -
1. 정의 : 물리적인 HDD를 논리적으로 분할하여 사용하기 위한 명령어
             (파티션 설정을 위한 명령어)

 

2. 형식
   - #fdisk [옵션] [장치명] : 상세 옵션의 경우 fdisk 메뉴얼 참조

 

3. 옵션
  - l : List 형태로 파티션의 정보를 확인

 

 

※ Partition 알아두기

Disk 라고 불리는 HDD 는 아래와 같이 세 종류의 파티션 설정을 Default 로 가지고 있다.

또한, 각 Disk 별로 가질 수 있는  갯 수 제한이 있으니 참고하기 바랍니다.

 

  * Primary (주 파티션)  [ 4개 제한]

=> 기본적인 파티션영역, 디스크 저장소 역할

※ Extended 영역 뒤로 생성 금지 (파티션 무빙이 불가능하므로)

 

  * Extended (확장 파티션) [ 1개 제한 ]

=> Primary 영역의 갯 수 제한을 보완, Logical 의 그릇 역할 (저장소 역할 X)

※ 생성시 Primary 1개 역할을 겸함, 5개 이상 파티션 필요시 필수 파티션,
    생성시 디스크의 마지막까지 영역을 설정할 것.

 

  * Logical (논리 파티션) [ ∞ 개 제한 ]

=> Extended 영역 안에서만 존재 가능, Extended 영역 안에서는 Primary 와 동일함 (저장소 역할 O)

 

※ 파티션명이 "5" 부터 시작 (/dev/sda5, /dev/hdb5, /dev/sdc7 등)

 

 


 

##### Creating File System (파일시스템 생성) #####
- mkfs(Make File System) -
1. 정의 : 설정된 파티션을 mount 할 수 있는 상태의 파일시스템으로 변환시켜주는 명령어
            (Windows의 "format" 과 유사)

 

2. 형식
   - #mkfs.[파일 시스템 형식] [파티션명]
   - #mkfs -t [파일 시스템 형식] [파티션명]
     ※mkfs 명령어 이용시 Extended 형식의 파티션은 사용할 필요가 없다.

 

3. 실습
   - #mkfs -t ext4 /dev/sdb5

   - #mkfs.ext4 /dev/hda7

 

  ※ 예외사항

    - #mkfs.ext3 /dev/sdc
        -> mkfs 명령어 의 Argument 로 파티션이 아닌 장치명으로 입력하면 해당장치의 설정했던 파티션 정보를

      모두 삭제되는 오류가 발생

 

 

##### Using File System (파일시스템 사용) #####
- mount/umount -
1. 정의 : 물리적인 파티션을 논리적인 저장소로 인식하거나 해제하는 과정

 

2. 형식
  [mount]
   - #mount [파티션명] [마운트지점(디렉터리)]

 

  [umount]
   - #umount [파티션명]
   - #umount [마운트지점(디렉터리)]

 

  [ 마운트 정보확인 ]
  - #mount
  - #df -h  : 옵션을 제외한 Mount 정보가 한 눈에 보기 쉽게 출력

 

 ※ 단, mount 명령어로 사용한 정보는 시스템이 reboot 되거나 halt 상태가 되면 초기화된다.


- 부팅시 자동 Mount -
1. 정의 : 시스템이 reboot 되거나 halt 상태가 되면 mount 정보를 가지는 /etc/mtab 파일의 내용이

            모두 초기화 되므로 시스템이 부팅하면서 참조되는 /etc/fstab 파일을 이용하여 자동 마운트를 설정한다.

 

2. 설정파일 : /etc/fstab

 ※ "/etc/fstab" 부분의 상세 내용은 아래글을 참조하여 주세요^^

 

2011/04/14 - [Linux/Tip & Tech] - "/etc/fstab" 파일을 활용하여 자동 마운트하기

 

3. 참고사항

- /etc/fstab 파일내 정의된 정보는 mount 명령어 사용시 Device 또는 Mount Point 만으로도 Mounting 이 가능

- /etc/fstab 파일의 편집에서 실수하는 경우 시스템이 로딩이 불가능할 수 있으므로 필히 백업하거나 Rescue 를 알아두기

 

 

##### Using File System (파일시스템 사용-추가) #####

CentOS 와 RHEL 을 기준으로 6.X 버전에서는 IDE Type 의 HDD 를 지원하고 있지 않습니다.

그래서 IDE HDD 를 추가하게 되면 "/dev" 로 표기되던 파티션 및 디스크정보가 순서가 뒤바뀌는 경우가

종종 발생하게 됩니다. 이를 방지하기 위해 UUID 라고 하는 물리주소를 이용하는데요.

위에서 배운 부팅시 자동마운트를 설정할때도 UUID를 이용하여 적용하는 사례가 많습니다.

아래의 "blkid" 명령어로 UUID 를 확인해서 적용하시면 문제가 해결될 수 있습니다.

 

- blkid -
1. 정의 : 블럭장치에 대한 속성 정보를 설정하거나 출력시 사용

 

2. 형식

   - #blkid    : 현재 시스템내 존재하는 모든 블럭장치의 UUID를 출력

 

   - #blkid -p -u filesystem 파티션

                 : 해당 파티션의 상세 속성정보 출력

AND

- 사용자/그룹 관련 파일 정보 -

 ※ /etc/passwd 영역별 내용 설명
    [noose:x:500:500:noose:/home/noose:/bin/bash]

       - noose : 사용자명
       - x : 비밀번호
       - (u)500:(g)500 : UID, GID
       - (c)noose : Comment(이름)
       - (d)/home/noose : 해당 사용자의 홈 디렉터리
       - (s)/bin/bash : 쉘(shell)


 ※ /etc/shadow 영역별 내용 설명
    [noose:$1$GtaDKM2q$MDhN4r8aOwwUEwNFgKbFL1:15349:0:99999:7:::]
       - noose : 사용자명
       - ?????????? : 비밀번호
       - 15349 : 비밀번호 생성일자
       - 0 : 비밀번호 만료 후 재설정까지의 인터벌
       - 99999 : 비밀번호 설정 후 만료까지의 인터벌
       - 7 : 비밀번호 만료 후 경고일자


 ※ /etc/group 영역별 내용 설명
    [bin:x:1:root,bin,daemon]
       - bin : 그룹명
       - x : 그룹 비밀번호 (/etc/gshadow)
       - (g)1 : 그룹번호(GID)
       - root,bin,damon : 그룹의 구성원
 

 ※ /etc/login.defs
  - MAIL_DIR : 사용자 추가시 해당 사용자의 메일함이 저장될 경로


  - PASS_MAX_DAYS : 비밀번호 만료기간
  - PASS_MIN_DAYS  : 비밀번호 만료 후 재설정 가능기간
  - PASS_MIN_LEN    : 비밀번호의 최소 길이
  - PASS_WARN_AGE : 비밀번호 만료 후 경고일자

 

  - UID_MIN          : UID가 가질 수 있는 최소값
  - UID_MAX         : UID가 가질 수 있는 최대값
  - GID_MIN          : GID가 가질 수 있는 최소값
  - GID_MAX         : GID가 가질 수 있는 최대값

 

  - CREATE_HOME              : 사용자의 홈 디렉터리를 생성할 것인지 여부
  - USERGROUPS_ENAB      : '/etc/group' 파일에 그룹을 생성할 것인지 여부
  - MD5_CRYPT_ENAB         : 사용자의 비밀번호를 md5 코드화 할 것인지 여부

 

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

- useradd -
1. 정의 : 사용자 생성할 때 사용

             - 사용자 정보 확인 : cat /etc/passwd [| grep 사용자명]

 

   [특징]
       - 사용자 정보 관련 파일 : /etc/passwd, /etc/shadow

       - 별도의 옵션을 지정하지 않는 한 사용자가 생성될 때
         해당 사용자명과 동일한 '그룹명' 과 기본 홈디렉터리
         아래로 '사용자명' 으로 디렉터리가 생성
         [ UserName => 1. ('-g' : X)/etc/group : GroupName(UserName)
                               2. ('-d' : X)/home  : /home/UserName             ]

 

2. 형식
  - #useradd [옵션] [Argument] [UserName]

 

3. 옵션
  - /etc/passwd 설명 참조!
  - "-m -k" : /etc/skel 의 디렉터리를 변경하여 사용자 생성 가능
                  (argument 부분에 생성된 Dir 입력할 것)

 

   [ 섭수! ]
 ※ 사용자 생성시 알아두기
   - 'uid/gid' 값을 수정하지 않으면 '/etc/passwd'를 참조하여 가장 큰 값의 'uid/gid'에서
      "+1" 값으로 생성된다.

   - 사용자 생성시 "-g" 옵션으로 별도의 gid를 입력하지 않으면 해당 사용자의 uid 값을
      그대로 가지는 gid 값으로 '/etc/group' 추가된다.

   - '-g' 옵션을 사용하는 경우는 '/etc/group' 파일내 정의된 그룹을 사용해야 함.

   - '-d' 옵션을 사용하는 경우는 $HOME으로 사용할 "+/Username" 까지 경로를 입력해야 함.

 

   [ /etc/skel (뼈대) ]
     ㄱ. 정의 : 사용자 추가때 $HOME 생성시 /etc/skel 디렉터리 내용을 참조하여
                   자동 복사형태로 $HOME 이 생성된다.
                   (생성된 사용자 $HOME 과 /etc/skel 의 내용이 동일하게 출력)

 

     ㄴ. 형식
         - #useradd [-m -k /etc/skel] [UserName]

 

     ※ 사용자 기본 참조 디렉터리를 변경하며 생성
         - #useradd -m -k /backup test8

            * 단, "-m -k" 옵션으로 생성한 사용자의 경우 bash-shell 정의 파일이 없으므로,
              로그인시 쉘 오류가 발생 -> /etc/skel 내용을 복사하는 번거로움 발생.

 

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

- useradd -D -
1. 정의 : 사용자 생성의 기본값 정의 (사용자 생성의 환경설정)

          [ 문서 파일 : /etc/default/useradd ]
          [ 명령어 : useradd -D ]

 

 ※ useradd -D 내용 설명
       - (g)GROUP=100         : 사용자 생성 시 기본 GID값이 100부터
       - (b)HOME=/home       : 사용자 생성 시 기본 디렉터리 (Base Home Dir)
       - (f)INACTIVE=-1        : 계정 만료일이 경과되면 사용금지(일) ('0'=만료 즉시 계정잠금 / '-1'=기능 사용 안함)
       - (e)EXPIRE=              : 계정 만료일을 지정(일)
       - (s)SHELL=/bin/bash   :  기본 쉘
       - SKEL=/etc/skel         : 사용자 생성시 자동 복사될 디렉터리
       - CREATE_MAIL_SPOOL=yes
          : 사용자 생성 시 계정명과 동일한 메일 계정 생성

 

2. 형식
  - #useradd -D [옵션] [Argument]

  - #vi /etc/default/useradd

 

[ useradd -D -b 지정시 유의사항 ]
  - 생성되지 않은 디렉터리를 HOME 값으로 지정하면 $HOME 생성불가 오류
  ※ HOME 값으로 지정할 디렉터리를 우선적으로 해당 Dir 생성할 것!
     ('-p' 옵션 적용도 확인)

 

  - Tab 키를 이용한 HOME 값 지정시 '/' 까지 입력되는 오류
  ※ Tab 키를 활용하지 않거나 또는 지정한 디렉터리의 마지막 '/'는 삭제할 것

 

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

- userdel (User Delete) -
1. 정의 : 시스템에 저장된 사용자 정보를 삭제

 

2. 형식
    - userdel UserName        : 사용자 계정만 삭제(/etc/passwd, /etc/shadow, /etc/group)
                                          사용자 디렉터리 삭제 안 됨. (권장사항)
    - userdel [-r] UserName   : 사용자 계정과 사용자 디렉터리
                                           (메일관련, 홈디렉터리 등 포함해서 삭제)

 

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

- usermod (User Modification) -
1. 정의 : 시스템에 저장된 사용자 정보 수정


2. 형식
  - #usermod [옵션] [Argument] [UserName]
     - 해당 명령어의 옵션은 'useradd' 명령어의 옵션과 유사

 

 ※ 사용자 $HOME 내용 변경할때 $HOME 디렉터리도 함께 이동
   - #usermod -d /hosting_users/home/test1 -m test1

        * 즉, 사용자 정보 수정시 $HOME 에 대한 정보(-d 옵션)를 변경하면
         '-m' 의 옵션을 이용해서 해당 디렉터리도 함께 이동이 가능

 

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

- groupadd -
1. 정의 : 시스템에 그룹을 생성하는 명령어

 

2. 설정파일 : /etc/group

 

3. 형식
     - #groupadd [옵션] [Argument] [GroupName]

        ※ 별도의 그룹을 생성하거나 사용자를 그룹에 지정하지 않는 이상
            사용자 생성과 동시에 한 개의 그룹이 자동 생성된다.

 

4. 옵션
   - g : 그룹에 대한 gid 값을 지정하여 생성할 수 있음

         ※ 옵션 X => /etc/group 에서 gid 번호가 가장 큰 수 +1 형태로 그룹이 추가
             옵션 O => /etc/group 에서 존재하는 그룹명/Gid 는 입력이 불가능
     

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

- groupmod -
1. 정의 : 시스템에 그룹을 수정하는 명령어
           
2. 형식
     - #groupmod [옵션] [Argument] [GroupName]

 

3. 옵션
   - g : "/etc/group" 파일내 gid에 해당하는 값을 수정

 

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

- groupdel -
1. 정의 : 시스템에 그룹을 삭제하는 명령어

 

2. 형식
     - #groupdel GroupName

  ※ "/etc/group" 파일내 GroupName 에 해당하는 라인을 삭제

AND

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

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

 

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

- 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