Unix/Ubuntu

Ubuntu: OpenLDAP + Samba

ForceCore 2009. 3. 23. 19:45
요약:
1. 삼바 서버를 tdbsam 백엔드로, standalone모드로 돌린다. 아래 설정을 긁어붙이든지 하라.
2. pam 을 수정해서, pam_sambapass.so를 쓰자. 이는 ldap계정의 비번으로 삼바의 tdbsam 데이터베이스의 비번을 새로 assign시킨다.

삼바는 LDAP 계정과 연동을 하려면 머리가 빠진다... 왜냐... 삼바는 액티브디렉토리(=LDAP) 이런 것과 연동되면서 복잡한 LDAP 연동 시스템을 갖추었기 때문이다.

그냥 대충 ssh로 OpenLDAP 접속할 수 있는 사람들이 삼바도 아용하게 하면 좋겠다. 간단히 되면 좋겠는데, OpenLDAP에 연동시키려면 Manager 비번도 지정해주고 ldap://어쩌구 하는 URI도 제시해야 하고... 설정이 너무 복잡해진다. 필자는 그런 복잡한 서버는 원치 않는다.

필자는... 간단한 해결책을 찾았다. pam_smbpasswd 를 이용하는 것이다!
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/pam.html
이것을 사용하면...
사용자가 비번을 사용하는 서비스를 이용하기만 하면, 그 비밀번호를 이용하여 smbpasswd 명령어를 통해, 삼바의 자체 사용자 DB의 비번을 그 비번으로 assign 해버린다.

즉... 메일클라이언트가 되었든, FTP가 되었든, SSH가 되었든 이런 것들로 한 번만 로그인 하면, 삼바도 곧 이용 가능해지는 것이다!

필자는 삼바의 backend 를 tdbsam 으로 잡았다.

필자의 smb.conf이다:
force@lab:/etc/pam.d$ sudo testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = LAB
        server string = %h server (Samba, Ubuntu)
        map to guest = Bad User
        obey pam restrictions = Yes
        passdb backend = tdbsam
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        dns proxy = No
        panic action = /usr/share/samba/panic-action %d
        invalid users = root

[homes]
        comment = Home Directories
        valid users = %S
        read only = No

사용자가 자신의 홈디렉토리를 볼 수 있는 파일서버를, standalone 모드로 돌린다. 유저는 삼바 자체 db로 관리한다. 그냥 이 대로만 하면 새 사용자가 추가될 때마다
$ sudo smbpasswd -a 새사용자ID
를 해주어야 해서 좀 번거로울 것이다.

이제 PAM 모듈을 설정할 차례이다. 필자는 여기서 해메었는데... default로는 pam_smbpass.so가 설치되지 않기 때문이다 -_-^;;;

$ sudo apt-get install libpam-smbpass

이렇게 PAM 모듈을 일단은 설치해주자. 물론, apt-get install samba 는 오래전에 해놓았지;;

이제 PAM모듈을 설정해줄 차례.
/etc/pam.d에 들어가자.
필자의 common-auth 파일이다. 한 줄이 추가되었다. 어느 위치에 들어가야지 제대로 의미가 사는 설정인지 필자는 잘 모르겠다. 하지만 작동하는 것을 올렸다는 점은 알아두라;;
auth       required     pam_env.so
auth       sufficient   pam_unix.so likeauth nullok
auth       optional     pam_smbpass.so migrate
auth       required     pam_group.so use_first_pass
auth       sufficient   pam_ldap.so use_first_pass
auth       required     pam_deny.so

common-password 파일:
password   sufficient   pam_unix.so nullok md5 shadow
password   optional     pam_smbpass.so nullok use_authtok try_first_pass
password   sufficient   pam_ldap.so
password   required     pam_deny.so
요렇다. 역시 한 줄이 추가된 것이다.

안 건드려도 되지만, 참고로
common-account 파일:
account    sufficient   pam_unix.so
account    sufficient   pam_ldap.so
account    required     pam_deny.so

역시 안 건드려도 되지만 그냥 참고로
common-session 파일:
session    required     pam_limits.so
session    required     pam_mkhomedir.so skel=/etc/skel/
session    required     pam_unix.so
session    optional     pam_ldap.so

이 대로 하면 성공할 것이다... 아마도 -_-;; 안 되면... 원인은 잘 모르겠군. 삽질을 해봐야 한다.