Posted
Filed under Linux

wget ftp://아이디:패스워드@주소/경로/

예) wget ftp://abcd:1234@274.234.241.12/root/boo/good.zip

만약 해당 폴더의 내용전부를 가져오고 싶으면

예) wget ftp://abcd:1234@274.234.241.12/root/boo/

만약 해당 폴더의 하위까지 가져오고 싶으면

예) wget -r ftp://abcd:1234@274.234.241.12/root/boo/

2012/09/04 09:52 2012/09/04 09:52
Posted
Filed under Linux

vi로 오픈한다.
/etc/crontab


다음은 50 분마다 다음 경로를 실행한다.
wget을 이용하면 다음 url를 오픈 한다.

50 * * * * root wget -O -q -t 1  url

30분 마다 실행 하려면 ?
다음과 같이 '/' 기호를 사용하면 된다.
*/30 * * * * root wget -O -q -t 1 url

----------------------------------------------------
options

1 : minute (0-59),
2 : hour (0-23),
3 : day of the month (1-31),
4 : month of the year (1-12),
5 : day of the week (0-6 with 0=Sunday).

---------------------------------------------------------
크론탭 수정 후 데몬 리스타트
service crond restart

2012/07/17 09:35 2012/07/17 09:35
Posted
Filed under Linux

1. rewrite 모듈을 사용하기 위한 Apache 컴파일옵션

Rewrite 모듈을 쓰기위한 Apache 컴파일 옵션은 --enable-rewrite 입니다.
Configure 실행시에  --enable-rewrite 만 추가하시면 Apache에서 rewrite 모듈을 사용할 있게 됩니다.

[root@superuser root]# ./cofigure prefix=/usr/local/apache2 --enable-rewrite
[root@superuser root]# make
[root@superuser root]# make install




2. Rewrite 를 적용할 수 있는 범위

Rewrite 설정은 Server Config, Virtual Host, Directory, .htaccess 에 설정할 수 있습니다.

즉 Apache 서버 전체에 Global 설정과 특정 가상호스트에만 적용하도록 할수 있고 특정 디렉토리에만 적용시킬수도 있습니다.





3. .htaccess란?

.htaccess (hypertext access)는 Apache 웹 서버의 디렉토리 레벨을 설정하는 기본 파일입니다.
.htaccess는 한 특정 디렉토리에 위치하며, 모든 하위 디렉토리를 포함한 해당 디렉토리에 영향을 미칩니다.
이 파일이 위치한 특정 폴더에 사용자가 정의한 Request 기능을 적용합니다.
파일 이름은 .(dot)으로 시작하기 때문에 유닉스 계열의 운영체제에서는 숨김 파일로 저장됩니다.




4. Rewrite 모듈 지시자
RewriteEngine

    설정문법 : RewriteEngine On|Off

    Rewriteing 엔진을 사용할지 여부를 설정합니다.
    기본설정은 당연히 Off로 되어 있으며 RewriteEngine On 으로 설정하지 않는 이상 Rewritng 엔진을 활성화 시키지 않습니다.

    현재 Apache에서 실행중인 모든 RewriteRule을 비활성화 시킬 때 RewriteRule 라인을 주석처리 하기보다 RewriteEngin Off 로 설정하는 것이 더 간편하고 올바른방법입니다.

RewreteLog

    설정문법 : RewriteLog FILE-PATH

    RewriteLog 지시자는 Rewrite 엔진의 로그를 그록할 파일을 지정합니다.
    RewriteLog 파일을 항상 남기기 보다 잘못된 Rewrite 규칙들을 디버킹할 때 사용하기를 권장합니다.
    아파치와 마찬가지로 RewriteLog 파일도 방문자수가 많은사이트에서는 감당못할 정도의 로그파일을 남기기 때문에 시스템 여유공간이 많이 없는 시스템에서는 해당 파티션의 하드사용률 100%로 인한 재앙(?)을 불러올수도 있습니다.

    RewriteLog 지시자는 반드시 RewriteLogLevel 지시자와 함께 사용하여야 됩니다.

RewriteLogLevel

    설정문법 : RewriteLogLevel Level

    RewriteLogLevel 지시자는 RewriteLog 지시자로 설정한 로그파일에 기록할 로그들에 대해 얼마나 자세한 내용을 로그로 남길것인가에 대해 설정하는 지시자입니다.

    기록할 로그 Level 은 0 ~ 9까지 사용할 수 있으며 0은 로그를 기록하지 않겠다는 의미입니다. Level 숫자가 높을수록 자세한 로그를 기록합니다

