Media Log

우분투 처음 설치시 업데이트 경로가 kr.archive.ubuntu.com 로 되어 있다.

fftp.daum.net으로 바꿔 주면 업데이트 속도가 훨씬 빨라진다.


1.  vi를 통해서 수정할 파일을 열기.
     sudo vi /etc/apt/sources.list

2. kr.archive.ubuntu.com을 ftp.daum.net으로 변경
    :%s/kr.archive.ubuntu.com/ftp.daum.net/  <- vi 명령어 kr.archive.ubuntu.com를 찾아서 ftp.daum.net으로 변경해라


3. 수정한 파일을 저장하고 종료
    :wq

 4. 업데이트 서버 목록을 업데이트
     sudo apt-get update 


원문 : http://uniksy1106.tistory.com/222

1. 역방항 DNS조회

대형 포털에 메일을 보낼 경우
 - Mail from xxx.xxx.xxx.XXX not allowed - VS99-IP1 deferred - see help.yahoo.com/help/us/mail/defer/defer-02.html (#5.7.1)
- Your ip is filtered by RBL (http://realip.naver.com/rbl/rblinfo.html)(IP:203.231.70.XXX)(Caues:Blocked - see http://cbl.abuseat.org/lookup.cgi?ip=203.231.70.XXX)
이런 리턴메일이 오면 거절된거다.

포털에서 거절된 경우 역방향 DNS조회가 안되는 경우 스팸정책에 해당되어서 그런경우다.

메일서버 IP에대한 역방향 DNS조회가 가능하도록 한다.
우선 역방향 DNS가 내 메일 서버에서 가능하도록 설정되었는지 알아본다.
커맨드모드에서 nslookup을 실행 한 후 아래와 같이 한개씩 실행을 시켜준다.


87.118.156.121.in-addr.arpa 부분은 자기 메일서버 아이피를 거꾸로 입력하면된다.
역방향 DNS조회가 성공이면 처번째 네모 박스처럼 나올 것이고 실패하면 두번째 네모 박스처럼 나온다.

만약 역방향 DNS조회가 실패하면 해당 호스팅 업체에 본인의 메일도메인(mail.xxx.co.kr)에 대해 역방향 DNS 조회가 가능하도록 설정해달라고 하면된다.


2. 화이트도메인등록

"현재 국내 포털 웹메일들은
KISA 화이트 도메인이라는 통합 화이트 IP 서비스에 참여하고 있습니다. 기존까지 각사에서 'IP 등록' 등의 명칭으로 따로 관리하던 "신뢰할 수 있는 메일 발송 서버"의 목록을 2006년 9월부터 방송통신위원회 산하 한국정보보호진흥원의 "KISA 화이트 도메인"으로 통합한 것이지요."

예전에는 각 포털사이트마다 일일이 신고를 해야했는데 제도가 바뀌면서 일일이 신고를 안해도 되는거 같다.

https://www.kisarbl.or.kr/whiteip/whiteip_step1.jsp 요기서 화이트 도메인 등록을 한다. 절차에 따라 등록만 하면된다.

지금 이 순간에도 리눅스를 열심히 공부하고 계신분들에게 도움이 되고자 명령어 정리하였습니다.

     

1. at (atq, atrm)  

사용자가 원하는 시간에 프로그램 스케쥴링을 할 수 있다.
또한 앞으로 사용될 작업들을 확인해 볼 수 있으며(atq), 취소(atrm)도 가능하게 해준다. 주로 이것은 시스템 관리자가 시스템을 정리하고자 할 때 이용하고 있는 사용자에게 메시지를 전달하는 등 비교적 규칙적으로 서버에서 일어날 수 있는 일에 자주 사용한다.

▶사용 방법
at [-V] [-q] [-f] [-m|dbv] 시간설정
atq [-V] [-q] [-v]
atrm [-V] 작업

시간설정을 할 때는 다음과 같이 한다. now+[시간]이라는 명령은 현재부터(now) [시간]후에 작업을 실행하라는 명령이다. 이 [시간]의 자리에는 다음과 같은 명령어가 올 수 있다. "*minutes"(*분 후에 작업을 시행하라, "hours" "days" "weeks" "months" "years" 즉, 년 단위로도 작업을 지시할 수 있다. 또한 시간의 자리에 noon과 midnight라는 명령이 올 수도 있다.

-q queue 특별한 큐(작업 할당)를 사용한다.
-m 사용자가 지정한 시간에 일을 완료하였을 때 그 사용자에게 메일로써 알려준다.
-f file 사용자가 지정해 놓은 스크립트 파일을 읽어서 명령들을 실행한다.
-l atq 명령으로 현재 어떤 작업이 지시되어 잇는지를 확인한다.
-d atrm과 같은 명령으로 지시된 작업을 거둬들일 때 쓰는 명령이다.  


2. bg  

사용중인 프로그램의 수행을 백그라운드로 돌려서 실행한다.
백그라운드로 돌려서 실행한다는 말은 현재하고 있는 작업을 머추지 않고 다른 작업으로 나올 때 그 작업을 잠시 중지 시켜놓는다는 것을 뜻한다. 나중에 다시 그 작업으로 돌아가려면 포그라운드 명령인 fg라는 명령을 입력하면 된다. 이 멸령은 주로 ping과 같이 어떠한 일관된 작업이나, 계산작업을 수행하면서 프로세스의 동작 상태를 확인하면서 일을 진행해야 할 때 사용한다.

▶사용 방법
프로그램을 수행 중에 bg라고 입력하면 현재 수행중에 프로그램이 백그라운드로 돌려진다.

▶사용 예
bg%1배그라운드로 작업번호 1을 수행한다.Bourne와 Korn 쉘에서는 bg 1이라고 입력한다.  


3.batch  

시스템 적재가 허용되였을 때 명령 수를 차려로 실행한다.

▶사용 방법
#batch 명령을 내리면 at>라는 대기열이 기다린다.
여기서 <Ctrl>+<D>를 입력하면 입력이 종료되면서 차례로 명령이 수행된다.  


4. bc  

리눅스에 들어 있는 간단한 계산기 유틸리티이다.

▶사용 방법
#bc 명령을 입력하면 bc 유틸리티의 버전을 표시하는 화면이 나오고 사용자의 키보드 입력을 기다린다.이때 자신이 필요로 하는 계산식을 입력하면된다.
'warranty'라는 명령을 입력 하게 되면 설명서와 배포본에 관련된 설명이 나온다.종료할 때는'quit'명령을 입력한다.  


5. bash  

bash 셀이 아닌 사용자가 셀을 변경하고자 할 때 사용된다.
bourne-Agai Shell은 Brain Fox 와 Chet Remey에 의해서 처음 개발되었고 리눅스의 기본 쉘로 지정되어 있히든 파일을 살펴보면 된다.

▶사용방법
#bash <Enter> 만약 다른 셀을 사용하고 있는 사용자라면 다음과 같은 명령을 내리면 bash 셀로 바꿀 수 있다.  


6.cal  

화면에 간단히 달력을 출력하는 프로그램이다.
원하는 연도와 월의 달력을 출력한다.

▶사용 방법
cal[jy] [month] [year]
위의 옵션 중에서-y는 현재 연도의 달력을 모두 출력하는 명령어다.

   #cal -y 1999 하면 1999년의 달력이 모두 나온다.
   #cal 6 1998 하면 1998년도 6월의 달력이 나타난다.  


7. Cat  

표준 출력에 파일들을 연결하고 출력하기 위해 사용하다. 파일이 여러 개 있을 때 하나로 힙치거나 파일의 내용들을 출력하는 명령이다.

▶사용 방법
#Cat [-banstuvAET] file...

각 옵션의 의미는 다음과 같다.
-b   출력되는 파일의 내용 중에서 빈칸을 제외한 나머지에 번호를 매긴다
     이것은 소스코드 출력시 매우 유용하다
-n    출력되는 파일들의 내용들애 대해서 번호를 부여한다.
-t    -vt 옵션과 같은 내용이다.
-v    라인피드,TAB등 일부를 제외한 문자에 곤트롤 문자를 출력시킨다.
-E    라인의 끝에 $마크를 붙여서 출력한다.
-T    설정된 문자를'^|'로 표시하여 출력한다.
--help 도움말을 보여준다.
--version 프로그램의 버전을 보여준다


8. cd  

하나의 작업디렉토리를 변경하기 위해서 사용되는 내장된 셀 명령어

▶사용 방법
#cd /  디렉토리의 어디에 있든지 간에 루트 디렉토리로 이동힌다.
#cd..  현재 디렉조리의 상위 디렉토리로 간다.
#cd /mnt/cdrom'/mnt/cdrom  디렉토리로 변경힌다.  


9. chdir  

현재의 작업디렉토리를 변경히기 위한 C셀 명령어

▶사용 방법
#csh  <Enter>
csh로 변경한 후에 cd와 같은 의미를 가지는 명령어이다.


10. cksum  

파일의 checksum 순환적인 검사,파일의 크기 파일 이름을 출력한다.

▶사용 방법
#cksum [파일명]

파일명에 대한 검사와 크기 이름 등을 출력한다.  


11. clear  

화면의 전체 내용을 지우고 새로운 화면을 만든다(도스의 cls 같은 기능).

▶사용 방법
#clear <Enter>  


12. clock  

현재 시간을 출력해준다.

▶사용방법
#clock<Enter>  


13. cmp  

두 가지 파일이 있을 때 그것을 비교하는 명령이다.비교 후에 결과를 출력한다.

▶사용방법
#cmp [-cls][파일1][파일2]

출력값
0   파일이 같은 것을 의미
1   파일이 다르다는 것을 의미
2   에러가 발생했다는 것을 의미
-c   두 파일에서 틀린 문자를 출력한다.
-1   틀린 바이트의 10진수와 8진수를 출력한다.
-s   아무것도 출력하지 않는다.  


14. col  

nroff와 tbl로부터의 출력이 화면상에 니타나도록 한다.
입력받은 문자가 역 라인피드일 때 이것이 올바로 출력되도록 하는 것을 말한다.

▶사용방법
여기서 라인피드라는 의미는 줄을 바꾼다는 의미이다.

  ESC-7      역라인 피드
  ESC-8      역빈라인 피드
  ESC-9      순방향으로 반라인 피드
  backspace  한 칼럼을 뒤로 가게한다.
  newline    새로운 줄을 생성하게 한다.
  vertical   역 벙향 라인 피드
  shift in   일반적인 문자집합을 Shift 한다.
  shift out  문자집힙들 줄에서 선택적으로Shif 한다.

#col [-bfx][-1숫자]

  -b    backspce는 출력하지 않고 각 칼럼 위치에 마지막문자를 출력한다.
  -f    순방향  반라인 피드 허용  
  -x    탭 대신에 공백문자를 툴력한다.
  -1[숫자] 메모리에 [숫자]만큼의 버퍼를 확보한다.

colcrt
col 명령을 확인하는 기능을 가지고 있다.  


15. comm  

정렬돤 파일들 중에서 command-line을 찾는 명령어. 이 명령은 정렬되어 있는 두개    의 파일의 라인과 라인을 비교한다. 세가지의 형식을 가지고 있는데,첫 번째 라인에    는 첫 번째 파일에만 있는 것을 출력하고,두 번째 라인에는 두 번째 파일에만 있는    것을 출력하고 세 번째 라인에는 공통부분을 표시한다. 사용 전에 두 가지 파일이     정렬되어 있어야 한다.

▶사용 방법
#comm [-123][파일1][파일2]

-1   첫 번째 칼럼의 출력을 막는다.
-2   두 번째 칼럼의 출력을 막는다.
-3   세 번째 칼럼의 출력을 막는다.  


16. compress(uncompress)  

파일을 압축하기 위한 명령,이 파일 압축방법은 zip이 나오기 전까지 보편적인 압축기술이었다.확장자가'.Z'(대문자Z)로 생성된다.

▶사용 방법
#compress [-f][-v][-c][-V][-b][파일명]
#uncompress [-f][-c][-V][-b비트][파일명]

-f  주어진 파일 이름을 강제로 압축한다.만약 한 디렉토리에 같은 이름의
     파일이 있어도 무시고 압축한다.
-c  표준 출력 장치에 결과를 표시한다.
-b  압축 플래그를 결정할 수 있도록 해준다. 값은 9-16 사이의 값을 가진다.
-v  압축률을 퍼센트로 보여준다.  


17. cpio  

파일과 다렉토리를 패턴을 검색하여 복사하는 명령으로 3가지 모드를 가지고 있다.

▶사용방법
cpio[-o|--create][-acvABLV][-c바이트][-H포맷][-M message]
cpio [-p|-pass-through][-adlmuv][-c 바이트][-E 파일][-H 포맷][-M message]
cpio [-p|-paee-through][-adlmuvLV]

-a   두 파일을 읽기 전에 파일 접근시간을 0으로 만들어 준다.
-A   아카이브 파일에 추가시킨다.
-b   'copy-in'모드에서 half 워드의 바이트와 워드의 half 워드를 바꾼다.
-B   1/0블록 트기를 5120으로 맞춘다.
-C   오래된 아카이브 포맷을 사용한다.
-d   필요하면 디렉토리를 생성한다.
-f   패턴에 파일을 일치시키지 않고 복사한다.
-i   'copy-in'모드로 전환한다.
-f   모든 조건을 무시한다.
-l   가능하다면 파일을 복사하가보다 연결을 한다.
-L   심볼릭 링크를 탐색한다.
-m   파일의 수정시간을 유지시킨다.
-M   백업매체를 변경할 때 출력외는 메시지이다.
-o   'copy-out'모드로 전환한다.
-p   copy-pass'모드로 전환한다.
-r   파일이름을 바꿀 수 있도록한다.
-s   'clpy-in'모드에서 half워드의 바이트를 파일 내에서 변경한다.
-S   'clpy-in'무드에서 워드의 half 워드를 파일 내에서 변경한다.
-t   파일의 입력요소 테이블을 출력한다.
-u   모든 파일을 무조건 대치시킨다.
-v   작업하고 있는 파일의 리스트를 보여준다.

여기서 3가지 모드라는 것을 살펴보자.

1.copy-in 모드(-i)
이것은 아카이브 파일이나 아카이브 파일에 속해 있는 디렉토리의 내용을 현
재의 디렉토리에 복사한다.

2.copy-out모드(-o)
피일을 아카이브 파일로 복사한다.

3.copy-pass mode (-p)
하나의 디렉토리 트리를 다른 곳에 복사한다. 이것은 아카이브 파일과 상관
없이copy-in과 copy-out를 조합해서 사용한다.  


18. crontab  

지정된 시간에 다른 프로그램을 실행하면서 연속적으로 실행하는 프로그램,이와 유사   한 명령으로at 명령이 있다. 그러나 이 명령은 지장된 명령을 한번 밖에   수행하지   않는다.하지만,crontab 명령어는 일정한 간격으로 계속해서 명령을 실행 할 수 있다   는 것이 at 명령과 다른 점이다.

▶ 사용 방법
#crontab [파일][-u사용자]     crontab을 사용자파일로 대체한다.
#crontab-[-u사용자]           crontab을 표준입력으로 대채한다.
#crontab-l [사용자]           사용자를 위한 리스트를 보여준다.
#crontab-e[사용자]            사용자를 위한 crontab을 에디트한다.
#crontab-d[사용자]            사용자를 위한 crontab을 제거한다.  


19. csh  

c쉘의 내용을 호출한다. 이 명령은 bash 쉘을 부를 때와 같은 내용으로 접근하면 된   다.다시 한 번 말하지만 리죽스에서 사용 가능한 쉘은 많이 있다. 그중에 가장 많은   사람이 쓰는 쉘이 bash 또는 csh 이다. 이명령을 수행했을 때 표면적으로는 아무런    변 화가 없다  


20. csplit  

사용자가 지정한 위치에서 각 파일을 쪼개면서 파일을 더 작은 단위로 쪼갠다. 이 명령을 사용하면 cat으로 합쳐진 파일을 다시 분산시킬 수 있다.

▶사용방법
#csplit [-sqkz][-f prefix][-b suffix][-n digit] 파일패턴

-f     지정된 문자가 분리된 파일의 이름의 맨 앞쪽에 위치한다.
-b     지정된 문자가 분리된 파일의 맨 뒤쪽에 위치한다.
-n     정해진 개수 만큼 파일을 분할한다. 디폴트는 2개이다.
-k     에러가 발생해도 기존의 파일은 지우지 않는다.
-s     출력할 파일의 크기를 보이지 않는다.  


21. cut  

하나 이상의 파일에서 명령들 또는 필드들의 리스트들을 뽑아 낸다. 이 명령은 여러   개의 데이터들이 하나의 파일에 들어 있을 때 그곳에서 원하는 필드만 추출해 낼 때   유용하게 쓸 수있다.

▶사용방법
cut [-b 바이트리스트,--bytes=바이트리스트][-n][파일...]
cut [-c 캐릭터리스트,--characters=캐릭터리스트][파일...]
cut [-f,--fields=필드리스트]
[-ddelim][-s][-delimiter=delim][--only-delimited][파일...]

-b [바이트리스트]  
파일중에 바이트리스트에 위치한 곳의 정보를 추출해낸다.

-c [캐릭터리스트]  
파일 중에 캐릭터리스트에 위치한 곳의 정보를 추출해낸다.

-f [필드리스트]     파일 중에 필드에 위치한 문자의 정보를 추출한다.
-d delim            필드를 delim으로 구분한다.  


22. date  

시스템의 날짜나 시간을 고치려고 할 때 사용(슈퍼유저만 가능)

▶사용방법
#date [-u][-d datestr][-s datwstr][--utc][--universal][--date=datestr]
[--srt=datestr][+FORMAT][MMDDhhmm[[CC]YY][.ss]]
 
-d datestr    'datestr'에 의해서 시간과 날짜를 출력한다.
-s datestr    'datestr'에 의해서 시간과 날짜를 조절한다.
-u            국제표준 시간으로 지정하거나 조정할 때 사용한다.  


23. dd  

파일 복사 및 변환에 사용된다.

▶사용 방법
dd [if=file][of=file][lids-bytes][obs-bytes][bs=bytes][cbs=bytes]
    [skip=blocks][seek=blocks][count=blooks]
    [cov=ascii,ebcdic,ibm,block,unblock,lcase,ucase,swab,ncerror,
     notrunc,sync]]

  if=file        file로부터 입력을 받는 것을 의미
  of=file        file로 출력을 한다.
  ibs=bytrs      한번에 bytes 만큼
  obs=bytes      한번에 bytes 만큼
  bs=bytes       한번에 bytes 만큼
  cbs=bytes      한번에 bytes 만큼
  skip=bytes     bytes 만큼 건너 뛰고 출력을 시닥한다.
  count=bytes    bytes 만큼 건너 뛰고 복사를 한다.
  conconv=conversion....    conversion에 써진것에 의한 변환을 한다.
  'conversion'
  ascii          ebcdic을 ascii로 변환한다.
  ebcdic         ascii를 ebcdic로 변환한다.
  ibm            ascii를 ebcdic으로 변환한다.
  lcase          대문자를 소문자로 바꾼다.
  ucase          소문자를 대문자로 바꾼다.  
noerror        에러가 있어도 계속 진행을 한다.  


24. df  

현재 남아 있는 디스크의 용량을 표시해둔다.

▶사용방법
#df -aiktx [파일명]

-i   블록의 사용 공간을 출력하는 대신 inode 사용 정보를 출력한다.
-k   512k blocks 용량표시 대신 1k blocks 단위로 출력한다.
-t   측정 파일 시스템의 용량을 출력한다.
-x   특정 파일 시스템을 제외한 용량을 보여준다.  


25.diff  

두 개의 텍스트 파일의 차이를 라인 단의로 출력하는 명령이다.

▶사용방법
#diff  [옵션] from-파일-to file

   -a     모든 파일을 텍스트라고 간주하고 비교를 진행해 나간다.
   -b     스페이스 공간을 무시한다.
   -B     Insert 나 Delete 등의 공간을 무시한 비교를 한다.  


26. diff3  

세 개의 파일을 비교해서 출력하는 명령이다.  


27. dir  

Is와 같은 명령이다. 컬러가 아닌 화면을 보려면 이 명령을 입력한다


28. du  

디스크의 사용 상태를 보여준다.각각의 디렉토리 및 파일의 용량도 보여주도록
되어 있다.

▶사용밥법
   #du
[-abcklsxDLS][--all]--total][--count-links][00summarize][-bytes]kilobytes][0one-file-system][--separate-dirs][-dereference][--dereference-args][파일명]

   -a    디렉토리를 제외하고 모든 파일의 양을 출력한다.
   -b    용량을 바이트 단위로 출력한다.
   -c    총 용량을 표시한다.
   -k    크기를 kilobyte 단위로 표시한다.
   -l    하드링크된 파일아라도 파일크기를 출력한다.
   -s    총용량만 표시한다.  


