mysql respawning too fast, stopped 해결

얼마전 부터 MySQL이 말썽을 부리기 시작했다.
부팅후 2~3일 정도 지나고 나면 갑자기 죽어 버리는 거다.
재설치를 해보고 별 짓을 다해봐도 리부팅 말고는 방법도 없다.
재부팅 하고 나면 또 2~3일간은 괜찮고….

[904539.515940] init: mysql main process (21214) terminated with status 1
[904539.516809] init: mysql main process ended, respawning
[904540.170259] init: mysql post-start process (21215) terminated with status 1
[904540.291704] type=1400 audit(1353159124.857:55): apparmor=”STATUS” operation=”profile_replace” name=”/usr/sbin/mysqld” pid=21238 comm=”apparmor_parser”
[904540.712887] init: mysql main process (21242) terminated with status 1
[904540.713022] init: mysql respawning too fast, stopped
로그를 봐도 이런 메시지뿐…
포기하고 지내다가 도저히 안되겠어서 구글님께 문의…
역시 구글님.. /etc/mysql/my.cnf 파일에 다음 한 줄을 추가하는 것으로 간단하게 해결!


innodb_buffer_pool_size = 16M


SeeAlso :
http://askubuntu.com/questions/127264/cant-start-mysql-mysql-respawning-too-fast-stopped
7

LVM에 눈 뜨다.

리눅스 배포판들에서 기본으로 LVM(Logical Volume Manager)을 사용하기 시작하지 벌써 몇년이 지났다.

LVM이란거에 대한 개념도 잘 모르겠고… 먼가 복잡해서 항상 리눅스를 새로 설치하더라도 예전 방식을

고수했었다.

 

그러다 최근 회사에 서버를 새로 구축하면서 리눅스는 죄다 LVM으로 설치를 했다.

먼가.. 이제는 알고 넘어가야될거 같은 생각이 들었달까…

첨 설치를 했을 때만 해도 여전히 먼가 복잡하고 잘 몰랐지만..

한 서버의 디스크가 부족해서 디스크를 증설하는 과정에서 그 진가를 느낄 수 있었다.

기존 파티션에 새로운 물리적 디스크를 추가해서 물리적인 두 개의 디스크를 하나의 파티션으로

구성할 수 있었던것!

(정확하게는 기존 Volume Group에 새로운 하드로 만든 Physical Volume을 추가하고 기존

Logical Volume의 크기를 확장 해줬다)

 

예전 같으면 파티션 두개에다가 데이터를 적당히 나눠서 옮긴 다음, 사용도에 따라 재조정해주는

작업을 새로 했어야 했을 텐데, 이제는 그럴 필요가 없어졌다.

 

축소는 데이터 날려 먹을 까봐 겁이 나서 못해봤지만, 여러개의 물리적 디스크를 원하는 대로

나눠서 파티션을 구성하고 그 크기도 자유롭게 조정할 수 있다니!

이런걸 왜 이제껏 안 썼나 몰라+_+

 

Ubuntu Linux 네트웍카드 변경 시

서버 업그레이드를 위해 기존 서버에서 하드만 떼어서 새 서버에 달았다.

대부분 별다를 문제 없이 잘 동작 했지만… 이런… 이더넷 카드가 안 잡힌다;;

요즘엔 리눅스도 PnP가 잘되는 지라 특별히 디바이스 드라이버 잡고 하는건 해본 적이
거의 없는데

좀 난감한 상황….

 

어떻게 할 수 있을까 싶어서 이리저리 알아보다가 알게된 사실은…

안 잡힌게 아니고 인터페이스가 바꼈다는것…

기존 네트웍카드가 eth0 이었는데 새로운 네트웍 카드가 잡혔으니 eth1으로 잡혀 있는것이었다.

/etc/network/interfaces 에서 eth0를 모두 eth1으로 변경 후

ifup eth1

으로 네트웍카드를 동작시켜주니

별 문제 없이 잘 동작한다.

일단 별 문제는 없긴한데… eth1 이 되어 있으니 웬지 찝찝한 느낌이 들어 좀 더 찾아보니

