Package init
This commit is contained in:
commit
3768ad3640
31
0001-Disable-pylint-tests.patch
Normal file
31
0001-Disable-pylint-tests.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
From 5e4ef70a1fda792d7ca32311ecc29302c7b13ca5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Hrozek <jakub.hrozek@posteo.se>
|
||||||
|
Date: Sun, 1 Apr 2018 10:40:13 +0200
|
||||||
|
Subject: [PATCH 1/2] Disable pylint tests
|
||||||
|
|
||||||
|
---
|
||||||
|
tests/Makefile.am | 8 +++++---
|
||||||
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||||
|
index 0a7854eec62520014919ad3983db70c78be483e2..8c742a78e3ce8e822fbd7bd9d5735a010e2f0f80 100644
|
||||||
|
--- a/tests/Makefile.am
|
||||||
|
+++ b/tests/Makefile.am
|
||||||
|
@@ -22,9 +22,11 @@ TESTS = test_dict test_set test_tio test_expr test_getpeercred test_cfg \
|
||||||
|
test_attmap test_myldap.sh test_common test_nsscmds.sh \
|
||||||
|
test_pamcmds.sh test_manpages.sh test_clock \
|
||||||
|
test_tio_timeout
|
||||||
|
-if HAVE_PYTHON
|
||||||
|
- TESTS += test_pycompile.sh test_pylint.sh
|
||||||
|
-endif
|
||||||
|
+
|
||||||
|
+#if HAVE_PYTHON
|
||||||
|
+# TESTS += test_pycompile.sh test_pylint.sh
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
if ENABLE_PYNSLCD
|
||||||
|
TESTS += test_pynslcd_cache.py test_doctest.sh
|
||||||
|
endif
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
||||||
96
0002-Watch-for-uint32_t-overflows.patch
Normal file
96
0002-Watch-for-uint32_t-overflows.patch
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
From ae0a9312c562985838fdd9845ef95fe61e8aa3de Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Hrozek <jakub.hrozek@posteo.se>
|
||||||
|
Date: Sun, 1 Apr 2018 10:57:22 +0200
|
||||||
|
Subject: [PATCH 2/2] Watch for uint32_t overflows
|
||||||
|
|
||||||
|
Always use a function that we know will catch out-of-range values for UIDs and
|
||||||
|
GIDs, which are currently unsigned 32-bit numbers everywhere, and which won't
|
||||||
|
produce a result that'll silently be truncated if we store the result in a
|
||||||
|
uid_t or gid_t.
|
||||||
|
---
|
||||||
|
nslcd/common.c | 28 ++++++++++++++++------------
|
||||||
|
nslcd/common.h | 27 +++------------------------
|
||||||
|
2 files changed, 19 insertions(+), 36 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/nslcd/common.c b/nslcd/common.c
|
||||||
|
index 60be7773d2c809f3177744ced0dd0ba90c86e820..de640b47806757e0bb2e704b3b79f1ecb18bbc45 100644
|
||||||
|
--- a/nslcd/common.c
|
||||||
|
+++ b/nslcd/common.c
|
||||||
|
@@ -338,19 +338,23 @@ unsigned long int binsid2id(const char *binsid)
|
||||||
|
((((unsigned long int)binsid[i + 3]) & 0xff) << 24);
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifdef WANT_STRTOUI
|
||||||
|
-/* provide a strtoui() implementation, similar to strtoul() but returning
|
||||||
|
- an range-checked unsigned int instead */
|
||||||
|
-unsigned int strtoui(const char *nptr, char **endptr, int base)
|
||||||
|
+/* provide a strtoid() implementation, similar to strtoul() but returning
|
||||||
|
+ an range-checked uint32_t instead */
|
||||||
|
+unsigned int strtoid(const char *nptr,char **endptr,int base)
|
||||||
|
{
|
||||||
|
- unsigned long val;
|
||||||
|
- val = strtoul(nptr, endptr, base);
|
||||||
|
- if (val > UINT_MAX)
|
||||||
|
+ long long val;
|
||||||
|
+ /* use the fact that long long is 64-bit, even on 32-bit systems */
|
||||||
|
+ val=strtoll(nptr,endptr,base);
|
||||||
|
+ if (val>UINT32_MAX)
|
||||||
|
{
|
||||||
|
- errno = ERANGE;
|
||||||
|
- return UINT_MAX;
|
||||||
|
+ errno=ERANGE;
|
||||||
|
+ return UINT32_MAX;
|
||||||
|
}
|
||||||
|
- /* If errno was set by strtoul, we'll pass it back as-is */
|
||||||
|
- return (unsigned int)val;
|
||||||
|
+ else if (val < 0)
|
||||||
|
+ {
|
||||||
|
+ errno=EINVAL;
|
||||||
|
+ return UINT32_MAX;
|
||||||
|
+ }
|
||||||
|
+ /* If errno was set, we'll pass it back as-is */
|
||||||
|
+ return (uint32_t)val;
|
||||||
|
}
|
||||||
|
-#endif /* WANT_STRTOUI */
|
||||||
|
diff --git a/nslcd/common.h b/nslcd/common.h
|
||||||
|
index 26fcf48ae2a6dc50bc97fab238ecc9a1879342ce..97d386eaf1f6881182729c5d8e46ce30d2d28eba 100644
|
||||||
|
--- a/nslcd/common.h
|
||||||
|
+++ b/nslcd/common.h
|
||||||
|
@@ -161,31 +161,10 @@ void invalidator_do(enum ldap_map_selector map);
|
||||||
|
#define BUFLEN_HOSTNAME 256 /* host names or FQDN (and safe version) */
|
||||||
|
#define BUFLEN_MESSAGE 1024 /* message strings */
|
||||||
|
|
||||||
|
-/* provide strtouid() function alias */
|
||||||
|
-#if SIZEOF_UID_T == SIZEOF_UNSIGNED_LONG_INT
|
||||||
|
-#define strtouid (uid_t)strtoul
|
||||||
|
-#elif SIZEOF_UID_T == SIZEOF_UNSIGNED_LONG_LONG_INT
|
||||||
|
-#define strtouid (uid_t)strtoull
|
||||||
|
-#elif SIZEOF_UID_T == SIZEOF_UNSIGNED_INT
|
||||||
|
-#define WANT_STRTOUI 1
|
||||||
|
-#define strtouid (uid_t)strtoui
|
||||||
|
-#else
|
||||||
|
-#error unable to find implementation for strtouid()
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
-/* provide strtogid() function alias */
|
||||||
|
-#if SIZEOF_GID_T == SIZEOF_UNSIGNED_LONG_INT
|
||||||
|
-#define strtogid (gid_t)strtoul
|
||||||
|
-#elif SIZEOF_GID_T == SIZEOF_UNSIGNED_LONG_LONG_INT
|
||||||
|
-#define strtogid (gid_t)strtoull
|
||||||
|
-#elif SIZEOF_GID_T == SIZEOF_UNSIGNED_INT
|
||||||
|
-#ifndef WANT_STRTOUI
|
||||||
|
-#define WANT_STRTOUI 1
|
||||||
|
-#endif
|
||||||
|
-#define strtogid (gid_t)strtoui
|
||||||
|
-#else
|
||||||
|
-#error unable to find implementation for strtogid()
|
||||||
|
-#endif
|
||||||
|
+uint32_t strtoid(const char *nptr,char **endptr,int base);
|
||||||
|
+#define strtouid (uid_t)strtoid
|
||||||
|
+#define strtogid (gid_t)strtoid
|
||||||
|
|
||||||
|
#ifdef WANT_STRTOUI
|
||||||
|
/* provide a strtoui() if it is needed */
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
||||||
50
Create-var-run-nslcd-socket-after-dropping-privilege.patch
Normal file
50
Create-var-run-nslcd-socket-after-dropping-privilege.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
From 3760b43241b579406242961c551b9fb25b0c673b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arthur de Jong <arthur@arthurdejong.org>
|
||||||
|
Date: Sat, 21 Jul 2018 11:14:08 +0200
|
||||||
|
Subject: [PATCH 01/10] Create /var/run/nslcd/socket after dropping privileges
|
||||||
|
|
||||||
|
This is needed to avoid a problem where a call to initgroups() can
|
||||||
|
result in NSS lookups. If nscd is configured the mechanism to avoid
|
||||||
|
loopback lookups using nss_ldap_enablelookups will not work and cause
|
||||||
|
for delays on start-up.
|
||||||
|
|
||||||
|
Note that this changes ownership of the socket to the user running
|
||||||
|
nslcd.
|
||||||
|
---
|
||||||
|
nslcd/nslcd.c | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/nslcd/nslcd.c b/nslcd/nslcd.c
|
||||||
|
index 82c09ab..be14ac9 100644
|
||||||
|
--- a/nslcd/nslcd.c
|
||||||
|
+++ b/nslcd/nslcd.c
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
nslcd.c - ldap local connection daemon
|
||||||
|
|
||||||
|
Copyright (C) 2006 West Consulting
|
||||||
|
- Copyright (C) 2006-2017 Arthur de Jong
|
||||||
|
+ Copyright (C) 2006-2018 Arthur de Jong
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
@@ -769,8 +769,6 @@ int main(int argc, char *argv[])
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
adjust_oom_score();
|
||||||
|
- /* create socket */
|
||||||
|
- nslcd_serversocket = create_socket(NSLCD_SOCKET);
|
||||||
|
/* start subprocess to do invalidating if reconnect_invalidate is set */
|
||||||
|
for (i = 0; i < LM_NONE; i++)
|
||||||
|
if (nslcd_cfg->reconnect_invalidate[i])
|
||||||
|
@@ -825,6 +823,8 @@ int main(int argc, char *argv[])
|
||||||
|
}
|
||||||
|
log_log(LOG_DEBUG, "setuid(%lu) done", (unsigned long int)nslcd_cfg->uid);
|
||||||
|
}
|
||||||
|
+ /* create socket */
|
||||||
|
+ nslcd_serversocket = create_socket(NSLCD_SOCKET);
|
||||||
|
/* start worker threads */
|
||||||
|
log_log(LOG_INFO, "accepting connections");
|
||||||
|
nslcd_threads = (pthread_t *)malloc(nslcd_cfg->threads * sizeof(pthread_t));
|
||||||
|
--
|
||||||
|
2.19.1
|
||||||
|
|
||||||
32
Fix-crash-in-chsh.ldap.patch
Normal file
32
Fix-crash-in-chsh.ldap.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From bfcf0025b6ba264e6c0c1899d9de2bad8f39ee1a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mizunashi Mana <mizunashi-mana@noreply.git>
|
||||||
|
Date: Wed, 5 Sep 2018 20:06:31 +0900
|
||||||
|
Subject: [PATCH 09/10] Fix crash in chsh.ldap
|
||||||
|
|
||||||
|
Specify result type of getusershell.
|
||||||
|
|
||||||
|
Closes https://github.com/arthurdejong/nss-pam-ldapd/pull/31
|
||||||
|
---
|
||||||
|
utils/shells.py | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/utils/shells.py b/utils/shells.py
|
||||||
|
index dcabfaf..92dba2f 100644
|
||||||
|
--- a/utils/shells.py
|
||||||
|
+++ b/utils/shells.py
|
||||||
|
@@ -28,9 +28,11 @@ import sys
|
||||||
|
def list_shells():
|
||||||
|
"""List the shells from /etc/shells."""
|
||||||
|
libc = ctypes.CDLL(ctypes.util.find_library("c"))
|
||||||
|
+ getusershell = libc.getusershell
|
||||||
|
+ getusershell.restype = ctypes.c_char_p
|
||||||
|
libc.setusershell()
|
||||||
|
while True:
|
||||||
|
- shell = ctypes.c_char_p(libc.getusershell()).value
|
||||||
|
+ shell = getusershell()
|
||||||
|
if not shell:
|
||||||
|
break
|
||||||
|
yield shell
|
||||||
|
--
|
||||||
|
2.19.1
|
||||||
|
|
||||||
14
nslcd.service
Normal file
14
nslcd.service
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Naming services LDAP client daemon.
|
||||||
|
After=syslog.target network.target named.service dirsrv.target slapd.service
|
||||||
|
Documentation=man:nslcd(8) man:nslcd.conf(5)
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
PIDFile=/var/run/nslcd/nslcd.pid
|
||||||
|
ExecStart=/usr/sbin/nslcd
|
||||||
|
RestartSec=10s
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
2
nslcd.tmpfiles
Normal file
2
nslcd.tmpfiles
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# nslcd needs a directory in /var/run to store its pid file and socket
|
||||||
|
d /var/run/nslcd 0775 nslcd root
|
||||||
BIN
nss-pam-ldapd-0.9.9.tar.gz
Normal file
BIN
nss-pam-ldapd-0.9.9.tar.gz
Normal file
Binary file not shown.
BIN
nss-pam-ldapd-0.9.9.tar.gz.sig
Normal file
BIN
nss-pam-ldapd-0.9.9.tar.gz.sig
Normal file
Binary file not shown.
115
nss-pam-ldapd.spec
Normal file
115
nss-pam-ldapd.spec
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
%define _hardened_build 1
|
||||||
|
|
||||||
|
Name: nss-pam-ldapd
|
||||||
|
Version: 0.9.9
|
||||||
|
Release: 5
|
||||||
|
Summary: NSS and PAM libraries for name lookups and authentication using LDAP
|
||||||
|
License: LGPLv2+
|
||||||
|
URL: http://arthurdejong.org/nss-pam-ldapd/
|
||||||
|
Source0: http://arthurdejong.org/nss-pam-ldapd/nss-pam-ldapd-%{version}.tar.gz
|
||||||
|
Source1: http://arthurdejong.org/nss-pam-ldapd/nss-pam-ldapd-%{version}.tar.gz.sig
|
||||||
|
Source3: nslcd.tmpfiles
|
||||||
|
Source4: nslcd.service
|
||||||
|
|
||||||
|
Patch0001: 0001-Disable-pylint-tests.patch
|
||||||
|
Patch0002: 0002-Watch-for-uint32_t-overflows.patch
|
||||||
|
|
||||||
|
Patch9001: Create-var-run-nslcd-socket-after-dropping-privilege.patch
|
||||||
|
Patch9002: Fix-crash-in-chsh.ldap.patch
|
||||||
|
|
||||||
|
BuildRequires: gcc, openldap-devel, krb5-devel, autoconf, automake, pam-devel, systemd-units
|
||||||
|
%{?systemd_requires}
|
||||||
|
|
||||||
|
Recommends: nscd
|
||||||
|
|
||||||
|
Provides: nss-ldapd = %{version}-%{release}
|
||||||
|
Provides: nss_ldap = 265-12
|
||||||
|
Provides: pam_ldap = 185-15
|
||||||
|
|
||||||
|
Obsoletes: nss-ldapd < 0.7
|
||||||
|
Obsoletes: nss_ldap < 265-11
|
||||||
|
Obsoletes: pam_ldap < 185-15
|
||||||
|
|
||||||
|
%description
|
||||||
|
The nss-pam-ldapd package provides a Name Service Switch (NSS, nsswitch) module
|
||||||
|
that allows your LDAP server to provide user account, group, host name, alias,
|
||||||
|
netgroup, and basically any other information that you would normally get from
|
||||||
|
/etc flat files or NIS. It also provides a Pluggable Authentication Module (PAM)
|
||||||
|
to do identity and authentication management with an LDAP server on unix systems.
|
||||||
|
|
||||||
|
%package help
|
||||||
|
Summary: The help package for nss-pam-ldapd
|
||||||
|
|
||||||
|
%description help
|
||||||
|
This is the help package of nss-pam-ldapd which includes the man docs.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1
|
||||||
|
autoreconf -f -i
|
||||||
|
|
||||||
|
%build
|
||||||
|
%configure --libdir=/%{_lib} \
|
||||||
|
--disable-utils \
|
||||||
|
--with-pam-seclib-dir=/%{_lib}/security
|
||||||
|
%make_build
|
||||||
|
|
||||||
|
%check
|
||||||
|
make check
|
||||||
|
|
||||||
|
%install
|
||||||
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
%make_install
|
||||||
|
mkdir -p $RPM_BUILD_ROOT/{%{_libdir},%{_unitdir}}
|
||||||
|
install -p -m644 %{SOURCE4} $RPM_BUILD_ROOT/%{_unitdir}/
|
||||||
|
|
||||||
|
ln -s libnss_ldap.so.2 $RPM_BUILD_ROOT/%{_lib}/libnss_ldap.so
|
||||||
|
|
||||||
|
sed -i -e 's,^uid.*,uid nslcd,g' -e 's,^gid.*,gid ldap,g' \
|
||||||
|
$RPM_BUILD_ROOT/%{_sysconfdir}/nslcd.conf
|
||||||
|
touch -r nslcd.conf $RPM_BUILD_ROOT/%{_sysconfdir}/nslcd.conf
|
||||||
|
mkdir -p -m 0755 $RPM_BUILD_ROOT/var/run/nslcd
|
||||||
|
mkdir -p -m 0755 $RPM_BUILD_ROOT/%{_tmpfilesdir}
|
||||||
|
install -p -m 0644 %{SOURCE3} $RPM_BUILD_ROOT/%{_tmpfilesdir}/%{name}.conf
|
||||||
|
|
||||||
|
%pre
|
||||||
|
getent group ldap > /dev/null || \
|
||||||
|
/usr/sbin/groupadd -r -g 55 ldap
|
||||||
|
getent passwd nslcd > /dev/null || \
|
||||||
|
/usr/sbin/useradd -r -g ldap -c 'LDAP Client User' \
|
||||||
|
-u 65 -d / -s /sbin/nologin nslcd 2> /dev/null || :
|
||||||
|
|
||||||
|
%post
|
||||||
|
/sbin/ldconfig
|
||||||
|
%systemd_post nslcd.service
|
||||||
|
|
||||||
|
%preun
|
||||||
|
%systemd_preun nslcd.service
|
||||||
|
|
||||||
|
%postun
|
||||||
|
/sbin/ldconfig
|
||||||
|
%systemd_postun_with_restart nslcd.service
|
||||||
|
|
||||||
|
%files
|
||||||
|
%doc AUTHORS ChangeLog COPYING HACKING NEWS README TODO
|
||||||
|
%{_sbindir}/*
|
||||||
|
/%{_lib}/*.so*
|
||||||
|
/%{_lib}/security/pam_ldap.so
|
||||||
|
%attr(0600,root,root) %config(noreplace) %verify(not md5 size mtime) /etc/nslcd.conf
|
||||||
|
%attr(0644,root,root) %config(noreplace) %{_tmpfilesdir}/%{name}.conf
|
||||||
|
%{_unitdir}/nslcd.service
|
||||||
|
%attr(0775,nslcd,root) /var/run/nslcd
|
||||||
|
|
||||||
|
%files help
|
||||||
|
%{_mandir}/*/*
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Mon Apr 08 2019 yanghua<yanghua21@huawei.com> - 0.9.9-5
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:restart
|
||||||
|
- DESC:Create /var/run/nslcd/socket after dropping privileges
|
||||||
|
Fix crash in chsh.ldap
|
||||||
|
|
||||||
|
* Fri Mar 01 2019 openEuler Buildteam<buildteam@openeuler.org> - 0.9.9-4
|
||||||
|
- Package init
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user