요약:
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이다:
사용자가 자신의 홈디렉토리를 볼 수 있는 파일서버를, standalone 모드로 돌린다. 유저는 삼바 자체 db로 관리한다. 그냥 이 대로만 하면 새 사용자가 추가될 때마다
이제 PAM 모듈을 설정할 차례이다. 필자는 여기서 해메었는데... default로는 pam_smbpass.so가 설치되지 않기 때문이다 -_-^;;;
이렇게 PAM 모듈을 일단은 설치해주자. 물론, apt-get install samba 는 오래전에 해놓았지;;
이제 PAM모듈을 설정해줄 차례.
/etc/pam.d에 들어가자.
필자의 common-auth 파일이다. 한 줄이 추가되었다. 어느 위치에 들어가야지 제대로 의미가 사는 설정인지 필자는 잘 모르겠다. 하지만 작동하는 것을 올렸다는 점은 알아두라;;
common-password 파일:
안 건드려도 되지만, 참고로
common-account 파일:
역시 안 건드려도 되지만 그냥 참고로
common-session 파일:
이 대로 하면 성공할 것이다... 아마도 -_-;; 안 되면... 원인은 잘 모르겠군. 삽질을 해봐야 한다.
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
이 대로 하면 성공할 것이다... 아마도 -_-;; 안 되면... 원인은 잘 모르겠군. 삽질을 해봐야 한다.