Rey의 Open Source Software 이야기

오래된 Ubuntu 배포본 레퍼지터리 오류

by Rey on 6.14, 2013, under Linux

지금 세팅해서 사용하고 있는 시스템이 Ubuntu 리눅스를 사용하고 있다.

지금 나와있는 LTS 버전은 12.04 인데 예전에 세팅한 녀석들은 아직 10.04 혹은 10.10 인 녀석들이 많다.
apt-get 명령어로 패키지를 설치하려고 하면 오류가 나며 레퍼지터리를 사용할 수 없다고 나온다.

이러한 경우 apt-get에서 사용하는 레퍼지터리 소스 리스트 파일인 /etc/apt/sources.list 파일을 수정하면 된다.

archive.ubuntu.com, security.ubuntu.com 을 old-releases.ubuntu.com 이렇게 바꾸면 되는데 vi 로 해당 파일 수정해도 되지만… 인간적으로 그런 삽질은 이제 그만 하는 게 좋지 않을까?
아래 명령어를 이용하자!

1
2
sudo sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
sudi apt-get update && sudo apt-get upgrade

그런 다음 패키지를 설치하면 정상적으로 설치가 된다.

Leave a Comment :, , more...

[Javascript] 익스플로어에서 이미지 저장 방지

by Rey on 6.19, 2012, under Web

방법 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<script language="JavaScript1.2">
 
var clickmessage="이미지 못가져 갑니다 "
 
function disableclick(e) {
if (document.all) {
if (event.button==2||event.button==3) {
if (event.srcElement.tagName=="IMG"){
alert(clickmessage);
return false;
}
}
}
else if (document.layers) {
if (e.which == 3) {
alert(clickmessage);
return false;
}
}
else if (document.getElementById){
if (e.which==3&amp;&amp;e.target.tagName=="IMG"){
alert(clickmessage)
return false
}
}
}
 
function associateimages(){
for (i=0;i&lt;document.images.length;i++)
document.images[i].onmousedown=disableclick;
}
 
if (document.all)
document.onmousedown=disableclick
else if (document.getElementById)
document.onmouseup=disableclick
else if (document.layers)
associateimages()
</script>

방법 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script Language="javascript">
&lt;!-- HIDE FROM OTHER BROWSER
function right(e) {
if(navigator.appName == 'Netscape' &amp;&amp; (e.which == 3 || e.which == 2))
return false;
else if(navigator.appName == 'Microsoft Internet Explorer' &amp;&amp; (event.button == 2 || event.button == 3)){
//alert("오른쪽 마우스 버튼.. 사용하지마요..ㅠㅠ");
return false;
}
return true;
}
 
document.onmousedown = right;
 
if(document.layers)
window.captureEvents(Event.MOUSEDOWN);
window.onmousedown = right;
//STOP HIDING--&gt;
</script>
Leave a Comment :, more...

screen 명령어 사용

by Rey on 6.19, 2012, under Linux

screen은 한 접속 터미널을 통해 다수의 가상 터미널을 공유해서 사용합니다.
screen을 생성하기 위해서는 아래와 같이 screen -S 스크린이름 을 합니다.

1
$ screen -S myscreen

명령어를 입력하면은 기존에 프롬프트가 나올것입니다.
여기서 ls 합니다.
이제 Ctrl+a c 를 누릅니다. 다시 Ctrl+a a 를 누릅니다.

screen내에서 명령어는 Ctrl+a 로 시작합니다. 다시 Ctrl+a a를
누르면 이전 창으로 변경됩니다.

이제 Ctrl+a d를 눌러보세요. 이 상태를 screen이 detach되었다고 합니다.
이제 컴맨드라인에서 screen -list 라고 쳐보세요.

mysession 이라는 이름의 screen 목록이 있을 겁니다.
이 screen을 다시 사용할 수 있는데 컴맨드라인에서 screen -r myses 라고
쳐보세요. detach 전 상태로 딱 붙어 있을 겁니다.

