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

 사용자 관련 명령어

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

- 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