분류 전체보기 (199)
ººº::Development™:: (66)
::JAVA™:: (9)
::C/C++™:: (6)
::Perl/Python™:: (2)
::WEB™:: (7)
::Media™:: (2)
::Database™:: (8)
::Linux™:: (12)
::zEtc™:: (20)
ººº::Learning™:: (31)
ººº::Information™:: (37)
ººº::Note™:: (11)
ººº::Photo™:: (50)
ººº::zEtc™:: (3)
rss

믹시
tistory 티스토리 가입하기!
'ººº::Development™::/::Linux™::'에 해당되는 글 12건
2011. 6. 22. 15:29
지금부터 openLDAP을 사용하기 위한 openLDAP server의 기본 구성관련된 설정에 관련된 사항을 살펴보자

설정 파일의 경로는 rpm으로 설치했을 경우 "/etc/openldap/sldap.conf" 이곳에 존재한다.
위 파일을 vi 혹은 다른 editor로 open 한 다음 아래 라인을 추가한다.

database  bdb
suffix        "db=example,dc=com"
rootdn      "cn=Manager,dc=example,dc=com"
rootpw      {SSHA}aaaaaaaaaaaaaaaaaaaaaa
directory   /var/lib/ldap/example.com 


suffix : openLDAP에서 사용하는 최상위 DN( 이전 database에서 잡아놓은 database name과 동일하게 작성하면 된다.
rootdn : openLDAP의 관리용 DN으로 object, 사용자 추가 삭제 등에 사용되는 DN이다.
rootpw : 해당 DN을 인증하기 위한 root 패스워드로 string으로 작성해도 되고 암호화된 암호로 지정할 수 있다. 이전 slappasswd로 생성된 패스워드를 사용하면 된다. slappasswd 사용은 권장한다.
directory : database의 위치

위와 같은 설정만 해주어도 기본적으로 openLDAP을 사용하는데 문제는 없다. 하지만 실제 사용을 위해서는 아래와 같은 보안 설정을 해주어야 한다고 한다. 나는 아래 일반 사용자가 자신의 패스워드를 변경할 수 있도록 혀용하는 설정만 사용하고 있다

* 일반 사용자가 자신의 패스워드를 변경할 수 있도록 허용한다.

access to attrs=userPassword

        by self write

        by anonymous read

        by * auth


위 설정 이외에도 여러가지 설정들이 있는데 그 부분은 실제 적용하는 가운데 오류를 발생해서 아직까지는 설정에 적용해 보지 못하였다. 내 생각에는 내부적으로 사용하기 위해서는 이정도 설정만으로도 충분히 사용 가능하다는 생각이다.

물론 운영중 추가한 설정 내용은 추후 포스팅을 따로 하겠다. 아직까지는 큰 이슈 사항은 없는 관계로 기본 설정은 이정도에서 마무리... ㅋㅋㅋㅋ


위 내용은 인터넷에 돌아다니는 내용을 내가 따로 수정한 사항입니다. 최대한 출처를 명시하고 트랙백을 달아가겠지만 혹시라도 빠지거나 할 수 있습니다. 내용을 보시고 혹시 동일 내용을 가지고 계신 분이 계시면 연락주시기 바랍니다. 출처를 최대한 밝히도록 하겠습니다.
다시한번 말씀 드리지만 위 내용은 인터넷에 이미 존재하는 글을 제가 보기 편하게 따로 편집하고 설치 및 운영하면서 느끼는 점을 첨부함을 밝힙니다. 


 


2011. 6. 21. 15:46
openLDAP을 실행하기 위해서 필요한 client 와 server package를 정리한다. 필요한 package는 http://rpm.pbone.net/ 이곳에서 자신의 OS에 마춰서 다운로드 받는다.

openLDAP Server Package

openldap
openldap-clients
openldap-devel
nss_ldap
openldap-servers 


openLDAP Client Package

openldap
openldap-clients
openldap-devel
nss_ldap 

nss_ldap : PAM이 LDAP 데이터베이스를 통한 인증을 위해 필요한 Package

위와 같은 Package를 설치 한 다음에는 Domain 및 ldap root password 등 아주 기본적인 구성을 설정한다.
password 이후의 구성은 다음 포스트에 자세하게 알아보도록 하자(물론 자세해봐야 아주 기초적인거지만! ㅋㅋㅋ)

Create a Database directory

# mkdir /var/lib/ldap/example.com
# chown ldap:ldap /var/lib/ldap/example.com 

위 데이터 베이스는 LDAP이 사용자 정보를 검색하기 위한 Domin이라고 생각하면 된다. 이 Domain을 기준으로 Client가 Server로부터 사용자 정보를 검색하게 되는것이다.
그리고 ldap계정과 그룹은 LDAP관련 Package를 설치하면 자동으로 생성된다.

자 기본 설정을 위한 마지막 단계로 openLDAP이 사용하는 root password를 설정한다.
Create an LDAP "root" password

# slappasswd
New password:
Re-enter new password:
{SSHA}aaaLa/aaaaaaaaaaaaaaaaaaaa

위에서 생성되는 {SSHA}로 시작되는 password key값은 따로 저장을 해놓도록 하자. 이후 openLDAP 구성을 위해 필요한 내용이다.
  

위 내용은 인터넷에 돌아다니는 내용을 내가 따로 수정한 사항입니다. 최대한 출처를 명시하고 트랙백을 달아가겠지만 혹시라도 빠지거나 할 수 있습니다. 내용을 보시고 혹시 동일 내용을 가지고 계신 분이 계시면 연락주시기 바랍니다. 출처를 최대한 밝히도록 하겠습니다.
다시한번 말씀 드리지만 위 내용은 인터넷에 이미 존재하는 글을 제가 보기 편하게 따로 편집하고 설치 및 운영하면서 느끼는 점을 첨부함을 밝힙니다. 

 


2011. 6. 21. 14:15
이제 시간이 나서 정리를 시작해본다. 인터넷을 검색하면 많은곳에 자료들이 있지만 머라고 검색을 했는지 기억이 안나는 관계로 이곳에 다시 정리를 시작해본다.

LDAP 연구소에서 관리하는 서버들의 사용자 권한 문제로 시작해서 어떻게 해결을 할까 하다가 지인을 통해서 알기 시작한 LDAP 이제부터 LDAP이 무엇이고 LDAP을 어떻게 사용하는지 아주 기초적인 내용을 정리한다.

그럼 첫번째로 LDAP이란? 무엇일까..??

LDAP(Lightweight Directory Access Protocol, 라이트웨이트 디렉터리 액세스 프로토콜)은 TCP/IP위에서 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜이다.

디렉터리는 논리, 계급 방식 속에서 조직화된, 비슷한 특성을 가진 객체들의 모임이다. 가장 일반적인 예로는 전화 번호부(telephone directory)가 있는데 가나다 순의 일련의 이름을 가지고 있고, 이름마다 전화 번호와 주소가 포함되어 있다. 이러한 기본 설계 때문에 LDAP는 인증을 위한 다른 서비스에 의해 자주 사용된다.

LDAP 디렉터리 트리는 선택된 모델에 따라 다양한 정치적, 지질학적, 조직적 경계를 반영하기도 한다. 오늘날 LDAP의 배치는 최상위 수준의 계급을 구조화하기 위해 도메인 이름 서비스의 이름을 사용하는 경향이 있다. 디렉터리 안에 들어가면 들어갈수록 사람들, 조직, 프린터, 문서, 그룹 등을 대표하는 항목들이 나타난다.

LDAP의 현재 버전은 LDAPv3이다.  


위와 같이 정리가 되어 있지만 난 그냥 "계정관리서버", "LoginServer" 등과 같이 아주 간단하게 생각하고 활용하고 있다. 이 이상의 내용은 내 범위를 벗어나는 문제일꺼 같아서!! ㅋㅋㅋㅋ

위와 같은 프로토콜을 기반으로 공개된 엔진이 openLDAP(http://www.openldap.org)이다. 앞으로 이 openLDAP을 설치하고 setting하는 방법을 하나하나 알아가 보도록 하자..


위 내용은 인터넷에 돌아다니는 내용을 내가 따로 수정한 사항입니다. 최대한 출처를 명시하고 트랙백을 달아가겠지만 혹시라도 빠지거나 할 수 있습니다. 내용을 보시고 혹시 동일 내용을 가지고 계신 분이 계시면 연락주시기 바랍니다. 출처를 최대한 밝히도록 하겠습니다.
다시한번 말씀 드리지만 위 내용은 인터넷에 이미 존재하는 글을 제가 보기 편하게 따로 편집하고 설치 및 운영하면서 느끼는 점을 첨부함을 밝힙니다. 





2011. 4. 5. 15:42
이전 포스트에서 ssh를 통한 직접적인 root접근을 제한하는 방법을 정리했는데 이 뿐만 아니라 su를 통한 root접근도 특정 계정/그룹 만 허용을 해야하는 경우도 생긴다. 아래와 같은 방법으로 정리해본다.

1. 접근을 허용한 group 생성
2. /etc/group 파일을 열어 특정 그룹의 su 접근 계정 추가.
3. su 소유권 변경
4. su 퍼미션 변경
5. ssh 데몬 재시작 

 
 위 방법으로 하나하나 설명해보면

$ addgroup sugroup
$ vi /etc/group
  => sugroup:x:1000:root,(su 접근 계정)
  : ex) sugroup:x:1000:root  =>  sugroup:x:1000:root,testuser  

 
위와 같이 수정 후 저장한 다음에 su의 소유권과 퍼미션을 변경한다.

$ chown root:sugroup /bin/su
-rwxr-xr-x    1 root  sugroup  44444 1월  11  2011 su 

$ chmod 4110 /bin/su
---s--x---    1 root  sugroup  44444 1월  11  2011 su 

 
su의 소유권과 퍼미션을 변경한 다음 "service sshd rstart" 혹은 "/etc/init.d/sshd restart"로 ssh 데몬을 재시작 하면 해당 그룹의 사용자만이 su접근을 할 수 있다.
 
추가적으로 다른 그룹에 소속된 사용자를 su로 추가할 경우 usermod를 통해 사용자 그룹을 추가한 이후 위와 같은 방법으로 추가하면 된다.

$ groups [username]  => 소속된 그룹확인
$ usermod -G enwgroup [username]  => 그룹 지정
$ id [username]  = 해당 id의 속성 확인 

 


2011. 4. 5. 15:35
ssh를 통해 원격의 서버로 접근할 경우 root접근을 제한해야 하는 경우가 있다. 이는 root비밀번호가 노출되었을 경우의 위험이 너무나도 크기 때문이다.
연구소에서도 이러한 문제로 관리하고 있는 모든 서버의 ssh로의 root접근을 제한해야 하는 상황이 발생하였다. 그래서 또다시 기억하고지 아래와 같이 정리를 해본다.

1. /etc/ssh/sshd_config 파일 수정
2. PermitRootLogin을 no로 수정
3. sshd 데몬 restart 

 
vi editor를 통해 /etc/ssh/sshd_config 파일을 열어서 PermitRootLogin 항목을 찾는다. #을 통해 주석처리가 되어있으면 아래와 같이 주석을 해제하고 값을 no로 설정해 준다.

#LoginGraceTime 2m
#PermitRootLogin yes
#StricModes yes
#MaxAuthTries 6

수정 후

#LoginGraceTime 2m
PermitRootLogin no
#StricModes yes
#MaxAuthTries 6 

 
위와 같이 수정 후 저장한 다음 "service sshd restart" 혹은 "/etc/init.d/sshd restart" 로 ssh 데몬을 재시작 해주면 끝

위와 같이 sshd_config 설정을 해놓으면 ssh로 root접근이 제한되고 일반 계정으로 접속하여 "su -"를 통해 root접근을 해야만 한다.
 


2010. 5. 17. 11:51
현제 연구소에서 사용하고 있는 NFS때문에 umout를 하는경우가 많이 생기고 있다. 그런데 이럴때마다 만나는 device is busy 어찌 해결을 해야하는지 구글링해서 항상 찾아보는데 왜 매번 이져먹을까? 구글링하면 금방 찾지만 그래도 다시한번 정리해본다.

#fuser -cu 디렉토리

umount할 디렉토리를 사용하고 있는 사용자 혹은 프로세스를 확인한다.

#fuser -ck 디렉토리

umount할 디렉토리를 사용하고 있는 사용자 혹은 프로세스를 모두 죽인다.

이후 umount를 진행하면 일사처리로 해결!^^


2010. 4. 8. 15:22
Cluster환경을 구축하다보면 frontnode뿐만 아니라 계산을 담당하는 compute node에서도 수많은 설정과 설치가 이루어진다. 이럴때마다 매번 로그인해서 처리하는것은 여간 번거로운 작업이 아닐것이다. 이럴때 사용할 수 있는게 rsh인거 같다. cluster환경을 구축하면서 많은 문서와 웹검색을 하는 가운데 rsh관련된 내용이 많않는데 머지? 하면서 넘어갔는데 오늘 결국 설정해 버렸다. 설정하고 나니 넘 편하고 좋은거 같다는 느낌이!!  머 문서들 가운데 보안관련된 내용도 있어서 ssh를 사용하는것을 권장하는 문서들도 있지만 cluster와 같이 외부 환경과 분리된 상태에서는 rsh를 사용해도 별 문제가 없고, 작업역시 쉬워지는거 같다.

간단하게 rsh란 remote shell로 보면 된다. 원격에서 해당 호스트의 쉘을 이용하여 작업을 진행할 수 있게 해주는것이라고 보면 된다. rsh를 사용하기 위해서는 먼저 rsh client와 server를 front및 compute node에 설치해 줘야 한다. 해당 package는 인터넷 검색을 통하거나 본 포스팅에서 다운받아 설치하면 된다.

# rpm -Uvh rsh-*.rpm
#rpm -Uvh rsh-server-*.rpm

rsh 설치가 완료되었으면 아래와 같이 설정을 해주면 된다. 설정은 front및 compute node에 동일하게 해주면 된다.

1. /etc/services에 kshell 544/tcp krcmd   # Kerberized 'rsh'(v5)가 들어있는지 확인
2. /etc/xinetd.d/rsh 및 rlogin 에서 desable = yes를 disable = no로 변경
3. /etc/securetty 맨 아랫줄에 rsh와 rlogin 추가.
4. /etc/hosts.equiv 파일을 만들고 rsh접속을 원하는 hostname을 적어준다. 이때 hostname은 /etc/hosts에 명시된 host와 동일해야 한다.
5. /etc/rc.d/inetd.d/xinetd restat로 xinetd demon 재시작

위와 같은 과정으로 설정을 완료하였으면 일반 사용자는 rsh로 원격 호스트로 접속하는데 문제가 없을 것이다.
하지만 root로 접속을 하기 위해서는 몇가지 과정을 더 거쳐야 한다.

1. root 홈디렉토리에 /.rhosts 파일을 생성해서 /etc/hosts.equiv의 내용을 동일하게 써주거나 혹은 별도로 작성해 준다.

만약 위와 같은 방법으로 접속을 시도했을 경우 password를 물어보면

1. /etc/pam.d/rsh 와 /etc/pam.d/rlogin 내용 중 "auth       required     pam_rhosts_auth.so" 이 부분을 "auth       required     pam_rhosts_auth.so promiscuous" 와 같이 수정한다.

만약 위와 같은 방법으로도 password를 물어보면 위 내용을 아이에 주석처리해준다.

설정을 모두 바쳤으면 아래 명령으로 rsh가 정상작동하는지 확인해 보면 된다.
# rsh host1
Last login: Thu Apr  8 14:44:38 from gmi3
[host1] #

# rsh host1 "ls"
.. host1의 root 디렉토리 내용 출력

rsh 파일 다운로드



2010. 4. 1. 15:11
연구실에서 다양한 프로그램과 어플리케이션들을 돌리는 과정에서 대량의 계산이 필요한 어플리케이션들이 있다. 그러한 어플리케이션을 좀더 효율적으로 돌리고 다양한 사용자들의 다양한 Job들을 관리할 필요성이 생겼고, 그로인해 Cluster머신을 생각하게 되었다. 지금 그 첫번째로 Rocks나 여타 Linux cluster를 새로 설치하는것이 아니라 기존에 설치되어 있는 Redhat 기반에서 Cluster를 구성해 본다.

Cluster를 만들기위한 여러 솔루션들이 있지만 무료이면서도 만힝 사용되고 있는 Torque를 이용해 Cluster를 구성해 본다.


1. Torque Download
   Torque는 아래 사이트에서 최신 버전 혹은 원하는 버전을 다운 받도록 한다.
   http://www.clusterresources.com/
   Torque는 PBS를 기반으로 만들어지고 있다고 한다. 그렇기 때문에 PBS에서 사용가능한 명령어는 Torque에서도 사용 가능하다고 되어 있다(만약 이 부분이 틀렸다면 정확한 내용을 알려주세요~~^^)

2. Torque 설치
  Torque는 Front 노트와 Compute노드로 이루어져 있다. 간단하게 설명하면 Frontnode는 작업을 최초 생성하고 Compute노드로 작업을 할당해주는 main head node라고 생각하면 간단하고 compute node는 하위 노드로 단순하게 계산을 처리하는 node로 생각하면 쉽다.

그럼 지금부터 Torque를 설치해 보자
1) Frontnode 설치
# tar -zxvf torque.tar.gz
# ./configure --prefix=/opt/torque --with-server-home-/opt/torque
# make
# make install
  위와 같은 방법으로 Torquq를 설치하면 되고,  configure 옵션은 Torque사이트에보면 더 많은 옵션이 존재한다.
  다음으로 torque의 기본적은 서버 환경을 설정해 보자