다음은 screen내에 몇개의 창이 있는지 보는겁니다.
Ctrl+a w 라고 쳐보세요. 맨 밑줄에 잠시동안 0*$bash 1-$ bash 이라는
표시가 나올겁니다. 사용하는 셀에 따라 bash는 다른걸로 표시될 수 있습니다.
만약 xterm을 사용하거나 root 인 경우 좀 틀릴 수 있습니다.
xterm인 경우 title 바에 잠시 나타나고 사라집니다.

창간에 이동할때는 Ctrl+a 0~9 으로 이동할 수 있습니다. 창이 2개만 있거나
자주 쓰는 2개 사이만 이동할때는 Ctrl+a a 를 이용하면 편리합니다.

screen을 쓰면 작업도중 logout해도 편합니다. screen을 죽이지 않고 접속만
끝으면 자동으로 screen은 detach된 상태이고 다시 로긴해서 attach하면
됩니다.

새창을 또 띄울때는 Ctrl+a c 를 누르면 됩니다. 한 screen에서 너무 많이 창을
뛰우면 관리상 좀 불편하더군요. 상태바를 두고 간단하게 이름을 붙여서 사용할
수도 있습니다.

Ctrl+a c : screen에서 새창 띄우기
Ctrl+a a : 바로 전 창으로
Ctrl+a 0 : 0번째 창으로
Ctrl+a 1 : 1번째 창으로
Ctrl+a 9 : 10번째 창으로
Ctrl+a d : screen 때어내기

screen이 실행될때 읽어 들이는 rc 파일이 있습니다.
$HOME/.screenrc 파일이 그것입니다.

대부분은 .screenrc 가 디폴트로 잘 설정되어 있을 겁니다.
일단 이 파일이 있다면 열어서 아래와 같이 해당 라인을 찾아 수정합니다.

defhstatus "<^En-^Et> ^EW [^EM/^Ed(^ED) ^Ec]"
hardstatus lastline
 
defscrollback 1000

defhstatus 는 hardstatus 을 어떻게 표시할까를 나타내는겁니다.
^En 은 현재 창번호를 ^Et는 현재 창 타이틀을 표시합니다.
^EW 는 나머지 창들에 대해서 표시합니다.
(버전에 따라 다르게 동작할 수 있습니다!)

그 다음 hardstatus lastline은 hardstatus를 화면상의 맨 아래에
표시하게 합니다. 창이 여려개 일때 편리하죠.

defscrollback은 screen의 개별 창마나 scroll 사이즈를 몇 라인으로
할것인지를 정하는 겁니다. scrollback을 좀 길게 사용하는 이유는 출력내용을
살펴 볼때 유용합니다. 터미널 자체의 스크롤백을 사용할 수도 있으나 창을
왔다갔다하면 좀 불편하고 어디것이 어떤 차의 것인지 분간이 잘 안가죠.
이때 해당 창의 스크롤백을 사용하면 편리합니다.

스크롤백화면으로 이동하는건 간단합니다. Ctrl+a [을 누르면 screen
의 copy mode로 변환 됩니다. copy mode에서 이동할땐 vi의 이동키를
그대로 사용할 수 있습니다. 빠져나올땐 Esc Esc로 빠져나올 수 있습니다.

copy mode는 copy & paste할때 주로 사용하는것인데요. copy mode 상태
에서 spacebar을 눌러 복사할 시작점을 선택하고 끝지점에서 다시
spacebar을 누르면 그당 블럭이 screen 내부 버퍼를 복사됩니다.
복사된 버퍼값을 다시 쓰고자 할때는 Ctrl+a ]을 눌려 주면 됩니다.
만약 쉘 컴맨드상에 있다면 셀 컴맨드로 이게 복사될 것이고 vim에서 에디팅
중일 경우 입력으로 들어 가겠죠.

사용하다 특정 창에서 실행중인 프로그램이 말썽을 일으켜 동작하지 않을
때가 있습니다. 저같은경우 디버깅하다 디버가까지 같이 먹어버리는 경우가
종종 있습니다. 이때 해당 창을 죽이는 명령이 있는데 Ctrl+a K 가
현재 활성화된 창을 강제로 죽이는 경우 입니다. 뭐 다른 창으로 이동해서
ps -el 한다음은 해당 프로세스를 죽여도 상관없지만요.