그 동안 설치된 네트웍카드를 /etc/udev/rules.d/70-persistent-net.rules 에서 찾을 수 있었다.

기존 네트웍카드 부분을 지우고, eth1을 eth0로 변경 해준다음

/etc/network/interfaces 에서도

다시 eth0로 바꿔주니

문제 없이 eth0로 동작

SeeAlso :

 * http://forum.falinux.com/zbxe/?document_srl=532721

dpkg “files list file for package `…’ is missing final newline” 오류 해결하기

언젠가부터 apt-get 으로 패키지 설치나 업데이트를 하려고 하면 다음과 같은 오류가 발생한다.

패키지에서 템플릿을 추출하는 중: 100%
패키지를 미리 설정하는 중입니다…
(데이터베이스 읽는중 …dpkg: 복구 불가능한 치명적 오류, 중지합니다:
 files list file for package `laptop-detect‘ is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)

인터넷을 좀 뒤지다가 저기서 말하는 파일을 찾아서 고치기로 했다.

/var/lib/dpkg/info

위의 경로가 deb 패키지들에 대한 정보가 있는 디렉토리인듯 하다.
여기서 위의 에러에 나타난 패키지의 파일을 찾아서 에디터로 열어봤다.

sudo vi laptop-detect.lis

흠.. 역시나 파일 끝에 이상한 데이터가 붙어 있다.
과감히 날려 버렸다=_=
그리고 다시 apt-get을 해보니 문제없이 업그레이드가 된다.
무슨 문제가 발생할지는 모르겠지만…
기껏해야 해당 패키지 삭제할 때 파일이 제대로 삭제 되지 않는 문제가 있겠지 머..=_=

console-kit-daemon[6720]: CRITICAL: cannot initialize libpolkit

Ubuntu 8.10 서버를 설치한 컴퓨터를 한 동안 내버려 두다가

얼마전 부터 약간의 관리를 하고 있는데..

 

Apr 16 09:45:02 recycling console-kit-daemon[6720]: CRITICAL: cannot initialize libpolkit

로그파일에 이런 에러 메시지가 자꾸 찍힌다.

먼지 모르겠지만 귀찮아서..(-_-) 그냥 냅뒀었는데… 아무래도 신경이 자꾸 쓰여서

오늘 맘먹고 구글신께 물어 봤다.

원인은 잘 모르겠지만 패키지가 덜 설치 된게 원인인 듯하다. Ubuntu 8.10 버그 인가…

암튼…

 

$ sudo apt-get install policykit

 

해서 패키지들을 설치 해주면 해결된다. 🙂

 

PAM을 이용한 로그인 제한

후배 한넘이 ‘사용자별로 접속할 수 있는 아이피 대역을 제한 할수는 없느냐’라는 질문을

해와서.. 나도 상당히 궁금해 졌다. 방법은 있을꺼 같은데…

먼저 떠오르는건 iptables, TCPWrapper 등인데…

단순히 아이피 대역을 제한하는 거면 몰라도

사용자 별로 따로 해주는 거라면 그것들로는 안될꺼 같았다.

그래서 생각한게 PAM(Pluggable Authentication Modules) 이다.

요새는 대부분 인증할 때 저넘을 거치니까 저기서 설정해주면 되지 않을까…

근데 문제는… 내가 PAM에 대해서 잘 모른다는 거다…-_-

그래도 머… 시간도 남고 해서… 함 찾아봤지…

정확하게는 잘 모르겠지만.. 대충 살펴본 봐로는

/etc/sevurity/access.conf(데비안 기준) 를 손봐주면 될꺼 같았다.

흠.. 근데 이거.. 파일을 열어서 설명을 읽어봐도 잘 모르겠다..-_-

그래서 몇번 읽어 보고, 포기하려다가 또 읽어 보고 생각 좀 해보니까 알겠네;;;

일단 파일의 형식은

    permission : user : origins

이렇게 된다.

permission은 + 또는 -가 오는데, +는 권한을 준다. -는 권한을 주지 않는다 이다.

그 다음에 user에서 접속을 제한하거나 허가할 user나 group 의 아이디가 온다.