29. echo  

아큐먼트로 오는 문장이나 그 주소에 해당되는 값을 출력해 준다.

▶사용방법
  #echo [-ne][string]

  -e   특수한 의미를 가지는 몬자를 실행한다.
  \a   벨소리를 낸다.
  \b   백스페이스
  \f   폼피드
  \n   새로운 라인
  \r   한줄을 띄운다.
  \t   가로망향의 탭
  \v   세로방향의 탭
  \\  역슬래쉬  


30. ed  

가장 간단한 에디터이다. 이 프로그램은 Dave Tayler에 의해서 적성된 메일프로그램 elm으로 간단히 메시지를 작성하거나 자주 사용하는 주소들을 정리해놓을 수 있다.  


31. env  

사용자의 환경이나 프로그램의 환경변수를 출력하고 변경할 수 있게 해준다.

▶사용방법
#env [-][-i][u 이름][--ignore-environment][--unset=이름][command[args]]

  -u     [이름] 환경에서 name에 해당하는 변수를 지우는 역할을 한다.
   -      환경을 적용하지 않는다.  


32. exit  

현재의 프로세서를 종결하고,빠져나간다.  


33. expand  

탭 문자를 공백이나 빈 칸으로 변환하는 명령

▶사용방법
expand [-tabstop][-tab1,tab2,...]파일명