RewriteCond

    설정문법 : RewriteCond TestStirng CondPattern

    RewriteCond 지시자는 RewriteRule 과 함께 사용되는 규칙으로 RewriteCond 다음에 오는 RewriteRule은 RewrieteCond 에서 설정한 패턴과 일치해야지만 RewriteRule들을 실행한다.

RewriteRule

    설정문법 : RewriteRule Pattern Substitution

    Rewrite 모듈의 실질적인 Rewrite 규칙들을 적용하는 지시자입니다.

    Pattern(Input URL) 을 Subtitution(Return URL)로 변경하기 위한 모든 규칙들은 이 지시자를 사용해서 설정해야 됩니다.

    Pattern(Input URL) 에는 Perl 정규표현식을 사용할수 있기 때문에 Input URL 의 규칙을 유연하게 적용할 수 있습니다.




5. RewriteRule 에서 사용되는 정규 표현식의 기초
. : 다수의 한문자

? : 0개 이상의 한문자

* : 0개 이상의 문자 또는 문자열

+ : 1개 이상의 문자 또는 문자열

(chars) : (, ) 안의 문자또는 문자열을 그룹으로 묶습니다. 이 문자그룹은 Substitution(return URL)에서 $N 의 변수로 활용할수 있습니니다.

^ : 문자열의 첫문(열)을 지정합니다.

$ : 문자열의 끝 문자(열)을 지정합니다.

\(역슬래쉬) : 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거합니다.(예:(, ), [, ] . 등)

{n} : 정확히 n번 반복

{n,} : n번 이상 반복

{n,m} : n 이상 m 이하 반복

[chars] : 문자들의 범위 또는 표현할 수 있는 문자들을 설정합니다.
예) [a-z] : a 부터 z 까지의 소문자, [tT] : 소문자 t 또는 대문자 T


 
 
6. 정규표현식 단축표현들

[:alpha:] : 알파벳. [a-zA-Z] 와 같은 표현

[:alnum:] : 알파벳과 숫자. [a-zA-Z0-9] 와 같은 표현

[:digit:] : 숫자 [0-9] 와 같은 표현

[:upper:] : 대문자. [A-Z] 와 같은 표현




7. 사용가능한 서버변수

[HTTP Headers]

    HTTP_USER_AGENT
    HTTP_REFERER
    HTTP_COOKIE
    HTTP_FORWARDED
    HTTP_HOST
    HTTP_PROXY_CONNECTION
    HTTP_ACCEPT


[connection & request]

    REMOTE_ADDR
    REMOTE_HOST
    REMOTE_PORT
    REMOTE_USER
    REMOTE_IDENT
    REQUEST_METHOD
    SCRIPT_FILENAME
    PATH_INFO
    QUERY_STRING
    AUTH_TYPE


[server internals]

    DOCUMENT_ROOT
    SERVER_ADMIN
    SERVER_NAME
    SERVER_ADDR
    SERVER_PORT
    SERVER_PROTOCOL
    SERVER_SOFTWARE


[date and time]

    TIME_YEAR
    TIME_MON
    TIME_DAY
    TIME_HOUR
    TIME_MIN
    TIME_SEC
    TIME_WDAY
    TIME


[specials]

    API_VERSION
    THE_REQUEST
    REQUEST_URI
    REQUEST_FILENAME
    IS_SUBREQ
    HTTPS




8. RewriteCond에서 쓰이는 명령어

-d : 디렉토리를 의미합니다. TestString이 디렉토리를 가리키거나 포함하고 있을 때 처리됩니다.

-f : 파일을 의미합니다. TestString이 파일을 가리키더나 포함하고 있을 때 처리됩니다.

-l : 심볼릭링크를 의미합니다. TestString이 심볼릭링크를 가리키거나 포함하고 있을 때 처리됩니다.

마지막으로 느낌표(!) 는 부정을 뜻합니다.

예)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://test.domain.co.kr/$1




9. RewriteRule 플래그
forbidden|F :
    요청하는 페이지를 403 에러로 redirect 시킵니다.
    RedirectRule 이 적용되고 있는 페이지를 일시적으로 사용중단을 시키거나 사용자로 하여금 페이지 접근을 할수 없게 할 때 사용합니다.

    예) RewriteRule ^/test /home/blog/html/test.php [F]

    사용자가 /test 로 접근할 경우 403 에러를 보냅니다.