Leave a Comment :, , more...

OpenSSH Client 연결 시 permission denied(publickey) 오류 출력하며 접속 안되는 경우

by Rey on 9.21, 2011, under Linux

요즘 회사에서 아마존 웹 서비스(이하 AWS)를 이용하여 서비스를 구축하고 있다.

그런데 AWS EC2로 Linux를 선택한 경우 경우에 따라 putty나 SSH Client에서 Permission denied(publickey)라는 오류를 출력하며 접속이 안 되는 경우가 있다.

이 경우  OpenSSH Server 설정에 Password 입력이 비 활성화 되어 있어 그런 경우가 있다 이 경우 /etc/ssh/sshd_config(Ubuntu Linux 기준) 파일에서 PasswordAuthentication를 찾아 no를 yes 변경 하면은 Password 입력을 활성화 할 수 있다.

Leave a Comment :, , more...

APACHE Web Server HTTP Method 설정 제한 방법

by Rey on 8.22, 2011, under Web

기존에 http://tech.dakrink.pe.kr에 써놓은 글을 옮긴 것 입니다.

Apache Web Server를 사용하면서 HTTP Method 중 특정 method만 제한을 걸고 싶은 경우가 있다.
apache 버전의 경우 서버단으로 제한을 걸수는 없고 디렉토리 별로 제한을 걸 수 있다.

method 제한을 거는 경우 에는 아래 처럼 설정하면은 된다.

<Directory /home>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>

위와 같이 설정을 하면은 GET, POST 이외의 method로 접속하는 경우에는 405 Method Not Allowed 에러를 발생을 한다.

Leave a Comment :, more...

gssftp 로그인 안 될때 설정

by Rey on 7.26, 2011, under Linux, Technical Info

기존에 http://tech.dakrink.pe.kr에 있는 글을 옮겼습니다.

최근에 출시되는 리눅스 베포판의 경우 기본 FTPD로 vsftpd를 사용하는 경우가 많다 그러나 RHEL WS나 Desktop 버전 처럼 FTPD 패키지가 없는 경우 혹은 기본 vsftpd가 이상동작하는 경우(이런 경우가 있겠냐고 말하겠지만 있다. 오늘 경험했다 –;) xinetd아래 있는 gssftp를 사용할 수 있다.

gssftp는 xinetd 하위로 동작하는 데몬이기 때문에 반드시 xinetd를 설치해야된다.

안하고 안된다고 나한테 뭐라고 그러시면은 난감하다…

서비스 활성화 방법은 레드헷 기반으로 만들어진 배포판(레드헷 엔터프라이즈  리눅스, 수세 리눅스)등은 아래의 명령으로 서비스 활성화를 할 수 있다.

  • chkconfig gssftp on

그러나 다른 리눅스 배포판(데비안 리눅스)의 경우에는 /etc/xinetd.d나 혹은 xinetd 서비스 설정 디렉토리에 gssftp를 수정해야 된다.

  • /etc/xinetd.d/gssftp(RHEL 기준) 에디터로 오픈
    disable = yes에서 disable = no 로 변경

이렇게 작업을 한 뒤 xinetd 데몬을 리스타트 해줘야 적용이 가능하다.

위와 같이 작업한 뒤 FTP를 접속해서 로그인을 하면은 로그인이 안된다.(뭐니 –;)

기본적으로 로그인이 안되도록 설정이 되어 있는데 이를 해제하는 방법은 아래와 같다.

  • /etc/xinetd.d/gssftp(RHEL 기준)
    server_args   = -l -a 부분을 server_args = -l 로 수정 저장

그럼 이만

Leave a Comment :, more...

static route 정보 설정 방법

by Rey on 5.27, 2011, under Linux

static routing 정보를 설정하기 위해 하는 방법이 대부분 아래와 같은 방법일 것이다.

route add -net “IP Address” netmask “Netmask Address” dev “장치명”