# ./torquq.setup root ( torque 압출 해제 폴더)
iniializing TORQUE (admin: ......)
PBS_Ser...
do you wish to continue y/(n) ? y
Max open server : 4
...
######  PBS 에서 사용한 기본적은 compute node 등록
# /opt/torque/server_priv/
# vi nodex
###### PBS 에서 사용한 node 등록
node1 np=4
node2 np=4
 위와 같이 설정을 해주었으면 server의 기본적인 환경은 설정되었다. 설정 중 compute node를 등록하는 부분에서는 vi editor로 nodes파일을 열고(기본은 없다.) compute node로 사용될 서버들의 이름을 적어주고 np옵션은 해당 node의 core수를 기입해 주면된다.

  이 부분에서 유의할 점은 node명을 ip가 아닌 dns명으로 적어주어야 한다(사실 ip로 해보지는 않았음). 보통은 /etc/hosts 파일명에 가상의 cluster ip를 dns명으로 메핑해주고 이곳에 node로 등록해 주면 된다.

2) Compute node 설치
 1)에서와 같이 front node를 설치했으면 이제 실제 계산이 이루어지는 compute node를 설치해야 한다. 설치는 아래와 같다. front node 설치는 아주 간단하다.
# make package
  torque압출 해제 디릭토리에서 make package 명령을 사용하면 compute node에 필요한 package들을 자동으로 만들어 준다. 이렇게 만들어진 package중 mom자가 들어가는 package를 해당 compute node로 복사 이후 아래 명령으로 설치를 계속 진행하면 된다.