이 명령은 표준출력에 결과를 쓰면서, 지정된 파일명이나,표준입력을 처리한
다.
모든 탭문자는 공백문자로 변환된다.  


34. export  

하나 이상의 쉘 변수에 광역 의미를 부여.하나의 쉘 스크립트에서 정의된 변수
는 다른 프로그램에서 사용하기전에export되어야 한다. bourne과korn 쉘에서 작동 되는 명령이다.

▶사용방법
#export [환경변수1][환경변수2]  


35. false  

쉘 스크랩에서 성공하지 못한 엑시트 상태를 리턴하기 위해 사용되는 널프로그래밍 명령이다.  


36. fc  

명령 히스토리 리스트를 출력 또는 편집.지금 까지 사용된 명령을 저장해놓은  히스토리 파일을 읽어온다.


37. fddormat  

플로피 디스크를 물리적으로 포맷하는 명령이다.

▶사용방법
  #fdformat [-n]device
  -n    포맷 후에 nerify를 하지 않는 것을 의미한다.

  device로는 다음과 같은 명령들이 사용된다.

   /dev/fdOd360  (minor=4)
   /dev/fdOh1200 (minor=8)
   /dev/fdOD360  (minor=12)
   /dev/fdOH360  (minir=12)
   /dev/fdOD720  (minir=16)
   /dev/fdOH720  (minir=16)
   /dev/fdOh360  (minir=20)
   /dev/fdOh720  (minir=24)
   /dev/fdOH1440 (minir=28)
   /dev/fd1d360  (minir=5)
   /dev/fd1h1200 (minir=9)
   /dev/fd1D360  (minir=13)
   /dev/fd1H360  (minir=13)
   /dev/fd1D720  (minir=17)
   /dev/fd1H720  (minir=17)
   /dev/fd1h360  (minir=21)
   /dev/fd1h720  (minir=25)
   /dev/fd1H1440 (minir=2)  


38. fg  

현재 지정된 작업을 포그라운드로 불러낸다. 이명령은 bg(백그라운드)명령과 같이사용될 것이다. 백그라운드 작업을 하던중에 fg를 입격하면 bg에 있던 작업이 앞으로 나온다.  


39. fgrep  

저정된 정규식과 재응되는 텍스트 문자열을 찾는 명령.grep 명령을 참조해 보  면 된다.  


40. file  

파일의 타입을 결정하고 각 파일 이름과 간단한 설명을 나열하고, 파일의 형식 을 출력한다.이 형식에는 디렉토리, 영문 텍스트, 아스키  텍스트 등이 사용될 수 있다. 이 명령은 /etc/magic이라는 파일을 참조한다.

▶사용방법
#file [-c][-z][-L][-f 파일명][-m /etc/magic 파일]

  -m [파일명] 파일명에 해당하는 파일을 magic 파일로 간주하여서 그것을 참
              조해서 파일형식을 구분한다.

  -c  magic   파일의 형식을 검사한다. 이 명령을 사용하면 파일에 부과된 설
               명문을 확인할 수 있다.  


41. finger  

현재 시스템에 있는 사람들을 검색해서 화면에 보여준다.

▶사용방법
fingr [OImsp][user][user@host]

-s   유저의 로그인,이름,실제시간,터미널이름,쓰기 상태,로그인 시간 등을
      출력한다.
-I   유저에 대한 자세한 정보를 출력한다.  


42. flex  

flex 개발툴의 리눅스버전  


43. ftp  

파일전송 프로토콜.이것은 외부이 있는 ftp 서버에 접속하여서 파일을 주고 받 을 때 사용하는 프로그램이다. 터미널 방식의 접속은 잘하지 않고xftp와 같은x 윈도우용 유틸리티를 이용한다.

▶사용방법
#ftp [-v][-n][-i][-n][d] [서버명]

  -v    원격서버에서 반환되는 모든 메시지를 보여준다.
  -n    처음 연결되었을 때 자동 로그인을 실행하도록 한다.
  -i    여러개의 파일전송시 프롬프트가 떨어지지 않도록 한다.
  -d    디버깅을 가능하도록 한다.
  get   파일을 다운로드받는 명령
  mget  여러개의 파일을 다운로드받는 명령
  put   파일을 업로드하는 명령
  bin   바이너리 파일을 다운로드하기 전에 바이너리 모드로 변경해야 한다.
        bin은 텍스트 모드에서 바이너리 모드로 변경할 때 사용하는 명령어
        이다.  


44. fvwm  

리눅스의 윈도우 매니저 중의 하나.지금까지 화면캡처된 것은 fvwm이라는 윈도우 매니저이다.다른 것으로 afterstep,twm,mwm 등의 윈도우 매니저가 있다.  