위와 같은 방법은 network 서비스를 재시작 하거나 혹은 시스템이 재부팅 하는 경우에는 정보가 사라지는 단점이 있다.

위와 같은 문제를 해결하기 위해 network 서비스 재시작 혹은 시스템 재부팅에도 정보가 안사라지도록 설정하는 방법이 있다.

/etc/sysconfig/network-scripts/route-”장치명” 이라는 파일을 만들고 다음과 같이 네트워크 정보를 입력하면은 매번 정적 라우팅 정보를 입력하는 번거로움을 피할 수 있다.

/etc/sysconfig/network-scripts/route-eth0

1
2
3
4
5
6
7
GATEWAY0=0.0.0.0
NETMASK0=240.0.0.0
ADDRESS0=224.0.0.0
 
GATEWAY1=10.10.1.254
NETMASK1=255.255.255.0
ADDRESS1=192.168.72.0

위 예시와 같이 입력을 하면은 eth0에 대해 IP가 224.0.0.0에 속하고 Netmask가 240.0.0.0인 모든 패킷을 0.0.0.0 Gateway로 보내라는 의미를 가지게 된다.

다른 하나는 192.168.72.0 IP이고 Netmask가 255.255.255.0인 C클래스 패킷을 10.10.1.254 Gateway로 보내라는 의미를 가지게 된다.

관련 URL : http://kbase.redhat.com/faq/FAQ_79_2561.shtm

위와 비슷한 방법으로 다음의 방법을 사용해도 된다.

RHEL 4에서 static route를 설정하기 위해서는 다음의 두개의 파일을 만들어주면은 됩니다.

/etc/sysconfig에 static-routes라는 파일과
/etc/sysconfig/network-scripts에 route-eth0라는 파일을 만들어주시면은 되고..

내용은 다음과 같습니다.

static-routes

eth0 net 192.168.1.0 netmask 255.255.2550 gw 211.104.100.1

설명 : eth0에 192.168.1.0 / 24 네트웍으로 가야되는 트래픽을 기본 게이트 웨이 211.104.100.1로 보내라

route-eth0

192.168.1.0/24 via 211.104.100.1

설명 : 192.168.1.0 / 24 네트웍의 트래픽은 211.104.100.1로 보내라

관련 URL : http://www.akadia.com/services/redhat_static_routes.html

Leave a Comment : more...

RHEL(Red Hat Enterprise Linux) Coredump 설정 방법

by Rey on 5.27, 2011, under Develope, Linux

리눅스에서 프로그램 개발을 하다가 보면은 세그먼트 폴트가 나는 경우 Debugging을 해야되는 상황이 있을 수 있다. 그런데 우리의 레드헷 기본적으로 Coredump를 남기지 않도록 설정이 되어 있어서 곤란한 경우가 있다.RHEL에서 Coredump를 기록하도록 설정하는 것을 설명한다.

Coredump 생성을 위한 방법으로는 두가지가 있다. 한가지는 시스템에서 무조건적으로 coredump를 생성하도록 하는 경우가 있고 다른 한가지는 init script에서 남기도록 하는 경우가 있다.

1. 시스템에서 Coredump를 남기도록 설정
/etc/profile 파일을 vi나 다른 에디터 프로그램을 열어서 다음의 라인을 찾아보자.

ulimit -S -c 0 > /dev/null 2>&1

위에 줄이 Coredump를 남기지 않도록 하는 주범이다.

그 부분을 다음과 같이 수정하라.

ulimit -c unlimited > /dev/null 2>&1

/etc/profile를 수정하면은 시스템 전체적으로 영향을 받는다. 만약에 시스템 전체적으로 영
향을 받지 않고 자주 사용하는 시스템 계정에서만 영향을 받고 싶다면은 /etc/profile를 수정
하지 말고 ~/.bash_profile나 ~/.bashrc를 수정하도록 한다.

/etc/profile 말고 커널 파라메타에도 기본적으로 Coredump를 남기지 않도록 되어 있다.
/etc/sysctl.conf에 다음의 부분을 기술한다.