# ./torque-package-mom-linux.sh --install
node1: ...
...
node1: Done
 자 이제 job이 실행된 pbs_mom이 정상적으로 설치가 되었다 .그러면 다음과 같이 간단하게 mom 환경 설정을 해준다.
# cd /opt/torque/mom_priv
# vi config
########## pbs_mom config
$pbsserver  node0
#logever     255
위에서 pbsserver는 처음 설치한 frontnode 이름을 명시해 주면 된다.

자 이렇게 모든 설치가 완료되었으면 이제 모든 front 및 compute node에서 pbs_mom을 재실해 준다. 실행파일은 /opt/torquq/sbin/pbs_mom, pbs_server 이다.
다음으로 front node에서 pbsnodes -a 명령을 통해 모든 compute node가 정상적으로 올라오는지 확인하면된다.
정상적으로 pbs_mom이 작동하고 있으면 모든 노드에서 state가 free로 되어 있어야 한다.

다음에 torque를 좀더 자세하게 설정해보도록 하겠다.



2010. 3. 1. 20:21
요즘 일하는 연구실에서 여러 서버를 관리하다보니 각각 Class가 다른 IP를 사용하게 된다. 윈도우에서는 하나의 Lancard에 여러 IP를 셋팅하는 방법을 아는데 리룩스에서는 어찌 하는지 몰라서 구글링 후 해당 내용을 정리해본다.

