https://www.openssh.com/releasenotes.html OpenSSH 6.9/6.9p1 (2015-07-01) The default for the sshd_config(5) PermitRootLogin option will change from "yes" to "no". 7.1p2로 패치하고 ssh 접속이 안되서 엄청 삽질 했는데 답은 릴리즈 노트에 있었다. 당장은 sshd_config도 패치할 때 신경을 쓰던지 소스를 수정해서 배포해야겠다. 패치 링크
윈도우로 치면 "바로가기" 같은 개념으로, 리눅스에도 링크 기능이 있다. 특정 파일이나 디렉터리를 링크 걸어 사용할 수 있는데, 링크에는 두 종료가 있다. 첫 번째 : 하드 링크 (hard link)두 번째 : 심볼릭 링크 (symbolic link) 두 개 모두 처리하는 역할은 같지만 개념이 약간 다르다. 그 개념을 바로 잡고 적절하게 사용할 수 있어야겠다. 하드 링크 (hard link)원본 파일과 동일한 inode를 가진다. 그렇기 때문에 원본 파일이 삭제 되더라도 원본 파일의 inode를 갖고 있는 링크 파일은 여전히 사용 가능하다. 사실 링크라는 표현도 애매하다. 같은 inode를 가르키는 서로 다른 이름이라고나 할까? 원본이라는 개념이 없다. 아래 잠깐 예제를 살펴보자. 우선 테스트를 위해 t..
DocuWiki를 사용중이었는데 그 동안은 시간 좌표를 찍을 일이 없어서 시간 동기화 개념이 없었다. 그러던 중 포스팅에 "서명"을 이용할 일이 있었는데 현재 시각이 아닌 GMT가 찍히고 있었다. 서버는 분명 KST로 설정되어 있었지만 DocuWiki에서만 그렇게 인식이 된것이다. 아니 더 정확히 말하면 php 설정이 그러했다. 해결방안으로 php.ini에 date.timezone 이라고 써있는 부분에 Asia/Seoul 값을 넣어준다.date.timezone = Asia/Seoul 그리고 httpd 서비스를 재시작해준다.service httpd stopservice httpd start 정상적으로 시간 좌표가 출력되는 것을 확인해주면 되겠다. 아래 링크를 참고하면 더 도움이 될 수 있겠다. https:..
한글이 깨지는 문제 때문에 파일을 iconv로 변환하거나 vim에서 fileencoding을 변경하는 일이 종종 있다. 하지만 이러한 명령어가 언제나 말을 잘 듣는 것은 아니고 일단... 긴 명령어를 기억해야 하는 것이 녹록치 않다. 그래서 그냥.. vimrc에 등록해놓고 사용하련다.utf-8과 euc-kr을 왔다 갔다 하면서 사용할 수 있겠다.map :e ++enc=utf-8 map :e ++enc=euc-kr이건 단순히 소스코드를 다운받고 한글 주석을 디버깅 하는 용도로 사용하면 요긴하겠다.
multi-thread 환경의 application에서 thread의 동작을 제어하는 가장 노멀한 방법은 pthread_cond_wait, pthread_cond_signal가 되겠습니다. 이 방법의 단점으로는 signal에 의해 wait가 풀리고 동작하는데 걸리는 시간이 N초라고 가정했을때 다시 signal을 받아야 하는 시간이 N초 보다 길어야 한다는 점입니다. 그렇지 않다면 signal의 유실이 초래되어 원치 않는 결과가 도래 된다는 것입니다. 물론 이러한 상황이 존재하는 프로그래밍은 좋지 않은 방법이기에 그런 상황은 애초에 만들지 않는게 좋겠지만, 늘 예외는 있으니까요. 그렇다면, wait하는 N초 동안 받는 signal을 모두 처리 하기 위한 방법으로는 semaphore가 있습니다. semaph..
vim을 더욱 강력하게 사용할 수 있도록 도와주는 plugin 중에 BufExplorer를 소개합니다. 일단 plugin을 다운로드 받도록 합니다. 다운로드 받은 plugin의 압축을 풀고 로컬의 plugin이 설치되어 있는 경로(e.g. /usr/share/vim/vimXX/plugin)에 복사 합니다. 그러면 새로운 vim session에서 바로 사용이 가능합니다. 명령어 실행모드( : ) 에서 BufExplorer를 입력하면 아래와 같이 바로 사용이 가능합니다. 열려있는 세션에 대해 방향키나 vim에서의 이동키로 조작이 가능합니다. 을 눌러서 도움말을 살펴봅니다." Buffer Explorer (7.4.6)" --------------------------" : toggle this help" or..
통상 1,024 미만의 포트는 well-known으로 사용자(혹은 개발자)가 사용하지 않는 포트로 알고 있습니다. 웬만해서는 다른 포트를 사용한다는 의미인데, 그 정의가 뒤쪽에도 있었네요? Registered port 는 아래와 같이 정의하고 있습니다.Ports 0-1023 - well-known portsPorts 1024-49151 - registered ports: vendors use for applicationsPorts >49151 - dynamic / private ports 개발에 참고하면 유용하겠군요 :)
vi(혹은 vim)에서 ASCII Control Codes를 입력하는 방법에 대해 알아봅니다. 일단 ASCII Control Codes는 통상 키보드의 컨트롤키를 누른 상태에서 입력되는 문자를 나타냅니다. 일단 하고자 하는 건 vi에 아래와 같은 예시의 문자를 입력하는 것입니다. ^@^[ ^] shift+6 + * 로 입력되는 문자와는 다릅니다. 실제 vi 에서 확인하면 색상부터 다릅니다. 위는 shift + 6 의 조합으로 표기한 것이고, 아래는 다른 방법입니다. 위는 일반 변수로 선언하거나 macro로 등록할 때 문자열로 입력되지만 아래는 한 개의 단일 문자로 입력 됩니다. 그럼 입력 방법이 어떻게 될까요? 아래와 같은 순서로 입력하면 됩니다. 1. Ctrl + v2. Ctrl + 입력하고자 하는 코..
명령어 옵션에 낚여서 누군가의 삽질 방지 차원으로 기록해둡니다. 정확히 말하면 CentOS man 페이지에 낚였습니다. CentOS 프롬프트에서 man logger를 입력했을때 -f 옵션에 대한 설명은 아래와 같습니다. -f file Log the specified file. 이건.. 누가 봐도 특정 파일에 로그를 기록하는 것처럼 보이는데요. logger의 man페이지를 website에서 찾아보면 상이한 설명이 나옵니다. -f, --file file Log the contents of the specified file. This option cannot be combined with a command-line message. 이 옵션은 특정 파일에 로그를 기록하는 것이 아니라 특정 파일의 내용을 시스템 ..
터미널에 접속했을때 처음 마주하는 프롬프트 메시지(이하 prompt string)를 변경해보자. 일단 prompt string을 변경하기 위해서는 환경변수에 대한 약간의 지식이 필요한데 여기서는 prompt string 만을 다루기 때문에 해당하는 환경변수의 명칭만 알면 된다. prompt string 는 기본적으로 PS1 이라는 변수를 사용한다. (PS2는 논외) 그렇다면 PS1을 어떻게 변경하나? 우리가 Shell Script 에서 다루는 변수와 동일하게 간단히 아래와 같이 변경할 수 있다. PS1='oops' 쓰고 나니 아래와 같이 변경되었다. 입력한 oops라는 문자가 그대로 출력되는 것이 확인된다. 일단 아래와 같이 원래 설정으로 되돌려놓자. PS1='\[\033[01;31m\]\u@\h\[\0..
디버깅 방법에는 많은 종류가 있지만, 사건이 발생 했을때 바로 무언가를 남겨주는 것이 최고의 디버그 메시지가 아닌가 싶다. 관련해서 backtrace 와 addr2line 을 소개하도록 한다. 일단 관련 된 소스는 아래와 같다. 소스의 95%가 vim에서 제공되는 backtrace의 man page 내용이다. 해당 소스는 문제가 있고 죽도록 설계(?)되어 있다. (man page의 오리지널 소스가 그렇다는 것은 아님) #include #include #include #include #include /* sig ==> signal number */ void calltrace(int sig) { int j, nptrs; #define SIZE 3 void *buffer[100]; char **strings;..
OS에서 사용하는 ipc(Inter-Process Communication)를 확인하는 명령어로 ipcs가 있다. 보통 개발시에 등록한 공유메모리나 메시지 큐가 제대로 인식되었는지 확인하게 되는데 일단 명령어를 입력해보면 아래와 같은 화면을 볼 수 있다. ipcs 세마포어와 공유메모리, 메시지 큐가 순서대로 보인다. (OS에 따라 약간의 차이는 있을 수 있다.) 도움말을 보면 아래와 같다. ipcs --help 도움말 역시 OS에 따라 차이가 있을 수 있다. 여기서 유용하게 사용되는 옵션에는 두가지가 있는데, 첫번째로는 현재 커널 파라메타로 입력되어 있는 임계치(limits)다. ipcs -l proc에 있는 값을 조정해서 사용할 수도 있다. OS의 기본 임계치를 아는 것은 개발에 큰 도움을 준다. 유용..
IPv6를 이용한 ssh 접속 실패 로그에 아래와 같은 부분이 발견되었습니다. 2001::......:1%12121212 통상 알고 있는 형태와는 다르게 퍼센트(%) 기호가 들어가고 뒤에는 알수 없는 숫자(하지만 항상 같은 숫자인것으로 보아 더미는 아닌)가 출력되어 있습니다. 도대체 뭘까 하는 마음에 이리저리 검색을 해보았는데 관련된 정보가 생각보다 많았습니다. 검색 키워드는 zone id 그중에 나름 꽤 잘 설명이 되어 있는 링크를 아래 첨부합니다. https://en.wikipedia.org/wiki/IPv6_address 아직 IPv6가 익숙하지 않아서 많은 사람들이 알지 못하는 정보인듯 하여 공유하도록 합니다. (링크 중 관련된 부분 첨부)Link-local addresses and zone in..
mips compiler의 버전이 낮다면.. 정말 많은 삽질을 하게 된다. 단언컨대, mips-gcc 4.3이하 버전에서 평범한 시나리오(별 옵션 없이 cmake)로는 절대 컴파일 안된다. 4.7 버전은 되는것 확인했지만, 그 사이의 버전은 확인하지 못했다. compiler 버전을 바꿀수 없는 상황이라면.. 뭐 어쩔수 없이 몇가지 옵션을 꺼주면 된다. 일단 본인의 생각으로는 xtradb와 innodb 두개만 without 옵션으로 꺼주면 된다. (옵션으로 어떻게 disable 시키는지 모르는 사람을 위해 친절히.. 코드 제공) cmake -DXTRADB_OK=1 -DWITHOUT_XTRADB=1 -DWITHOUT_INNOBASE=1 최소한 이정도..누군가 국내외에서 나와 같은 삽질을 하지 않기를 바라는 ..
본 설정은 ubuntu 3.13.0-32 에서 진행했습니다. 1. 설치 sudo apt-get install tacacs+ 2. 서버 재시작 (디버깅 수정이나, 사용자 추가/변경 후) sudo /etc/init.d/tacacs_plus restart 3. 사용자 추가 1) 사용자 설정 파일 /etc/tacacs+/tac_plus.conf 2) 사용자 등록 형태 key = auth_pass # client 와의 공유 암호 user = oops { default service = permit pap = cleartext "oops_01" } 4. 디버깅 1) 비버깅 설정 파일 /etc/default/tacacs+ 2) 내용 수정 DAEMON_OPTS="-d 2048 -C /etc/tacacs+/tac_plu..
갑작스럽게 sendmail 을 컴파일하고 설치하게 된 이유는 python 에서 SMTP 를 사용해서 mail 을 전송하는데, 에러가 발생했고, 해당 에러의 원인이 localhost 에 sendmail server 가 없었기 때문이었습니다. Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/mnt/ramdisk/do/F3work/F3/nfw2/kct..
주기적으로 proftpd 데몬이 죽는 문제가 발생했습니다. 보통 주말 보내고 월요일에 출근해보면 데몬이 죽어있었는데요 (평소에는 누군가 재시작을 시켜서 눈치를 못챈건지도..) 관련 로그를 보니 아래와 같았습니다. $ sudo cat /var/log/proftpd/proftpd.log.1 .............. 2015-02-23 06:53:10,154 ubuntu14-44 proftpd[61907] ubuntu44.future.co.kr: ProFTPD killed (signal 15) 2015-02-23 06:53:10,176 ubuntu14-44 proftpd[61907] ubuntu44.future.co.kr: ProFTPD 1.3.5rc3 standalone mode SHUTDOWN proft..
mysql 5.0.51a 버전을 사용하다가 10.0.16-MariaDB 로 패치를 하는 과정 중에 겪은 문제 입니다. mariaDB를 깔끔하게 설치하고, client를 접속하려는데 아래와 같은 에러가 발생했습니다. $ ./bin/mysql -u root 'vt100': unknown terminal type. 많은 오픈소스를 포팅하고 사용해봤지만, 이런 에러는 처음이었는데요.. 정확히 무슨 말인지 몰라서 검색을 해보고 해결 방안을 마련해봤습니다. 일단 첫번째 시도는 아래처럼 terminal type을 변경해보았습니다. $ export TERM=linux 하지만 결과는 같았습니다. $ ./bin/mysql 'linux': unknown terminal type. 관련 검색의 대부분이 위와 같은 해결 방법을..
mariaDB를 사용하기 위해 소스를 다운받고 설치를 해보았습니다. apt-get 등을 이용한 방법이 아닌, 소스 자체를 받아서 직접 컴파일 해보았는데요. 아래와 같은 방법으로 진행되었습니다. 일단 mariaDB를 컴파일 하기 위해서는 cmake가 필요 합니다. 이미 cmake가 있는 경우 아래 순서를 무시하고 진행하도록 합니다. 1) cmake 설치 $ wget http://www.cmake.org/files/v3.0/cmake-3.0.2-Linux-i386.tar.gz $ tar xzf cmake-3.0.2-Linux-i386.tar.gz $ mv cmake-3.0.2-Linux-i386 /usr/local/cmake $ ln -s /usr/local/cmake/bin/cmake /usr/local/..
KISA에서 OpenSSL 취약점을 악용한 공격 주의를 당부했습니다. (관련기사) 취약점이 발견된 버전은 OpenSSL 1.0.1부터 1.0.1f 및 OpenSSL 1.0.2-beta와 1.0.2-beta1 등이라고 하는데요, 패치버전은 나와있지만 당장 패치가 어려운 경우 '-DOPENSSL_NO_HEARTBEATS' 옵션을 설정하고 재컴파일 하라고 권고하고 있습니다. 그래서 한번 컴파일해봤습니다. 우선 '-DOPENSSL_NO_HEARTBEATS'는 Configure에서 활성화 시킵니다. Configure의 도움말을 보면 아래처럼 사용할 수 있습니다. 그럼 아래와 같이 사용하면 되겠네요. 하지만 정상적으로 실행되지 않았네요? unix-ish systems라면 ./config를 사용하랍니다. 그럼 아래처..
- Total
- Today
- Yesterday