gone|G :
    요청하는 페이지를 410 에러로 redirect 시킵니다.
    410 에러는 페이지가 사라젔거나 존재하지 않는다는 메시지입니다.
    이것도 forbidden 과 마찬가지로 RedirectRule 이 적용되던 페이지를 일시적으로 중단시킬 때 유용하게 사용할 수 있습니다.

last|L :
    이 플래그가 적용되면 뒤에 어떤 룰이 있더라도 이룰 아래의 규칙들은 적용되지 않고 RewriteRule 을 빠져나가게 됩니다.
    C, Perl, PHP 프로그램에서 루프를 빠져나가는 break 와 같은 의미를 가집니다.

chain|C :
    이 플래그의 결과를 다음 RewriteRule 의 input 값으로 사용합니다.

    예)
    RewriteRule ^(.+) %{HTTP_HOST}$1 [C]

    RewriteRule ^([^.]+)\.domain\.com(.*) /home/$1/public_html$2

    이 룰은 사용자 홈의 도메인을 2차 도메인으로 자동설정해 줄 때 많이 쓰는 룰입니다.
    RewriteRule의 input은 도메인을 제외한 URI 를 인식하기 때문에 도메인까지 인식을 시켜서 다음 RewriteRule 로 체크를 하기 위해 사용한 것입니다.

    즉 http://user_id.domain.com/hello.html 이란 요청이 들어오면  /home/user_id/public_html/hello.html 로 redirect 시켜줍니다.
    위와 같이 2차 도메인을 이용해 계정 사용자의 홈을 지정하기 위해서는 DNS 세팅이 선행되어야 됩니다.

N : 새로운 Rule이 시작된다는 의미입니다.

R : Redirection. 무조건 넘깁니다. 뒤 주소로 넘긴다는 의미입니다.

NC : 대소문자를 구별하지 않습니다.

OR : 프로그래밍의 or와 비슷합니다.

QSA : Cond의 내용을 지난 결과에 덧붙입니다.

NE : Out 될 값에 특수문자가 HexCode로 되어 포함되어 있는 경우
2012/06/07 18:05 2012/06/07 18:05
Posted
Filed under Linux
/usr/local/apache/conf/extra/httpd-autoindex.conf


IndexIgnore .??* *~ *
2012/03/19 09:15 2012/03/19 09:15
Posted
Filed under Linux
 grep -e  "문자열" "경로" -R
경로 밑에 있는 문자열이 포함된 모든 것을 찾는다.
2012/03/08 17:07 2012/03/08 17:07
Posted
Filed under Linux
su_traffic + 트레픽 체크 연동

http://blog.daum.net/ilovenoa/9855615


이자료를 잘 참고 하면 웹용 실시간 트레픽 확인 가능 함 .
2012/02/02 17:41 2012/02/02 17:41
Posted
Filed under Linux

1. http://www.oracle.com 에 접속

   -> Oracle Database 10g Express Edition for Linux x86 클릭

   -> oracle-xe-10.2.0.1-1.0.i386.rpm 다운로드


2. 설치 필요 라이브러리 설치

   -> yum install glibc

   -> yum install libaio


3. 오라클 rpm 설치

    -> rpm -ivh oracle-xe-10.2.0.1-1.0.i386.rpm


-> 삭제  rpm -e oracle-xe-univ-10.2.0.1-1.0
 

4. 오라클 설정

   -> /etc/init.d/oracle-xe configure

   # Specify a port that will be used for the database listener [1521]: 오라클포트번호   

   # This can be done after initial configuration: Confirm the password: SYS 또는 SYSTEM 암호

   # Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]: 부팅후 자동 오라클을 실행할지 여부

 

5. 오라클 환경변수 설정

   -> cd /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin

   -> ./oracle_env.sh        (실행)


6. 부팅후 자동 환경변수 실행

   -> vim /root/.bash_profile

   # /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/./oracle_env.sh   (삽입)

   # export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server  (삽입)

   # export ORACLE_SID=XE


7. 웹브라우저 접속

   -> http://서버아이피:8080/apex

   -> 아이디 : sys  패스워드 : 위 4번 오라클설정에서 넣었던 sys 암호