45. grep  

파일 중에서 어떠한 패턴을 검색한다.입력으로 파일이 오지 않으면 표준 입력으로부터 입력을 받는다.

▶사용방법
#grep[-[[AB]]숫자][-]CEFGVBchilnsvwx]] [-e]패턴 [-f파일]

  -A [숫자] 라인에서 패턴과  매치되는 문자열이 있는지 조사해서 그 이상  
            의 라인을 전부 출력한다.
  -B [숫자] 라인에서 패턴과 매치되는 문장열이 있는지 조사해서 존재하면
            그라인 이하를 전부 출력한다.
  -b        매치되는 라인과 그 바이트 수를 출력한다.
  -c        매치되는 라인 대신에 그 매치되는 개수를 출력한다.
  -f [파일] 파일로부터 패턴을 입력받는다.
  -n        매치되는 라인과 그라인수를 출력한다.
  -v        매치되지 않은 라인을 출력한다.
  -w        주어진 단어와 완전히 매치되는 라인을 출력한다.  


46. groups  

사용자가 속한 도든 그룹을 나열한다.  


47. gunzip  

유닉스의 대표적인 파일 압축유틸리티이다.

▶사용방법
gunzip [-acfhILnNrtvV][-S suffix][파일명]
gzip [-acfhILnNrtvV][-S suffix][파일명]
 
  -a   아스키 텍스트 모드이다.
  -b   압축을 푸는 명령어
  -f   파일이 이미 존재하더라도 강제적으로 압축을 하거나 해제한다.
  -I   압축왼 파일의 각각의 정보를 표시한다.
  -L   프로그램의 저작권이 표시된다.
  -r   각 디렉토리에 대한 재귀적 작업을 한다.
  -t   압축된 파일을 테스트한다.
  -v   압축을 하거나 풀 때 각 파일의 압축률을 보여주면서 압축을 한다.
  -V   프로그램의 버전을 출력한다.  


48. halt  

시스템을 종료시킬 때 사용하는  명령어이다.이것은 윈도우95의 시스템 종료
명령과 비슷하다. 한편, 시스템 재부팅과 같은 명령은 reboot 명령이 있다.

▶사용방법
halt [-t sec][-nq]  


49. hostid  

자신의 속한 시스템에서의 고유한id를 출력해 준다.이 명령이 필요한 이유는  어떤 리눅스 프로그램은 머신 ID라고 하여 고유의 시스템 ID에서만 작동하는   것이 있기 때문이다.

▶사용방법
  hostid [-v][숫자로된 ID]  


50. hostname  

자신이 속한 시스템의 호스트 이름을 나타내 준다.

▶사용방법
hostname [-d][--domain][-F 파일명]

-d           도메인내임 서비스를 이용한 보기
-F[파일명]   파일명에서 호스트 이름을 읽어온다.
-s           호스트 이름을 짧게 출력  


51. id  

사용자의 로그인명,ID,속해있는 그룹ID 등을 출력하는 명령이다.

▶사용방법
id [-gnruG][--group][--name][--real][--user][--groups][usename]

  -g    그룹 ID를 출력한다.
  -n    아이디 대신에 이름을 출력한다.
  -u    유저 아이디를 출력한다.  


52. info  

하이퍼 텍스트 도움말 시스템

▶사용방법

유닉스 계열 운영체계에서 info explorer 응용프로그램을 시작하기 위해서
사용한다.
ascii터미널과 X 윈도우 시스템 인터페이스의 커다란 하이퍼 텍스트 도움말  
시스템이다.  


53. install  

파일을 갱신하고 2진파일로서 인스톨하기 위해 makefile에서 종종 사용되는
유틸리티 이다.  


54. ipcs  

이 명령은 기다리는 프로세스, 공유메모리 세그먼트 메시지 큐에 관련된 정보를제공한다.디폴트 출력은 IPC 타입, 관련된 ID,키모드, 소유자,그룹을 나열한다.

▶사용방법
ipcs [optons]  


55. joe  

emacs에 기초한 텍스트 에디터  


56. join  

두 개의 파일에서 공통된 라인을 뽑아 내는 명령

▶사용방법
join [-aejt]파일1파일2

  -a     파일 n에서 n이 생략된다면 양쪽의 일치하지 않는 라인을 출력한다.
  -e     string 빈 필드를 string으로 대체한다.
  -jn m  파일 n의m번째 필드에서 두 개의 파일들을 조인한다.
  -o     일치하는 join 필드를 가진 각각의 행에 대해서 파일들에서출력하기
         위한 필드를 지정한다.
  -t     입출력을 위한 필드 구분자로 문자를 사용한다.  


57. kill  

현재 실행되어 있는 process ID를 입력하여서process를 종료하는 명령이다.
작업번호는 ps명령으로 알 수 있다.

▶사용방법
  kill [-s신호|-p][-a]  


58. last  

시스템에 마지막으로 접근한 사용자 list를 표시한다. 이 명령은 최소한의
보안조치로 사용된다.

▶사용방법

last [-숫자][-f 파일명][-t tty][-h hostname][-i 어드레스][-i][-v][파일명]

   -숫자          숫자만금 출력한다.
   -f [파일명]    파일명을 참조하여서 출력한다.
   -t  tty        로그인한 터미널을 추적한다.
   -y             로그인한 연도를 추가해서 출력한다.  


59. login, logout  

자신을 식별하고 시스템에 대한 액세스를 얻기 위해 사용하는 명령. 다른 사용 자로 다시 접속하기 위해서 로그인한다.

▶사용방법
#login [-fp] [사용자명]

-f [사용자명]   f다음에 입력한 사용자로 자동으로 로그인된다.
-g [사용자명]   그룹사용명으로 로그인한다.

터미널 상태에서 login이라고 입력하면 새롭게 리눅스 시스템에 다른 ID로
로그인할 수 있다. 물론 그전에 작업을 종료시킬 필요가 있다.  


60. lpr, lprm  

출력을 텍스트 파일로 보내는 명령과 보내진 츨력을 종료하는 명령이다.  


61. lpq  

현재 자신이 시스템에 내린 프린터 작업을 확인하는 명령이다.
프린터 명령인 lpr에 의해서 보내진 명령이 대기하고 있는 보습을 보여준다.