kernel.suid_dumpable = 1
kernel.core_uses_pid = 1

설정을 추가 한 뒤에 sysctl -p로 커널 파라메터를 지금 현재 시스템에 반영하는 것을 잊지
말어야 한다. 안그러면은 재부팅 되고나서야 시스템에 반영이 된다.

2. Init Script로 실행하는 데몬에 Coredump 설정 방법
RHEL의 경우 init script로 실행하는 데몬에 대해 initscript package에서 coredump를 남기
지 않도록 관리하고 있다.

만약에 /etc/init.d/httpd에 대해 coredump를 남기도록 세팅하려면은 다음과 같이 수정하도
록 한다.

/etc/sysconfig/init에 다음의 라인을 추가 한다.

DAEMON_COREFILE_LIMIT=’unlimited’

이 설정을 init script로 실행하는 모든 스크립트에 영향을 미치게 된다.
각 init script에서 /etc/init.d/functions을 호출하기 전에

DAEMON_COREFILE_LIMIT=’unlimited’

를 넣어주면은 된다.

참조 : http://kbase.redhat.com/faq/FAQ_80_7935.shtm

Leave a Comment :, , more...

MySQL 전 테이블 최적화 하기

by Rey on 5.27, 2011, under MySQL

MySQL 뿐만 아니라 거의 대부분의 SQL 서버들이 레코드가 추가 되거나 혹은 지워질떄 오버해드들을 남기게 되는데 다음에 MySQL의 경우 전 테이블을 최적화 하는 쉘 스크립트 이다. rootman님 사이트에서 가지고 왔다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/sh
# 2004/03/20
# http://www.rootman.co.kr
# 제목 : mysql Database 테이블 모두 최적화하기
# 변경사항 : mysql root 변경
# --------------------------------------------------
#
DB_cnt=0;
DB_pass="루트패스워드"
Total_Table=0;
DB_str=`mysql -u root -p${DB_pass} -e"show databases"`;
for DB_for in ${DB_str}
do
  if [ ${DB_for}  != "Database" ]; then
     TABLE_cnt=0;
     Table_str=`mysql -u root -p${DB_pass} -e"show tables" ${DB_for}`;
     for TABLE_for in ${Table_str}
     do
        Op_Str=`mysql -u root -p${DB_pass} -e"optimize table $TABLE_for" ${DB_for}`;
        echo " - DB명 : ${DB_for} --> ${TABLE_for} ";
        let TABLE_cnt=TABLE_cnt+1;
     done
     echo "------------------------------------------> 테이블명 : ${TABLE_cnt} 최적화완료.";
     let Total_Table=Total_Table+${TABLE_cnt};
     sleep 1;
     let DB_cnt=DB_cnt+1;
  fi;
done
echo "====================================================================================";
echo "- 호스트명 : `hostname` 에 대한 DB ${DB_cnt}개, 토탈테이블 ${Total_Table} 최적화 완료.";
echo "====================================================================================";
Leave a Comment : more...

SSH 터널링

by Rey on 5.27, 2011, under Security

특정 사이트, 및 서비스(msn) 등 차단시 프락시 를 통한 우회

특정 정책등으로 제안이 있지만 임시로 사용가능하게 하고자 할때 다음과 같이 접속하여 우회용 프락시 포트를 연뒤에.
ssh -D 1024 우회할_ssh_서버
브라우저, 가임, msn 등에 프락시 서버를 localhost 에 1024 포트로 수정한 후 사용한다..

 

방화벽 우회 하여 외부에서 연결해 들어올수 있게 하기

내부에서 외부 ssh 로 접속을 하면서 터널닝으로 연결 고리를 열어두어 나중에 작업등을 하고 자 할때 방화벽_내부_IP 에서
ssh -R 8022:방화벽_내부_IP:22 -l 계정 우회할_ssh_서버
와 같이 연결한후에..

외부에서 우회할_ssh_서버에 접속해 로그인하후에
ssh -p 8022 localhost
위와 같이 하면 방화벽을 우회하여 방화벽_내부_IP 로 접속할수 있다.

Leave a Comment :, more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!