7.1 oci 라이브러리 추가

    -> yum install php-pear

    -> pecl install oci8

    # php.ini 에서

    -> extension=oci8.so

7.2 아파치 설치후 다음작업

    -> /usr/local/apache/bin/./apachectl stop

8. php 설치

   -> export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server 

   # php 소스 컴파일 디렉토리에서

   -> ./configure --prefix=~~~~ --enable-pdo --with-pdo-oci=$ORACLE_HOME --with-oci8=$ORACLE_HOME --with-oracle=$ORACLE_HOME

   # 나머진 기존 php 설치법대로 진행


8.1 아파치 시작

   -> /usr/local/apache/bin/./apachectl start


9. 테스트 (PHP)

   $conn=oci_connect("아이디","패스워드","localhost/XE");
   if($conn) echo "success";



참고)

  # 오라클 시작

  -> /etc/init.d/oracle-xe start

  # 오라클 정지

  -> /etc/init.d/oracle-xe stop

  # 외부네트워크망에서 http://서버아이피:8080/apex 접속하게 하려면

  -> ./sqlplus system/패스워드

  -> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

2012/02/02 13:20 2012/02/02 13:20
Posted
Filed under Linux
jobs  : 현재 백그라운드로 돌아가는 프로그램 리스트

fg : 백그라운드로 실행되는 프로그램을 포그라운드

& :  프로세스를 백그라운드로 실행


예)

#>  top &                << top을 백그라운드로 실행

#>   jobs                   << 백그라운드로 실행되는 프로그램을 확인

[1]+  Stopped                 top
#>   fg %1                 << 백그라운드로 실행되는 top명령을 다시 불러움

nohup /usr/local/java/bin/java -jar XDreamyi3shop.jar &

nohup -> 터미널에서 로그아웃을 해도 실행시킨 프로그램은 종료되지 않고 계속 돈다.
& -> 백그라운드 실행.. ps -aux를 치면.. 프로그램이 돌고 있음을 알 수 있다.

2012/01/19 18:12 2012/01/19 18:12
Posted
Filed under Linux
#!/bin/bash
# For RedHat and cousins:
# chkconfig: 2345 85 85
# description: Red5 flash streaming server
# processname: red5
# Created By: Sohail Riaz (sohaileo@gmail.com)

PROG=red5
RED5_HOME=/usr/local/red5
DAEMON=$RED5_HOME/$PROG.sh
PIDFILE=/var/run/$PROG.pid

# Source function library
. /etc/rc.d/init.d/functions

[ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5

RETVAL=0

case "$1" in
	start)
	echo -n $"Starting $PROG: "
	cd $RED5_HOME
	$DAEMON >/dev/null 2>/dev/null &
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		echo $! > $PIDFILE
		touch /var/lock/subsys/$PROG
	fi
	[ $RETVAL -eq 0 ] && success $"$PROG startup" || failure $"$PROG startup"
	echo
	;;
	stop)
	echo -n $"Shutting down $PROG: "
	killproc -p $PIDFILE
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROG
	;;
	restart)
	$0 stop
	$0 start
	;;
	status)
	status $PROG -p $PIDFILE
	RETVAL=$?
	;;
	*)
	echo $"Usage: $0 {start|stop|restart|status}"
	RETVAL=1
esac

exit $RETVAL

2012/01/12 17:16 2012/01/12 17:16
Posted
Filed under Linux

[원문] : http://laim.egloos.com/2198389


오늘은 무단링크를 방지하는 스크립트를 설치했다.

무단링크라... 무단링크는 이런 것이다. 퍼스널디비에서 계정을 받았다. 거기에 파일을 올리고는 그 파일을 다른 게시판에서 다음과 같이 올린다.
<a href="http://fileserver1.personaldb.net/****">파일링크</a>

이렇게 하면 다른 사람들이 이 파일을 가져갈 수 있게 된다.

하지만 이러면 퍼스널디비는 단지 자신의 서버와 네트워크를 빌려줄 뿐 아무런 이득을 얻지 못한다. 심지어 그 파일을 받아가는 사람도 이 파일이 어디에서 왔는지 알지 못한다. 그래서 시스템관리자는 무단 링크를 방지하기 위하여 여러가지 방법을 사용하게 된다.