▶사용방법
lpq [-1][-Pprinter][job #...][사용자명]

  -l    프린트될 출력물들의 정보를 보여준다.  


62. lptest  

프린트를 테스트하는 명령어  


63. mail  

mail을 보내고 받고 확인하는 프로그램

▶사용방법
#mail -m t w e f F h p P q r b c i r n N s u v

  -m   type 메시지 머리부분에 메시지의 타입을 입력한다.
  -t   메시지 머리부분에 To:라는 받을 사람 표시부분을 출력한다.
  -w   메일을 보낸다.
  -e   메일이 존내하는지만 검사한다.
  -f filename   filename으로 지정된 곳에 있는 메일박스를 확인한다.
  -F names      모든 들어오고 나가는 파일명을 names에 저장한다.
  -h   여러 개의 메시지를 표시한다.
  -p   모든 메시지를 프린트한다.
  -P   모든 메시지와 머리부분을 프린트한다.
  -r   메시지 순서를 나중에 도착한 것부터 정렬한다.
  -b   list 사용자들의 list에 보이지 않는 복사본을 보낸다.
  -c   list 사용자을의 list에 복사본을 보낸다.
  -i   인터럽트를 무시한다.
  -n   시작할 때 mail.rc를 읽지 않는다.
  -N   메시지 헤더의 초기 출력을 해제한다.
  -s   주제를 정한다.
  -u   username username에 의해서 정해진 곳에서 메일을 읽는다.
  -v   메시지 전달의 세부사항을 표시한다.  


64. man  

리눅스의 온라인 매뉴얼 페이지를 출력한다.

▶사용방법
man [-adfhktwW][-m system][-p string][-C config_file][-M path][-P paper]
    [-S section_list][section][출력할 명령어]
 
  -M path    man 페이지를 찾기 위해 경로명을 검색한다.
  -a         디폴트로 선택되게 되어 있으며, 장 단위로 출력하는 명령이다.
  -h         한 라인의 도움말을 출력한다.
  -m <system>system에서 명령을 찾는다.
  -k         지정된 키워드를 가진 헤드라인을 보여준다.
  -w        지정된 section과 name 조합의 경로명을 나열한다.  


65. merge  

두 파일의 분리된 세트를 한 파일로 결합하는 명령

▶사용방법
#merge -pq filename1 filwname2

   -p   표준출력으로 결과를 내보낸다.
   -q   모든 메시지를 출력한다.  


66. mknid  

디렉토리 엔트리와 지정된 파일의 I-노드를 작성한다.

▶사용방법
#mknod -bcmps [파일또는 지렉토리]

  -m    공유 메모리를 작성한다.
  -p    파이프를 만든다.
  -s    세마포어를 생성한다.  


67. more  

파일의 내용을 한 화면씩 디스플레이 하는 필터 명령

▶사용방법
more [-dlfpcsu][-nmu][+/pattern][+linenumber][파일명]
 
-num   화면의 크기를 설정한다.
  -d   정의되어 있지 않은 키를 누르면 화면의 하단에 간단한 도움말이
       나타난다.
  -p   화면을 스트롤하지 않고 그 자리에 다음 화면을 표시한다.
  -s   여러 개의 빈 공간을 하나의 공간으로 축소한다.
+num  num 라인에서 시작한다.  


68. mount  

하드웨어 장치나 파일시스템을 현재의 시스템에 적용시키는 명령

▶사용방법
mount  -t [type][device point][miunt point]

-t [type]       type에는 파일시스템의 타입을 정의한다.
[device point]  장치가 인식된 파일주소를 적는다.
[miunt point]   마운트할 곳을 적는다.  


69. nice  

프로세스의 순위를 변경시킴(낮추어줌)  


70. nl  

텍스트 파일에 라인 번호를 추가시켜서 출력하는 명령

▶사용방법
#nl [-p][-d cc][-v 시작번호][-i증가][-l 라인][-s 라인분리][-w 라인폭]

-v    시작될 라인수를 설정한다.
-i    라인의 카운트 간격을 정한다.
-w    라인수 만큼 간격을 띄우고 출력을 시작한다


71. od  

8,10,16,진또는 파일의 ASCII 덤프를 만들기 위한 명령

▶사용방법
#od [-aBbcDdeFfHhliLIOovXx][[+offset[.][Bb]] fioe

  -b   바이트를 8진수로 출력한다.
  -c   바이트를 아스키 문자로 출력한다.
  -x   16진수 워드 단위로 출력한다.  


72. passwd  

자신의 패스워드를 변경하는 명령어

▶사용방법
#passwd <Enter>
패스워드 변경시 대문자 입력키인 Caps Lock키가 켜져 있지 않은지 주의하자.  


73. paste  

하나 이상의 파일로부터 열출력을 만들기 위해 사용

▶사용방법
#paste [-s][-d][-derial][파일명]

  -s   각 라인을 한줄로 합해서 출력한다.
  -d   라인을 구분하는 구분자를 사용한다.

  각기 다른 텍스트 파일을 서로 결합할 때 유용한 명령어이다.  


74. path  

셀의 시스템 경로명을 보여주거나 바꾸어준다.  


75. perl  

스크립트언어로서 여러 가지 프로그램을 할 수 있다.  


76. pine  

초보자나 임시로 email을 쓸 때 유용한 프로그램 명령

▶사용방법
#pine <Enter>

텍스트 처리 맻 파일 중의 철자를 검색한다


77. ping  

자신의 네트워크나 다른 네트워크가 통신이 잘되고 있는지 점검하는 기능

▶사용방법
#ping [hostname]

현재 host가 작동중인지 아닌지 테스트할 수 있다.혹시 접속이 잘 안 되는
사이트가 있다면 이 명령으로 내컴퓨터가 상대편 host로 신호를 전달할 수
있는지 없는지 점검할수 있다.  


78. pr  

어떤 지정된 옵션에 의해 텍스트 파일을 포맷하기 위해서 사용

▶사용방법
#pr [+page][-colum n][-abcdfFmrtv]

  +page&nbs
  퍼미션(권한)이란?

Owner

Group

Other

Owner와 Group은 파일소유자자신과 자신이 속한그룹. Other은 제3자, 웹사이트 방문객은 제3자로 nobody로 취급.

r

w

x

r

w

x

r

w

x

r은 파일 읽기(4), w는 파일 쓰기(2), x는 파일 실행(1)

7

5

5

파일소유자는 그것을 읽고 쓰고 실행시킬 수 있지만, 제3자는 읽고 실행만 시킬 수 있다.

7

7

7

제3자도 쓰기 권한이 주어진다.

*.html  *.cgi, *.pl *.txt등의 파일은 업로드시 반드시 ascii로 하고 나머지 그림(*.gif *.jpg)이나 자바 애플릿(*.class), 실행파일(*.exe *.zip *.rar)등은 binary mode로 업로드 할 것.

   리눅스 기본명령어

명령어

사 용 법

login

사용자 인증과정

리눅스 시스템은 기본적으로 multi-user 개념에서 시작하였기 때문에 시스템을 이용하기 위해서는 반드시 로그인을 하여야 합니 다. 로그인은 PC 통신에서도 많이 사용되어져 왔기 때문에 그 개 념  설정에 그다지 어려움이 없을 것입니다. 흔히 말하는 ID를 입력하는 과정입니다. 

passwd

패스워드 변경

리눅스, 특히 인터넷의 세계에서는 일반 컴퓨팅 상황에 비하여 훨씬 해킹에 대한 위험이 높습니다. 패스워드는 완성된 단어 보다는 단어 중간에 숫자나 키보드의 ^, #, ' 등과 같은 쉽게 연상 할 수 없는 기호를 삽입하여 만들어 주는 것이 좋습니다

du

하드사용량 체크(chkdsk)

자신의 하드공간을 알려면
# du
특정 디렉토리의 사용량을 알려면
# du -s diretory_name

ls

파일 리스트 보기(dir)

F : 파일 유형을 나타내는 기호를 파일명 끝에 표시
    (디렉토리는 '/', 실행파일은 '*', 심볼릭 링크는 '@'가 나타남).
l  : 파일에 관한 상세 정보를 나타냅니다.
a : dot 파일(.access 등)을 포함한 모든 파일 표시.
t  : 파일이 생성된 시간별로 표시
C : 도스의 dir/w명령과 같 이 한줄에 여러개의 정보를 표시
R : 도스의 dir/s 명령과 같이 서브디렉토리 내용까지.

(예)
# ls -al  
# ls -aC
# ls -R

cd

디렉토리를 변경

# cd cgi-bin     : 하부 디렉토리인 cgi-bin으로 들어감.
# cd  ..             : 상위디렉토리로 이동
# cd 또는 cd ~  : 어느곳에서든지 자기 홈디렉토리로 바로 이동
# cd /webker     : 현재 작업중인 디렉토리의 하위나 상위 디렉토리가
                          아닌 다른 디렉토리(webker)로 이동하려면 /로
                          시작해서 경로이름을 입력하면 된다.

cp

화일 복사(copy)

# cp index.html index.old
     : index.html 화일을 index.old 란 이름으로 복사.

# cp /home/test/*.*  .
     : test 디렉토리내의 모든 화일을 현 디렉토리로 복사.

mv

파일이름(rename) / 위치(move)변경

# mv index.htm index.html
     : index.htm 화일을 index.html 로 이름 변경

$ mv file  ../main/new_file
     : 파일의 위치변경

mkdir

디렉토리 생성

# mkdir download  : download 디렉토리 생성

rm

화일삭제

# rm test.html : test.html 화일 삭제
# rm -r <디렉토리> : 디렉토리 전체를 삭제
# rm -i a.*
     : a로 시작하는 모든 파일을 일일이 삭제할 것인지 확인하면서 삭제

rmdir

디렉토리 삭제

# rmdir cgi-bin : cgi-bin 디렉토리 삭제

pwd

현재의 디렉토리 경로를 보여주기

pico

리눅스용 에디터

put

ftp 상태에서 화일 업로드

> put  guestbook.tar.gz

get

ftp 상태에서 화일 다운로드

> get  guestbook.tar.gz

mput 또는 mget

여러개의 화일을 올리고 내릴때 (put,get과 사용법동일)

chmod

화일 permission 변경

리눅스에서는 각 화일과 디렉토리에 사용권한을 부여.

예) -rwxr-xr-x   guestbookt.html
rwx  :처음 3개 문자 = 사용자 자신의 사용 권한
r-x  :그다음 3개 문자 = 그룹 사용자의 사용 권한
r-x  :마지막 3개 문자 = 전체 사용자의 사용 권한

읽기(read)---------- 화일 읽기 권한
쓰기(write)---------- 화일 쓰기 권한
실행(execution)---------- 화일 실행 권한
없음(-)---------- 사용권한 없음

명령어 사용법
chmod [변경모드] [파일]

# chmod 666  guestbook.html
     : test.html 화일을 자신에게만 r,w,x 권한을 줌

# chmod 766  guestbook.html
     : 자신은 모든 권한을 그룹사용자와,전체사용자에게는
       읽기와 쓰기 권한만 줌

alias

" doskey alias" 와 비슷하게 이용할 수 있는 쉘 명령어 alias는 말그대로 별명입니다. 사용자는 alias를 이용하여 긴 유 닉스 명령어를 간단하게 줄여서 사용할 수도 있습니다.
이들 앨리어스는 [alias ls 'ls -al'] 같이 사용하시면 되는데, 한 번 지정한 alias를 계속해서 이용하시려면, 자신의 홈디렉토리에 있는
.cshrc(Hidden 속성)을 pico등의 에디터를 이용하여 변경시 키면 됩니다.

cat

파일의 내용을 화면에 출력하거나 파일을 만드는 명령( 도스의 TYPE명령)

