2008년 10월 15일 수요일

sendmail 보내는 메일 서버 설정방법

svn commit시에 메일 발송을 하기 위해 알아 본 설정 방법은 아래와 같이 간단하다.
(참고 : Fedora8 버젼 환경에서 작업한 내역임)

* 보내는 메일서버 설정 방법
sendmail 설정파일(/etc/mail/sendmail.cf)에는 기본적으로 smtp가 닫혀 있도록 설정이 되어 있다.
smtp를 열어놓기 위해서는 sendmail.cf 파일에서 한줄만 수정하면 된다.

1. sendmail.cf 수정 방법
sendmail.cf 파일에서 아래부분을 찾아 주석 처리가 되어 있다면 주석을 풀고 수정을 하고
sendmail 데몬을 리스타트(/etc/rc.d/init.d/sendmail restart 하면 smtp가 열리게 되며
보내기가 가능하게 된다. 아래와 같이 수정 하도록 하자.

#O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
-->O DaemonPortOptions=Port=smtp, Name=MTA


위와같이 smtp가 완전히 허영된 경우, 아웃룩들의 메일 클라이언트 프로그램을 이용해서 메일을
발송할 수 있게 된다. 근데 여기서 문제점은 어디에서나 접근 가능하게 되어 span 메일이 릴레이가
될 가능성이 높다
spam 릴레이를 방지하기 위해서 서버내에 존재하는 계정으로 인증을 거쳐서 메일을 발송하도록,
auth-smtp설정을 하면 된다.(auth-smtp 설정 방법은 차후에...)

2008년 8월 5일 화요일

시스템 명령어인 netstat 를 사용하는 방법

#netstat -nap (열려 있는 모든 포트)
#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)


포트스캔 명령어로 확인 하는 방법

# TCP 포트 확인 방법
nmap -sT -p 1-65535 localhost
# UDP 포트 확인 방법
nmap -sU -p 1-65535 localhost
# 네트워크에 열린 포트 확인
nmap -sX -p 22,53,110 211.239.111.*


lsof 명령어로 확인 방법

# 모든 네트워크 소켓 확인
lsof -I

2008년 7월 7일 월요일

Mysql Password변경

ps -ef | grep mysqld

killall mysqld

cd /usr/local/mysql/bin/

./safe_mysqld --skip-grant-table &

ps -ef | grep mysqld

./mysql -u root mysql

update user set password=password('h5530186') where user='root';

flush privileges;

exit

killall mysqld

./safe_mysqld &

./mysql -u root -p mysql

root password변경

mysqladmin -p현재패스워드 password변경패스워드

2008년 6월 12일 목요일

SCP를 사용하여 자동으로 데이터백업

어떻게 하면 SCP를 이용해 Password를 입력하지 않고 백업할 파일들을 백업서버로 가지고 올 수 있을지를 고민 하다가 알게 된 2개의 사이트를 참조하여 끝내는 성공하게 되었다.
방법은 아래와 같이 하면 된다.

우선 백업서버를 A라고 하자 그리고 백업을 해야 할 파일들이 있는 서버들을 B, C, D...

자 그러면 트러스트 관계를 만들어 보도록 하자.
1. scp를 사용하여 자동으로 데이터를 복사하기 위해서는 두대의 머신이 트러스트(Trusted) 관계에 있어야 된다. 두대의 서버를 트러스트 관계로 만들기 위해서는 공개/개인 dsa 키 쌍을 생성하여 트러스트 관계의 서버에 복사해야 된다. A서버에 ssh나 telnet으로 로그인하여 root 유저에서 다음 명령을 따라 한다.


[root@localhost /]# /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): Enter
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
a5:41:46:fe:37:f5:54:1c:3f:7b:f3:63:16:ea:34:fd root@www.rickinc.com


위와 같이 키 생성이 완료가 되었다면 A서버에서 생성한 키를 B, C, D... 서버에 키를 복사를 다음과 같이 한다.


[root@localhost /]# /usr/bin/scp /root/.ssh/id_dsa.pub B, C, D... 서버 유저ID@B, C, D... 서버 IP:~/:
The authenticity of host 'rickinc.com (172.16.1.33)' can't be established.
RSA key fingerprint is 0c:99:a2:e4:1b:2f:fc:b2:46:f5:a6:b5:cd:12:2a:ec.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rickinc.com,172.16.1.33' (RSA) to the list of known hosts.
B, C, D... 서버 유저ID@B, C, D... 서버 IP's password: (서버 계정의 패스워드 입력)
id_dsa.pub 100% ********************************************************************************* 608 00:00


위와 같이 B, C, D... 서버에 키를 복사하고 난 후 키를 복사한 B, C, D... 서버에 유저ID로 로그인 한다. 그리고 앞에서 복사한 파일의 내용을 .ssh/authorized_keys 파일에 추가하기 위해 유저의 홈 디렉터리에서 다음 명령을 실행한다.


[userid@testserver ~]$ mkdir .ssh
[userid@testserver ~]$ /bin/cat id_dsa.pub > .ssh/authorized_keys


위의 처리 부분이 잘되었는지 확인 하는 방법은 아래의 명령어를 사용하면 된다.

[userid@testserver ~]$ /bin/more .ssh/authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBANEuZIB0w4k+VQsAFDJ0E+J3MQ+7FvHZzFJA4E5Y7fVvtRZEaBKo3kMaH3wb6rKSXVWw8X3pX4442lzNq7g0zCmcXSUZrH3mNQ1jVCj0
it2F9H3rv6zwntWAgJNDFRyZBXcv6ijVuHm4zNqxSlqG3cZLCtx0O8GKsbqNSJAZk/8NAAAAFQDKW7n7BpGcnkfN1MIeRl70ybtiYQAAAIEAr6PmB4ThIflrjojmajfp3y0l
IE2GT5aOC0Y0Guyi9shrnErgqb8vVHsuKfxE+DB/gTPZpi5UigOxudO6ZIL0HN4l1MlpeuBInkjv3jG+qDQZs2YieN2VwOSkWgNTCzAffmTD0z0cfntmnCPCjYkGgwyGRz1x
gU5NbY2dXyK6NbAAAACALzt5avRoktIybJkeZNp0/1xvkD/gBXFbRbkV6eRdG7kKg1LlLapAtxynRaALIeBpHvRHkSlyovZa0BTTGMxy5dsLwVbpISPybqqHDlmnFID3jtwi
855OLwiHVGf/Hj7hmlt1sLMSMiK8nEGZRm2QqtgPKodEP1Dm6HLUoLRHEGo= root@rickinc.cm


확인이 완료 되었다면 보안을 위해 B, C, D... 서버에서 사용한 키 파일을 삭제하고 키가 저장된 파일의 퍼미션을 변경하도록 한다.


[userid@testserver ~]$ rm -f id_dsa.pub
[userid@testserver ~]$ chmod 700 .ssh
[userid@testserver ~]$ chmod 644 .ssh/authorized_keys


여기까지 완료가 되었다면 이제 A서버에서 B, C, D... 서버에 패스워드 없이 접근이 가능하다.
접근하는 방법은 다음과 같이 하면 된다.
/usr/bin/scp 유저ID@서버IP:/home/test/index.html .

이렇게 복사가 되는 화면을 보게 될것이다.

2008년 5월 29일 목요일

효과적인 유저 인터페이스 디자인을 위해서는 고려되어야 할 주요 원칙이 있으며, 이는 아래와 같은 10가지 원칙으로 요약 될 수 있다.

[UI Design 원칙 ]
- 가시성의 원칙 (Visibility)
- 조작결과 예견의 원칙 (Natural Mapping)
- 일관성의 원칙 (Consistency)
- 제한점 이용의 원칙 (Constraints)
- 단순성의 원칙 (Simplicity)
- 지식분배의 원칙 ( Knowledge in the World & Head)
- 조작오류의 원칙 (Design fo Error)
- 표준화의 원칙 (Standardization)
- 행동 유도성의 원칙 (Affordance)
- 인체 데이터 적용의 원칙 (Anthropometry)


가시성의 원칙 (Visibility)
제품의 주요기능은 노출을 시켜서 조작이 쉽게 되도록 해야 한다
- 어떤 기능이 가능한가?
- 어떻게 조작하여야 하나?
- 조작결과 상태가 어떠한가?

조작결과 예견의 원칙 (Natural Mapping)
사용자가 제품을 조작하여 작동시킨 결과를 조작 부위만 보고도 미리 예견할 수 있도록 하여야 한다.
- 공간적 유추, 문화적 표주느 형태적 유추

일관성의 원칙 (Consistency)
제품의 조작방식에 일관성을 제공함으로써 사용자가 쉽게 기억할 수 있고 빠르게 적응할 수 있도록 해야한다.

제한점 이용의 원칙 (Constraints)
제품의 조작상의 제한사항을 이용하여 가능한 선택의 여지를 줄여서 조작방법이 명확하도록 하여야 한다.

단순성의 원칙 (Simplicity)
- 제품의 구조를 단순화 시켜서 조작시 요구되는 노력을 최소화 시킨다.
- 인간의 기억구조에 적합한 구조로 조작의 방법을 통일하고, 정신적 부담을 줄일 것.

지식분배의 원칙 ( Knowledge in the World & Head)
- 제품의 조작에 요구되는 지식은 사용자가 익힐 필요없이 제품자체에 자연스럽고 명료하게 나타나도록 디자인 되어져야 하나, 사용자가 학습하여 지식을 익혀야만 할 경우에는 사용자의 기억 구조에 적합하도록하여 학습하기 쉽고 기억하기 쉽도록 제품과 사용자 모두에게 상호 보완적으로 분배되어야 한다

조작오류의 원칙 (Design fo Error)
일단 발생된 오류는 쉽게 발견될 수 있도록 하고, 발견된 오류의 수정은 최대한 쉽도록 디자인 한다.

표준화의 원칙 (Standardization)
사용자 인터페이스 디자인의 여러 원칙 적용이 어려워 원칙에 배치되는 임의적 디자인이 될 수 밖에 없을 경우, 이를 표준화하여 한번 학습하면 효과적으로 사용할 수 있또록 하여야 한다.

행동 유도성의 원칙 (Affordance)
사용자에게 제품을 어떻게 다루면 될 것인가에 관한 강력한 단서(조작의 가능성)를 제공하도록 한다

인체 데이터 적용의 원칙 (Anthropometry)
사용자의 성별, 연령, 인종 등에 따라 신체의 크기가 다양하므로 다양한 계층의 사용자를 수용할 수 있도록 고려해야한다.

사용자-인터페이스에 영향을 미치는 정보원





출처 : 한국HCI연구회