1. Linux에서 하나의 물리적 LanCard에서 최대 250개의 IP를 Setting할 수 있다고 한다.(진짜인지 아닌지는 모르겠지만)

2. 방법
  방법은 아주 간단하다. 네트웍정보를 가지고 있는 ifcfg-eth0파일을 복사한후 다시 네트웍을 리스타트 해주면 되는것 순서는 아래를 참조
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-eht0:0
# vim ifcfg-eth0:0 아래 내용으로 수정
# ifup ifcgf-eth0:0

3. ifcfg-eht0:0 수정사항
  vi editor로 DEVICE 명을 eth0:0과 같이 동일 이름으로 변경

위와 같은 방법으로 자신이 추가하고자 하는 IP를 계속 추가해 주면 된다.

'ººº::Development™:: > ::Linux™::' 카테고리의 다른 글

[Cluster] rsh 설치 및 설정하기  (0) 2010.04.08
[Cluster] #1 Cluster 만들기 - 설치  (0) 2010.04.01
[Samba] Samba mount #2  (2) 2009.11.06
[Linux] Samba mount  (0) 2009.09.01
[Linux] SSH root접근 제한  (2) 2009.05.18


2009. 11. 6. 10:24
이전에 samba를 이용한 mount를 살펴봤는데 오늘 mount를 자동으로 하는 shell을 만들라고 했더니 mount를 할 때 사용되는 사용자 아이디와 패스워드가 있어야 하는것이다.

그래야 자동으로 해당 사용자를 이용해 mount를 할 수 있으니 말이다!

그래가지고 구글에 알아본 결과 -o 옵션이 존재한다. -o 옵션만 가지고 사용하는 것이 아니라 -o 옵션과 username, password 이 옵션들을 사용한다. 사용방법은 아래와 같다.

# mount -t cifs -o username=guest //ip/mount_point mount_path
# mount -t cifs -o username=guest,password=pwd //ip/mount_point mount_path

위와 같이 username과 password를 사용하면 된다.!!


prev"" #1 #2 next