# cat filename

more

cat 명령어는 실행을 시키면 한 화면을 넘기는 파일일 경우 그 내용을 모두 볼수가 없다. 하지만 more 명령어를 사용하면 한 화면 단위로 보여줄 수 있어 유용.

# more <옵션>
옵션은 다음과 같습니다.

Space bar : 다음 페이지
Return(enter) key : 다음 줄
v : vi 편집기로 전환
/str : str 문자를 찾음
b : 이전 페이지
q : more 상태를 빠져나감
h : 도움말
= : 현재 line number를 보여줌

who

현재 시스템에 login 하고 있는 사용자의 리스트를 보여줍니다.

# who

whereis

소스, 실행파일, 메뉴얼 등의 위치를 알려줍니다

# whereis perl : perl의 위치를 알려준다

vi,
touch,
cat

새로운 파일을 만드는 방법

# vi newfile :  vi 편집기 상태로 들어감
# touch newfile : 빈 파일만 생성됨
# cat > newfile  : vi 편집기 상태로 들어감, 문서 작성후 Ctrl+D로 빠져나옴

cat,
head,
tail

파일 내용만 보기

# cat filename         : 파일의 내용을 모두 보여줌
# head -n filename : n줄 만큼 위세서부터 보여줌
# tail -n filename     : n줄 만큼 아래에서부터 보여줌


   압축명령어 사용법

압축 명령어

사 용 법

tar .tar, _tar로 된 파일을 묶거나 풀때 사용하는 명령어
(압축파일이 아님)

# tar cvf [파일명(.tar, _tar)] 압축할 파일(또는 디렉토리): 묶을때
# tar xvf [파일명(.tar, _tar)]  :  풀 때
   (cf) cvfp/xvfp 로 하면 퍼미션 부동
compress 확장자 .Z 형태의 압축파일 생성

# compress    [파일명]     : 압축시
# uncompress [파일명]    : 해제시
gzip 확장자 .gz, .z 형태의 압축파일 생성

#  gzip     [파일명]    : 압축시
#  gzip -d [파일명]   : 해제시
기타 .tar.Z
이것은 tar로 묶은 후에 compress를 사용하여 압축한 것으로 uncompress를 사용해서 압축을 푼 다음,
다시 tar를 사용해서 원래의 파일들을 만들어내면 됩니다.
아니면 다음과 같이 한 번에 풀 수도 있다.
# zcat  [파일명].tar.Z  : 해제시

.tar.gz또는 .tar.z
# gzip -cd [파일명]    : 해제시

.tar.gz 또는 .tar.z .tgz
gzip을 사용해서 푼 다음 다시 tar를 사용해서 원래 파일을 만들어 낼 수 있으나,
하지만 다음과 같이 하면 한 번에 처리를 할 수 있다.

# gzip -cd 파일.tar.gz | tar xvf -  또는
# tar xvzf 파일.tar.gz
# tar xvzf 파일.tgz

   리눅스 필수명령어

Linux/Unix 명령어

설 명

MS-DOS 비교

./x

x 프로그램 실행
(현재 디렉토리에 있는 것)

x

/

이전에(↑) / 다음에(↓) 입력했던 명령어

doskey

cd x (또는 cd /x)

디렉토리 X로 가기

cd

cd .. (또는 cd ../ 또는 cd /..)

한 디렉토리 위로 가기

cd..

x 다음 [tab] [tab]

x 로 시작하는 모든 명령어 보기

-

adduser

시스템에 사용자 추가

/

ls (또는 dir)

디렉토리 내부 보여주기

dir

cat

터미널 상의 텍스트 파일 보기

type

mv x y

파일 x를 파일 y로 바꾸거나 옮기기

move

cp x y

파일 x를 파일 y로 복사하기

copy

rm x

파일 지우기

del

mkdir x

디렉토리 만들기

md

rmdir x

디렉토리 지우기

rd

rm -r x

디렉토리 x를 지우고 하위도 다 지우기

deltree

rm p

패키지 지우기

-

df (또는 df x)

장치 x의 남은 공간 보여주기

chkdsk ?

top

메모리 상태 보여주기(q는 종료)

mem

man x

명령어 x에 관한 매뉴얼 페이지 얻기

/

less x

 텍스트 파일 x 보기
(리눅스에서는 더 많은 필터 적용 가능)

type x | more

echo

어떤 것을  echo 화면에 인쇄한다.

echo

mc

UNIX를 위한 노턴 커맨더

nc

mount

장치 연결(예: CD-ROM, 연결을 해제하려면 umount)

-

halt

시스템 종료

-

reboot ([ctrl] + [alt] +[del])

시스템  다시 시작하기

[ctrl] + [del] + [del]

    고급명령어

 고급 명령어

 

chmod <권한> <파일>

파일 권한(permissions) 변경

ls -l x

파일 x의 자세한 상황을 보여줌

ln -s x y

 x에서 y로 심볼릭 링크를 만들어 줌

find x -name y -print

디렉토리 x안에서 파일 y를 찾아서 화면에 그 결과를 보여줌

ps

지금 작동중인 모든 프로세스들을 보여줌

kill x

 프로세스 x를 종료 (x는 ps 명령으로 알 게 된 PID)

[alt] + F1 - F7

 터미널 1-7까지 바꾸기 (텍스트 터미널에서; F7은 X-윈도우(시작될때))

lilo

 부트 디스크를 만듦

 

용어


symlink

다른 파일이나 디렉토리로 심볼릭 링크. 윈도유98의 바로가기 같은 것

shell script

여러 명령어들을 차례로 수행하게 한 것. MS-DOS의 배치 파일 같은 것

     팁!!

 - 웹에서 생성한 노바디파일 삭제 하는방법..

기본적으로 웹서버는 nobody 권한으로 동작이 되게 됩니다.
고객님께서 FTP 로 접속하여 전송한 파일이 아니라 웹상에서 사용자들이 파일을 업로드 한 경우나 웹상에서 생성된 파일의 경우 삭제가 되지 않는 경우가 있을 수 있습니다.

웹서버의 동작 권한은 nobody 이고 웹상에서 생성된 파일이므로 해당 파일이 nobody 소유권으로 시스템에 생성이 되게 됩니다.

아래와 같이 웹상에서 실행시키면 됩니다.

1. 메모장을 열어 아래 소스를 붙여넣기 하신후..

<?

//폴더/파일 삭제시

$cmd = `rm -rf 노버디로된파일혹은폴더명`;

echo "$cmd";

echo "폴더가 삭제 되었습니다.";

?>

-- 위에까지..
-- **위에서 수정할 사항은 "노버디로된파일혹은폴더명"을 삭제하시고자 하는 파일명으로 바꿔주세요..

2. 파일 -> 다른이름으로저장 -> 아래 탭에서 파일형식을 "모든파일"로 선택후

   -> "원하는파일명.php" 로 저장 (ex: del.php)

3. ftp를 통해 고객계정에 파일업로드를 하시고 웹에서 파일을 불러주시면 됩니다

   ex: html폴더안에/temp 안에 삭제하고자하는 파일이 있을경우 / html폴더/temp안에 del.php를 업로드하고..

       브라우저에서 http://고객도메인/temp/del.php 를 하면 됩니다

4. 실행하시면 삭제되고 nobody 권한의 폴더만 남습니다.(폴더안의화일들만 지워짐)

   그후 ftp 접속후 폴더를 삭제하시면 됩니다.

ex)

<?

퍼미션 변경시

$cmd = `chmod -R 777 노버디로된파일혹은폴더명`;

echo "$cmd";

echo "퍼미션 변경되었습니다.";

?>

국가별 접속 차단 방법


일반적으로 파이어월의 기본 정책은 허용할 것을 제외한 나머지는 모두 차단하는 것이다. 그런데 필요에 따라 국가별로 접속을 제한해야 할 필요가 있다. 이를테면 특정 국가에서 비정상적인 접속 요청이 들어온다거나, 국내에서만 telnet이나 ftp 접속을 허용해야 할 때는 이같은 국가별 접속 차단을 사용해야 한다. 하지만 국가별 IP 현황을 조사해 모든 IP 대역에 대해 일일이 접근 설정을 한다는 것은 불가능한 일이다. 하지만 리눅스 파이어월인 iptables를 이용하면 이같은 기능을 쉽게 구현할 수 있다.


먼저 ‘people.netfilter.org/peejix/geoip/database/’에서 geoipdb.bin과 geoipdb.idx 파일을 다운로드한다. 그리고 iptables가 설치된 파이어월에 ‘/var/geoip’ 디렉토리를 생성하고, 이 디렉토리에 두 파일을 옮긴다. 여기에서 geoipdb.bin은 국가별 IP 대역에 대한 바이너리 포맷의 데이터이고, geoipdb.idx는 인덱스 파일이다.


