]> git.plutz.net Git - blast/blob - modules/smb_nis.mk
distinguished nis_server nis_domain and smb_server
[blast] / modules / smb_nis.mk
1 PACKAGES += cifs-utils libpam-mount libpam-script lxdm nis nscd samba-common-bin usermode
2
3 ifndef nis_server
4   nis_server := nismaster
5 endif
6 ifndef nis_domain
7   nis_domain := ${nis_server}
8 endif
9 ifndef smb_server
10   smb_server := ${nis_server}
11 endif
12
13 define DEBCONF +=
14
15 nis     nis/domain      string  ${nis_domain}
16 endef
17
18 export smb_nis_pamscript smb_nis_pammount
19
20 define smb_nis_pamscript :=
21 #!/bin/sh
22
23 # forced through bash, to hide euid from smbpasswd
24 /bin/bash -c '
25   printf "%s\n" "$$PAM_OLDAUTHTOK" "$$PAM_AUTHTOK" "$$PAM_AUTHTOK" \
26   | smbpasswd -sr ${smb_server} -U "$$PAM_USER"
27 '
28
29 exit $?
30
31 endef
32
33 define smb_nis_pammount :=
34 <pam_mount> <debug enable="0" />
35   <!-- Volume definitions -->
36   <volume options="user=%(USER)" fstype="cifs" server="${smb_server}"     path="%(USER)" mountpoint="~" />
37   <mntoptions require="nosuid,nodev" />
38   <logout wait="0" hup="no" term="no" kill="no" />
39   <mkmountpoint enable="1" remove="true" />
40 </pam_mount>
41
42 endef
43
44 .PHONY: _smb_nis
45 _config: _smb_nis
46
47 _smb_nis: ${CFGROOT}/opt/pam_script/pam_script_passwd ${CFGROOT}/etc/security/pam_mount.conf.xml
48 _smb_nis: ${CFGROOT}/etc/yp.conf ${CFGROOT}/etc/defaultdomain
49
50 _smb_nis: ${CFGROOT}
51         sed -Ei 's;^(passwd:|group:|shadow:|gshadow:) *;\1      nis ;' $${CFGROOT}/etc/nsswitch.conf
52         sed -Ei '/pam_(script|mount).so/d' $${CFGROOT}/etc/pam.d/common-*
53         printf '\nauth          optional        pam_mount.so\n' >>$${CFGROOT}/etc/pam.d/common-auth
54         printf '\nsession       optional        pam_mount.so\n' >>$${CFGROOT}/etc/pam.d/common-session
55         printf '\npassword      required        pam_script.so dir=/opt/pam_script\n'  >$${CFGROOT}/etc/pam.d/common-password
56
57 ${CFGROOT}/opt/pam_script/pam_script_passwd: ${CFGROOT} .FORCE
58         mkdir -p "$(dir $@)"
59         printf '%s' "$${smb_nis_pamscript}" >"$@"
60
61 ${CFGROOT}/etc/security/pam_mount.conf.xml: ${CFGROOT} .FORCE
62         mkdir -p "$(dir $@)"
63         printf '%s' "$${smb_nis_pammount}" >"$@"
64
65 ${CFGROOT}/etc/yp.conf: ${CFGROOT} .FORCE
66         printf 'ypserver        %s\n' "${nis_server}" >"$@"
67
68 ${CFGROOT}/etc/defaultdomain: ${CFGROOT} .FORCE
69         printf '.%s\n' "${nis_domain}" >"$@"