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