geoip 라이브러리가 ‘/var/geoip’ 디렉토리를 참조하기 때문에 디렉토리명은 반드시 정해진 명칭을 사용해야한다. 이제 iptables에서 geoip를 사용하기 위해 커널을 패치할 차례다.
먼저 고급 기능을 이용할 수 있도록 커널을 패치하는 p-o-m을 다운로드하면 되는데 ‘ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/’에서 최신 버전을 다운로드받을 수 있다.
이제 p-o-m을 압축해제하고, 다음과 같이 실행한다.


# tar xfz patch-o-matic-ng-XXXXXX.tar.gz
# cd patch-o-matic-ng
# IPTABLES_DIR=/usr/srt/iptables KERNEL_DIR=/usr/srt/linux ./runme geoip


다음은 kernel 메뉴에서 geoip를 사용하도록 실행할 차례다. ‘make menuconfig’ 실행 화면에서 다음과 같이 선택해 들어간 상태에서 최종적으로 ‘[*] geoip match support’를 선택하면 된다.


Device Drivers
-> Networking support
-> Networking support
-> Networking options
-> Network packet filtering (replaces ipchains)
-> IP: Netfilter Configuration
-> [*] geoip match support


이후 iptables 역시 ‘ftp.netfilter.org/pub/iptables/’에서 최신 버전을 다운로드받아 설치한다.
커널 컴파일을 완료한 후 새로운 버전의 커널로 부팅하면 이제 iptables의 geoip를 사용할 준비가 된 것이다. 사용할 수 있는 옵션은 --srt-cc와 --dst-cc가 있는데, 각각 뒤에 국가 코드명을 넣으면 된다. 예를 들어 확인해 보자.


- 일본과 미국에서의 웹 접속을 차단하고 다른 곳에서의 접속은 허용할 때

iptables -A INPUT -p tcp --dport 80 -m geoip --srt-cc JP,US -j DROP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

- 한국에서의 ftp만 허용하고 나머지 국가에서의 접속은 차단하고자 할 때

iptables -A INPUT -p tcp --dport 21 -m geoip --srt-cc KR -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j DROP

또는 iptables -A INPUT -p tcp --dport 21 -m geoip ! --srt-cc KR -j DROP


실제로 운영중인 서버에 설정한 결과 서버가 느려지거나 부하가 늘어나는 일은 없었다. 이를 적절히 활용한다면 다양한 응용이 가능할 것이다.


리눅스에서도 윈도우처럼 자동 업데이트하기


리눅스에 비해 윈도우의 장점중 하나는 업데이트가 쉽고 편리하다는 것이다. 특히 최근처럼 보안 문제가 이슈화되는 시기에 이는 더욱 민감한 문제가 아닐 수 없다.


더구나 윈도우의 경우 자동으로 현재의 환경을 체크해 업데이트할 항목을 바로 보여주지만, 리눅스 서버를 운영하다보면 어떤 패키지를 업데이트해야 할지도 모르겠고, 일일이 찾아서 업데이트하는 것 역시 여간 불편한 일이 아닐 수 없다.


특히 rpm 등 패키지 형태로 많이 사용하는 리눅스의 경우 업데이트 때문에 의존성 등 다른 문제가 발생하지 않을까 하는 막연한 두려움이 있는 것도 사실이다. 그러나 그 중에서도 가장 큰 문제는 리눅스 서버가 여러대가 있을 경우, 버전이 각기 다른 서버에 로그인해 버전 확인 후 일일이 패치하는 것은 시간과 인력이 많이 소요되는 일이라는 점이다.


그런데 이제 이 문제를 시원하게 해결해 줄 수 있는 솔루션이 나왔고 점차로 사용자 층도 넓어지고 있다.
이는 yum이라는 것으로, ‘Yellow dog Updater, Modified’의 약자로 미국의 듀크대학에서 파이썬(python) 언어로 개발되고 있다. yum에 대한 자세한 내용은 홈페이지(linux.duke.edu/projects/yum/)를 참고하기 바란다.


[그림1] yum 사이트

yum 사이트에서 제공되는 yum rpm 또는 소스 파일을 설치한 후 간단히 yum을 실행하면 현재 시스템에 설치돼 있는 rpm 버전 정보와 최신 업데이트 버전 정보를 비교한다. 좀 더 정확히 얘기하자면 rpm의 헤더 정보를 비교해 업데이트 여부를 확인하고 이에 따라 업데이트를 시작한다.
yum의 주 설정 파일인 /etc/yum.conf 파일에는 업데이트하는 서버의 목록이 지정돼 있는데, 여러 곳에서 업데이트 서버를 제공하고 있으므로 신뢰할 수 있으며, 빠른 서버를 직접 지정해 사용할 수 있다. 만약 수십 대 이상의 많은 서버를 운영하는 상황에서 해외 서버로부터 직접 업데이트하려면 속도 저하 등이 발생할 수 있으므로 자체적으로 yum 서버를 구축해 운영할 수도 있다. 필자의 회사에서도 yum 업데이트 서버를 한 대 운영하고 있어, 초기 리눅스 설치 후에는 반드시 yum을 실행해 자동 패치를 하고 있는데, CD로 설치 후 약 5분 정도만 실행하면 패치작업이 완료될 정도로 빠르다.
rpm 등으로 yum을 설치한 후 아무런 옵션 없이 yum을 실행하면 다음과 같이 현재 사용할 수 있는 옵션을 보여주는데, 일반적으로 update와 install을 많이 사용하므로 이 옵션 정도만 알고 있으면 된다.


# yum
Usage: yum [options]

Options:
-c [config file] - specify the config file to use
-e [error level] - set the error logging level
-d [debug level] - set the debugging level
-y answer yes to all questions
-t be tolerant about errors in package commands
-R [time in minutes] - set the max amount of time to randomly run in.
-C run from cache only - do not update the cache
--installroot=[path] - set the install root (default '/')
--version - output the version of yum
--exclude=some_pkg_name - packagename to exclude - you can use this more than once
--download-only - only download packages - do not run the transaction
-h, --help this screen


이 중에서 가장 많이 사용하는 것은 바로 ‘yum -y update’인데, 이를 실행하면 현재 시스템에 설치돼 있는 rpm의 헤더 정보와 업데이트 서버에 있는 헤더 정보를 비교해 최신 rpm으로 자동 패치를 시작한다. 여기에서 -y는 일일이 설치 여부를 묻지 않고 업데이트한다는 의미로 만약 -y를 지정하지 않으면 매번 업데이트할 패키지마다 업데이트할 것인지 yes or no로 묻게 된다. 따라서 ‘yum -y update’를 cron에 걸어두면 매 일정 시각마다 자동으로 업데이트하므로 일일이 패치를 하지 않아도 언제나 시스템을 최신 패치된 상태로 유지할 수 있다.
rpm 업그레이드나 설치시 무엇보다도 문제될 수 있는 것이 바로 의존성(dependency) 문제다. yum은 이 문제를 자동으로 해결하므로 의존성 관련 문제는 걱정하지 않아도 된다. 다음은 yum을 실행한 결과인데, 현재 모든 패키지가 업데이트돼 있다는 것을 알 수 있다.


# yum -y update
Gathering package information from servers
Server: Red Hat Linux 3 base
Server: Red Hat Linux 3 updates
Finding updated packages
Downloading needed headers
No Packages Available for Update
No actions to take


다음에서는 lsof라는 rpm이 설치돼 있지 않을 때, install을 실행해 자동으로 설치하는 예를 보여주고 있다.


# yum install lsof
Gathering package information from servers
Server: Red Hat Linux 3 base
Server: Red Hat Linux 3 updates
Finding updated packages
Downloading needed headers
Resolving dependencies
Dependencies resolved
I will do the following:
[install: lsof.i386]
Is this ok [y/N]: y
Calculating available disk space - this could take a bit
lsof 100 % done
Installed: lsof.i386
Transaction(s) Complete


특정 포트를 점유하는 프로그램 확인


외부에서 포트스캔 등을 통해 확인해 보면, http(80)나 ftp(21) 외에 본인도 모르는 포트가 사용중인 경우가 있다. 이를테면 tcp 5000번 포트가 열려있는 것을 확인하고 텔넷으로 접속할 경우 접속까지도 가능한 경우도 있다. 이같은 경우 이 포트를 점유하고 있는 프로세스가 무엇인지 알아볼 필요가 있다.

윈도우 시스템의 경우 전통적으로 fport.exe라는 프로그램을 이용하지만, 커맨드 방식이고 몇 가지 불편한 점이 있어 최근에는 GUI 방식이면서 프로세스 삭제 등도 제공되는 cports라는 프로그램이 자주 이용되고 있다. 이 프로그램은 'www.nirsoft.net/utils/cports.html'에서 자유롭게 다운받을 수 있으며, [그림 2]와 같이 현재의 프로세스와 연결상태, 특정 포트를 사용하는 프로세스 정보 등을 직관적으로 알 수 있게 보여준다. 또한 특정 프로세스의 상태도 보여주고, 오른쪽 마우스를 클릭하면 직접 프로세스를 죽일 수도 있다.


[그림2] cports 프로그램