여러개를 쓸 경우에는 스페이스로 구분하면되고, ALL 이라고 하면 전부,

EXCEPT xxx 하면 xxx는 제외하고이다. 이 두개를 섞어서 쓸수도 있다.

a, b, c를 제외한 전부 == ALL EXCEPT a b c <- 이렇게..

마지막으로 로그인을 시도하는 origins은 터미널 이라든가 아이피, 네트웍주소,

도메인명등이 온다. 역시 ALL, EXCEPT를 쓸수 있으며, 터미널 네임은 tty1 처럼

/dev를 떼고 쓰고, . 으로 시작하는 도메인명은 해당 도메인의 모든 호스트,

.으로 끝나는 아이피 주소는  네트웍 주소로 취급되어 해당 네트웍 주소에 속하는

모든 호스트와 매칭된다.

그리고 LOCAL 이라고 해서, localhost를 지칭하는데 쓸수도 있다.

실제 사용한 예를 보면

    -:charm:ALL EXCEPT LOCAL

charm이라는 계정은 로컬호스트를 제외하고는 접속을 제한하는 설정이다.

이외에도 몇가지 예가 설정파일에 주석으로 달려 있으니 참조하고…

여기서 끝이냐.. 하면 그건 아니다.

PAM을 사용하는 서비스(?)의 설정파일에서 이 access.conf 파일을 사용하도록

설정을 해줘야 한다. 이 쪽은 더 잘 모르겠지만…

login 설정 파일에 있는 부분을 보고했다.

ssh는 ssh라는 설정 파일이 따로 있으므로 여기다가

    account  required       pam_access.so

라고 추가해 준다.

자.. 그럼 이제 charm이라는 계정은 로컬호스트에서만 접속할 수 있게 되었다.

http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html

John the Ripper

언젠가 부터 SSH를 통해 무작위로 아이디와 패스워드를 대입하는 공격이 유행하고 있다.

로그를 살펴보면 하루라도 그런 로그가 없는 적이 거의 없으니…

아니나 다를까.. 깐지 채 일주일도 되지 않은 서버에 그런 로그가 보이기 시작하고 있다.

일단은, 이런 놈들을 조금이라도 막기 위해서 iptables 사용법을 좀 배워두고…

오늘은 생각난 김에 이게 사람이 직접하는 건지 웜 같은 건지 알아보려고

구글신께 물어보았다.

대충 몇가지 읽어 본바로는 웜 같은건 아닌거 같고… 주로 중국애들이 brute force로

공격하는 거란다..

암튼 그런 글들을 읽다가 우연히 발견한 것이

“Jonh the Ripper”

라는 패스워드 크래킹 툴이다.

첨에는 ‘오호~ 이런 것도 있군’ 이라는 생각에 설치하고 돌려봤는데…

이거 생각외로 강력한거 같다.

아직 옵션 같은 건 잘 모르겠는데…. 간단한 패스워드는 -single 옵션을 붙이고

돌려 보면 간단하게 찾아내 버린다. 아이디 뒤에 00 같은거 붙이는 패스워드는 직빵이다.

그래.. 저런건 간단한 규칙이니까 싶은 생각도 들지만…

아무런 옵션도 주지 않고 돌려 버리면… comeng 이런 패스워드도 찾아버린다!!

저건 컴퓨터 공학을 뜻하는 computer engineering에서 각각 첫 3자씩을 딴것으로

사전에 존재하는 단어도 아니다!

헉… 이런걸 어떻게….

생각할 수 있는건 글자를 하나하나 바꿔가면서 일일이 대입하는 건데…

이건 완전 무식한 방법이지만… 물론 확실히 찾을 수 있는 방법이기도 하다.

(물론 시간이 엄청나게 많이 걸릴 가능성이 높지만…)

설마 단순히 그런 알고리즘을 사용하는건 아닐꺼라는 생각도 들지만..

실제 시간이 많이 걸리기는 한다.(한 1시간쯤 돌린거 같은데 끝이 안난다-_-)

음.. 암튼 꽤 쓸만한 툴인거 같네… 사용법을 좀 익혀놔야 겠다.

http://www.openwall.com/john/