미완성 -_-...
아직 성공 못함
새 학부서버에는 계정 관리를 어떻게 할지 고민해봤다.
/etc/passwd ?
Open LDAP이나 기타 디렉토리?
MySQL ?
/etc/passwd가 가장 안정적이기는 한데 -_-a...
디렉토리 계통은 쉽게 다루기가 어려운듯 :S ??
사용자 데이터베이스가 좀 더 안전하게 저장되면서 나중에 다른 컴퓨터로 migrate 하기 쉬운 것...
뭐 일단은 새로운 것을 시도해본 뒤 결정해도 늦지 않겠지.
MySQL로 계정을 돌리되, 다른 프로그램과 쉽게 연동이 되도록 PAM으로 접근하도록 한다.
그래서 PAM-MySQL로 gogogo.
http://pam-mysql.sourceforge.net/
http://savannah.nongnu.org/projects/nss-mysql
pam-mysql을 들어가보니 다른 사용자의 정보...
홈이 어딘지 실명이 뭔지는... nss mysql을 참고하라고 한다.
그리고
http://libnss-mysql.sourceforge.net/
libnss-mysql도 존재한다 (!)
nss mysql을 붙들고 반나절 있었는데 실패 -_-;;
프로젝트나 홈페이지를 보니 libnss-mysql이 더 active한듯.
그것으로 gogogo...
소스코드를 받았다.
$ ./configure
를 했는데 안 된다.
mysql library가 어디 있는지 못 찾는 것이다 -.-!
$ ./configure --with-mysql=[여러가지]
여러가지 부분에
locate mysql | grep .so
에서 나오는 결과를 시도해봤는데 죽어도 인식 못하더군 -.-;;
configure파일을 컨닝해서
$MYSQL_LIB_DIR
를 잘 설정해주면 된다는 것을 알아내었다.
$ export MYSQL_LIB_DIR=/usr/lib64/mysql
로 설정하고
$ ./configure 를 했다.
$ make
이상 없음
# make install
MySQL DB를 설정해야지;;;
일단은
/etc/libnss-mysql.cfg
/etc/libnss-mysql-root.cfg
에서 유저의 비번을 설정해준다.
컴파일 한 디렉토리의 sample디렉토리로 들어가면
linux가 있을 것이다.
그 안의
sample_database.sql
이 파일에서
# The permissions ...
GRANT USAGE ON *.* TO`nss-root`@`localhost` IDENTIFIED BY 'rootpass';
GRANT USAGE ON *.* TO`nss-user`@`localhost` IDENTIFIED BY 'userpass';
'rootpass'
'userpass'부분을 적절히 설정해준다.
$ mysql -u root -p < sample_database.sql
이렇게 하면 auth라는 db가 만들어지고, 그 안에 샘플로 유저와 그룹을 하나 넣어 줄 것이다.
권한 설정도 잘 되어있다 -_-;;;;
그 다음이 문제.
$ getent passwd
명령을 치면 유저가 나오지를 않는다 (!)
그게 왜 그런고 하니...
http://libnss-mysql.sourceforge.net/libnss-mysql/DEBUGGING
이 글을 따라가보면서 디버그 해보자.
$ strace -e read=all -e write=all -x -o trace.out id cinergi
( cinergi는 샘플로 생성되는 유저이다. 유용하니까 일단은 db에 놔두도록 하자. )
이 명령을 실행하면 id cinergi명령이 수행하는 것을 추적해서 trace.out파일에 저장한다.
디버그 매뉴얼에 있는대로 일단은 libnss계열 파일이 로드되는지 체크해봤는데 없다.
필자의 trace.out
open("/lib64/tls/x86_64/libnss_mysql.so.2", O_RDONLY) = -1 ENOENT
엉뚱한데서 libnss_mysql.so.2를 찾고 있다 :(
+---------------------------------------+
| $ locate libnss_mysql
| /lib/libnss_mysql.so
| /lib/libnss_mysql.la
| /lib/libnss_mysql.so.2
| /lib/libnss_mysql.so.2.0.0
+---------------------------------------+
다른 libnss 계열 파일들이 /lib64 디렉토리에 있으니 이들을 옮겨주도록 하자.
다시 strace 명령을 한뒤 trace.out을 읽음.
라이브러리는 잘 읽어들인다.
mysqlclient 계열 라이브러리도 읽어들일 것이다.
이 정도 되면 된다고 매뉴얼에 있는데 :S