반면 리눅스의 경우 다소 번거로운 것이 사실인데, fuser나 netstat 명령을 이용하면 확인할 수 있다. 이 명령어들은 대부분의 시스템에서 기본적으로 이용할 수 있는데, 혹 명령어가 실행되지 않으면 해당 패키지를 찾아 설치하면 된다.

- fuser
fuser는 특정한 파일이나 파일 시스템을 사용하고 있는 프로세스의 pid를 보여주는 명령어로 ‘fuser ?n tcp 10101’과 같이 실행하면 10101번 포트를 사용 중인 프로세스 id를 보여준다. 물론 udp 포트일 경우에는 ‘fuser ?n udp 53’과 같이 사용하면 된다.
이때 프로세스 id가 570번이라는 것을 확인했다면 pid 570번을 사용하는 프로세스를 확인해야 하는데, 이는 ‘ps aux’로 확인하거나 ‘ls ?la /proc/570/’의 결과 중 ‘exe->’가 가리키는 부분을 확인하면 된다. ‘exe->’가 가리키는 경로는 현재 실행 파일을 의미하며, ‘cmd->’는 실행 파일이 참조하는 파일이나 디렉토리의 경로를 알려준다.
만약 ‘exe -> /home/user1/hacking/hacking*’이라고 표시돼 있으면, 이 경로에 있는 파일이 10101번 포트를 바인딩하고 있는 프로세스라는 것을 확인할 수 있다.
그런데, 가끔 백도어 포트 등을 점검하다 보면 ‘ls -la /proc/pid’와 같이 확인했을 때 ‘exe -> /home/user1/hacking/hacking (deleted)’와 같이 보이는 경우가 있다. 실제로 ‘/home/user1/hacking/’ 디렉토리에 가서 확인해 보면 hacking이라는 파일이 없는데, 프로세스에는 떠 있게 된다. 이는 공격자가 hacking이라는 백도어 파일을 실행해 커널 메모리에 올린 후에는 해당 파일을 삭제해, 백도어로서 작동은 하지만(이미 커널 메모리에 올라가 있으므로) 흔적은 남기지 않기 위한 방법으로 많이 사용되는 방법이다. 이같은 경우 파일은 삭제됐어도 메모리에는 남아있기 때문에 ‘cp /proc/pid/exe /root/test’라고 실행하면 삭제된 원본 파일을 ‘/root/test’라는 파일로 복구할 수 있다.

- netstat
간단히 사용할 수 있는 다른 명령어로서 다음과 같이 터미널 상에서 netstat을 실행해 보는 방법도 있다. netstat는 많은 옵션을 제공하고 있는데, 현재 시스템에서 특정 포트를 점유해 소켓 데몬 형태로 대기 중인 서비스에 대한 사항은 listen의 의미인 -l 옵션을 주면된다. 더불어서 -p 옵션을 주면 해당 포트를 사용 중인 프로그램 이름도 확인할 수 있다.


[그림3] 리눅스에서..

[그림3]의 경우를 보면 좌측에 현재 열려있는 포트를 알 수 있으며, 우측에 있는 정보를 보면 해당 포트가 어떤 PID(Process ID)며 어떤 프로그램인지 확인할 수 있다. 만약 포트 2265/tcp을 점유하고 있는 프로세스 정보를 알고자 한다면 pid가 587이고 프로그램 이름이 osirisd인 것을 알 수 있는데, 좀 더 상세히 알고자 한다면 앞에서 살펴본 바와 같이 ‘ls -la /proc/pid’를 실행하면 된다.
그리고, 만약 특정 프로세스가 정상적인 것이 아니라면 ‘kill ?9 570’(570은 pid) 또는 ‘killall ?9 ?ev hacking’(hacking은 ps auxc 실행 시 보이는 프로세스 이름)으로 해당 프로세스를 강제로 죽이면 포트도 닫힌다.

DNS Zone 전송 차단하기

DNS zone 전송(transfer)은 마스터(master)와 슬레이브(slave) 간에 zone 파일을 동기화하기 위한 용도로 사용되는 기술이다. 그런데, 이 zone 전송 보안 설정을 제대로 하지 않아 심각한 보안문제를 유발하는 경우가 많다. 이로 인해서 직접 시스템이 다운되거나 장애가 유발되는 것은 아니지만, 문제는 중요한 정보를 외부에 유출할 가능성이 있다는 것이다.
특히 대규모 사이트 일수록 그 피해가 큰데, 앞에서 언급한 것처럼 zone 전송은 마스터와 슬레이브 간의 zone 파일 전송이므로 마스터와 슬레이브 사이에만 허용돼야 하지만, 실제로는 접근 통제가 거의 이뤄지지 않고 있다. 국내에서도 손꼽히는 한 대형 포털의 예를 들어 이의 문제점을 살펴보도록 하자.

① 먼저 whois 질의를 통해 해당 도메인의 DNS 정보를 확인한다.

whois xxxx.com
NS1.xxxx.COM 211.xx.xx.xx
NS2.xxxx.COM 211.xx.xx.xx
(정보를 일부 수정하였음)

② 해당 DNS 서버로 zone 전송을 시도해 본다. Zone 전송은 nslookup이나 host, dig 등으로 모두 확인할 수 있다. 여기서는 dig를 사용해 보겠다.

# dig @NS1.xxxx.COM xxxx.com axfr

; <<>> DiG 9.2.1 <<>> @NS1.xxxx.COM xxxx.com axfr
;; global options: printcmd
; Transfer failed.

참고로 이 명령어는 NS1.xxxx.COM DNS에 xxxx.com이라는 도메인에 대해 zone 전송을 한다는 의미다. 마스터 DNS인 NS1.xxxx.COM에 질의하면 이같이 전송이 실패했다는 에러 메시지(Transfer failed)가 표시된다. 이는 해당 IP에서의 zone 전송이 거부됐다는 메시지로 NS1.xxxx.COM에서 정상적으로 차단하고 있다는 것을 알 수 있다. 이번에는 슬레이브 DNS인 NS2.xxxx.COM에 질의를 해 봤다.


# dig @NS2.xxxx.COM xxxx.com axfr

 xxxx.com. 1800 IN SOA ns1.xxxx.com. hostmaster.ns1.xxxx.com.
xxxx.com. 1800 IN MX 5 mail4.xxxx.com.
xxxx.com. 1800 IN MX 5 mail5.xxxx.com.
xxxx.com. 1800 IN MX 5 mail5.xxxx.com.
xxxx.com. 1800 IN MX 5 mail5.xxxx.com.
xxxx.com. 1800 IN A 211.xx.xx.xx
xxxx.com. 1800 IN A 211.xx.xx.xx
xxxx.com. 1800 IN NS ns1.xxxx.com. 
xxxx.com. 1800 IN NS ns2.xxxx.com. 
09.xxxx.com. 3000 IN A 211.115.xx.xx 
100.xxxx.com. 1800 IN CNAME dic.xxxx.com.
account.xxxx.com. 1800 IN A 211.xx.xx.xxx
admin.xxxx.com. 1800 IN A 211.xx.xx.xx
......

확인 결과 이 도메인의 경우 800여 줄이 넘는 zone 정보가 확인됐고, 그 중에는 dev.xxx와 같이 개발 서버로 사용되는 것으로 추측되는 서버의 목록도 눈에 띄었다. 이는 대단한 해킹 기법도 아니고 정상적인 DNS zone 전송을 자체에서 제공되는 명령어로 실행해 본 것에 불과함에도, 이처럼 많은 정보를 제공하고 있는 것을 알 수 있으며, 이로 인해 불필요한 정보가 유출될 수 있다. 실제 많은 기업에서 외부에 노출돼 보이는 웹 서버나 메일 서버뿐 아니라 내부의 개발 서버, 인트라넷 등도 ‘xxxx.도메인명’ 등으로 사용하고 있는데, zone 전송을 시도해 보면 이 정보가 그대로 보이기 때문에 공격자 입장에서 굳이 해킹을 통해 알 필요 없이 내부의 시스템/네트워크 구조를 쉽게 파악할 수 있다.
또한 사용하고 있는 IP 대역 등도 노출돼 IDC 등에서 사용하는 IP 대역뿐만 아니라 사내의 IP 대역이나 파이어월 등 보안 장비의 IP까지도 노출될 수 있다.
그럼 zone 전송의 정보유출에 대해 어떻게 대응해야 하는지 알아보자. 너무나 당연한 이야기이지만 원칙에 충실하면 된다. bind DNS를 사용할 경우에는 ‘/etc/named.conf’에 다음과 같이 설정하면 된다.

- 마스터 서버에서의 설정
options {
allow-transfer {192.168.1.3; };
};

여기에서 192.168.1.3은 슬레이브 DNS의 IP이며 당연히 슬레이브에서의 zone 전송만 허용한다는 의미다.

- 슬레이브 서버에서의 설정
options {
allow-transfer {none; };
};

당연히 슬레이브에서는 zone 전송을 제공하지 않으므로 허용할 필요가 없다.
이같이 설정한 후 DNS를 재가동하면 외부에서의 불법적인 zone 전송은 거부한다.