Plinth has been switched to using ldapscripts to manage the LDAP users and groups (https://github.com/freedombox/Plinth/pull/164).
I'm attaching an updated patch (replaces the previous patch) that will work with the change to Plinth. Here are the changes: 1. Use the method described in "Allowing logins on a per-group basis" from https://wiki.debian.org/LDAP/PAM to restrict logins to admin group. 2. Add the admin group to the sudoers file. Regards, James
From 87744b5b773f1206f306aa8b07cde8c3176e8a00 Mon Sep 17 00:00:00 2001 From: James Valleroy <[email protected]> Date: Wed, 8 Jul 2015 19:46:27 -0400 Subject: [PATCH 1/4] Configure PAM for LDAP user logins. --- setup.d/30_ldap-server | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/setup.d/30_ldap-server b/setup.d/30_ldap-server index 358c922..e78508d 100755 --- a/setup.d/30_ldap-server +++ b/setup.d/30_ldap-server @@ -21,3 +21,9 @@ objectClass: organizationalUnit ou: groups EOF + +# Configure PAM for LDAP user logins +echo nslcd nslcd/ldap-sasl-mech select EXTERNAL | debconf-set-selections +echo libnss-ldapd libnss-ldapd/nsswitch multiselect group, passwd, shadow \ + | debconf-set-selections +DEBIAN_FRONTEND=noninteractive apt-get install -y nslcd libpam-ldapd libnss-ldapd -- 2.1.4 From dade15a7a59d7b4196478dca3c147c68b73b0af1 Mon Sep 17 00:00:00 2001 From: James Valleroy <[email protected]> Date: Sun, 26 Jul 2015 12:38:54 -0400 Subject: [PATCH 2/4] Allow only users in admin group to login. --- setup.d/30_ldap-server | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/setup.d/30_ldap-server b/setup.d/30_ldap-server index e78508d..7809072 100755 --- a/setup.d/30_ldap-server +++ b/setup.d/30_ldap-server @@ -27,3 +27,13 @@ echo nslcd nslcd/ldap-sasl-mech select EXTERNAL | debconf-set-selections echo libnss-ldapd libnss-ldapd/nsswitch multiselect group, passwd, shadow \ | debconf-set-selections DEBIAN_FRONTEND=noninteractive apt-get install -y nslcd libpam-ldapd libnss-ldapd + +# Only users in admin group can login +if ! grep -q "auth\srequired\spam_access.so" /etc/pam.d/common-auth ; then + echo "auth required pam_access.so" >> /etc/pam.d/common-auth +fi + +if ! grep -q "-:ALL EXCEPT root admin:ALL EXCEPT LOCAL" \ + /etc/security/access.conf ; then + echo "-:ALL EXCEPT root admin:ALL EXCEPT LOCAL" >> /etc/security/access.conf +fi -- 2.1.4 From 2ad3156f22af466c5989b70c6b0c06cba991b5a3 Mon Sep 17 00:00:00 2001 From: James Valleroy <[email protected]> Date: Sun, 26 Jul 2015 12:46:43 -0400 Subject: [PATCH 3/4] Fix some issues with ldap-server setup script. --- setup.d/30_ldap-server | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/setup.d/30_ldap-server b/setup.d/30_ldap-server index 7809072..d8c5091 100755 --- a/setup.d/30_ldap-server +++ b/setup.d/30_ldap-server @@ -9,7 +9,7 @@ DEBIAN_FRONTEND=noninteractive apt-get install -y slapd ldap-utils # Make sure slapd isn't running when we use slapadd service slapd stop -cat <<EOF|slapadd +cat <<EOF |slapadd dn: ou=users,dc=$domain objectClass: top objectClass: organizationalUnit @@ -33,7 +33,8 @@ if ! grep -q "auth\srequired\spam_access.so" /etc/pam.d/common-auth ; then echo "auth required pam_access.so" >> /etc/pam.d/common-auth fi -if ! grep -q "-:ALL EXCEPT root admin:ALL EXCEPT LOCAL" \ +if ! grep -q -- "-:ALL EXCEPT root admin:ALL EXCEPT LOCAL" \ /etc/security/access.conf ; then - echo "-:ALL EXCEPT root admin:ALL EXCEPT LOCAL" >> /etc/security/access.conf + printf "%s\n" "-:ALL EXCEPT root admin:ALL EXCEPT LOCAL" \ + >> /etc/security/access.conf fi -- 2.1.4 From 8ae06491a09d9b954394bb8eb3b471aa41125a11 Mon Sep 17 00:00:00 2001 From: James Valleroy <[email protected]> Date: Sun, 26 Jul 2015 12:58:50 -0400 Subject: [PATCH 4/4] Add admin group to sudoers file. --- setup.d/30_ldap-server | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/setup.d/30_ldap-server b/setup.d/30_ldap-server index d8c5091..856fcc4 100755 --- a/setup.d/30_ldap-server +++ b/setup.d/30_ldap-server @@ -38,3 +38,7 @@ if ! grep -q -- "-:ALL EXCEPT root admin:ALL EXCEPT LOCAL" \ printf "%s\n" "-:ALL EXCEPT root admin:ALL EXCEPT LOCAL" \ >> /etc/security/access.conf fi + +if ! grep -q "%admin ALL=(root) ALL, !/bin/su" /etc/sudoers ; then + echo "%admin ALL=(root) ALL, !/bin/su" >> /etc/sudoers +fi -- 2.1.4