제일 좋은 방법은 이런식의 파일접근을 원천적으로 막는 것이다. http://~~ 이런 방식으로 아예 파일에 접근할 수 없도록 웹서버에 파일을 올려놓지 않으면 된다. 필요하면 내부에서 파일을 읽어서 다시 외부로 뿌려주는 방식을 취하는 것이다. 많은 수의 다운로드 자료실들이 이러한 형태를 취한다. 제일 좋다.

하지만 홈페이지 서비스를 하는 경우에는 이것이 좀 어렵다. 기술적으로도 좀 어렵지만 가장 큰 문제는 사용자가 엄청 불편해지고, 시스템이 많은 자원을 소비한다.

그래서 차선책이 바로 Referer를 사용한 무단링크 방지책이다.

가장 많이 사용되는 아파치 웹서버의 경우 Referer를 사용한 무단링크방지법을 제공한다.
간단하게 다음과 같은 내용을 httpd.conf 파일에 추가하면 된다.

<Directory "/home/dduma">
AllowOverride None
SetEnvIf Referer abc.com in HTTP_REFER
Deny from all
Allow from env=HTTP_REFER
Order deny,allow
</Directory>

설명은 다음과 같다.
<Directory "/home/dduma"> : 여기 쓰인 디렉토리에 대해서는
AllowOverride None : htacess.conf 파일을 사용하지 않는다.
SetEnvIf Referer abc.com in HTTP_REFER : HTTP_REFER 라는 변수에 넣는다.
Order deny,allow : 먼저 거부조건을 나중에 허용조건을 설정한다.
Deny from all : 모두 거부한다.
Allow from env=HTTP_REFER : HTTP_REFER 변수에 있는 것만 허용한다.

이러면 abc.com 만 빼고는 다 무단링크는 허용되지 않는다.


하지만 이렇게 하면 문제가 생긴다.
먼저 abc.com에서 링크된 것은
<img src=http://abc.com/test.gif>와 같이 그림을 링크하면 나타나지만
<a href=http://abc.com/test.exe>다운받아라</a> 와 같이 다운받을 수 있게 하면 모두 허용이 거부된다.

이것을 방지하기 위하여 다음을 넣자.
SetEnvIf Referer ^$ in HTTP_REFER
그러면 다운도 되고 다 잘 된다.


그럼 끝인가?
아니다. 이러면 아직 두가지 문제점이 남는다.

첫번째 문제는 다운받을 수 있도록 무단링크를 걸었을 때 마우스 왼쪽버튼으로 클릭하면 허용거부라는 메세지가 나오지만 마우스 오른쪽 버튼을 클릭하여 다운받기를 누르면 다운이 허용된다.
이것은 열심히 궁리한 결과 절대 막을 수 없다는 결론이 나왔다. 이것을 막으면 위에 언급한 것처럼 정상적으로 링크하고 다운받는 것도 금지되기 때문이다.

두번째 문제는 만일 검색엔진 같은 곳에 링크가 되어 있으면 역시 허용이 거부된다. (왜? 무단링크니까...)
하지만 우리는 검색엔진에 링크거는 것은 허용하고 싶다. (이걸 허용하지 않는 바보가 어딨냐?)
그래서 위의 것들을 다음과 같이 고쳤다.

<Directory "/home/dduma">
AllowOverride None
SetEnvIf Referer abc.com in HTTP_REFER
SetEnvIf Referer ^$ in HTTP_REFER
<FilesMatch ".(avi|mge?g|exe|jpe?g|mp3|gif|png|zip|asx|asf|wmv|wma|bmp)$">
Deny from all
Allow from env=HTTP_REFER
Order deny,allow
</FilesMatch>
</Directory>

즉 중간에 FilesMatch 어쩌고 하는 지시자가 들어갔다.
이것은 쓰여진 확장자만을 무단링크 방지 파일대상으로 삼는다. 그러니까 .htm 파일같은 것은 무단으로 링크가 걸려도 좋다는 뜻이다.
이렇게 하면 검색엔진에 등록되어도 허용이 거부되지 않는다.

이상 무단링크 방지하기 방법을 알아보았다. 하지만 역시 완전하지는 않네... 몇가지 허점이 눈에 띈다. 이것을 알면 사람들이 악용할 소지가 전혀 없는 것은 아니다. 하지만 이 정도로도 무단링크의 90%정도는 없어진다.

시스템 관리자들은 모두 한번씩 해보시기를...

2011/12/05 13:48 2011/12/05 13:48