[23105] in Source-Commits

home help back first fref pref prev next nref lref last post

/svn/athena r22768 - in trunk/debathena: config/nsswitch-config/debian debathena/libnss-nonlocal debathena/libnss-nonlocal/debian

daemon@ATHENA.MIT.EDU (tabbott@MIT.EDU)
Mon Feb 25 21:28:00 2008

Date: Mon, 25 Feb 2008 21:27:32 -0500 (EST)
From: tabbott@MIT.EDU
Message-Id: <200802260227.VAA05117@drugstore.mit.edu>
To: source-commits@MIT.EDU
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Author: tabbott
Date: 2008-02-25 21:27:31 -0500 (Mon, 25 Feb 2008)
New Revision: 22768

Added:
   trunk/debathena/config/nsswitch-config/debian/addgroup.debathena
   trunk/debathena/config/nsswitch-config/debian/adduser.debathena
   trunk/debathena/config/nsswitch-config/debian/debathena-nsswitch-config.install
   trunk/debathena/config/nsswitch-config/debian/dpkg.debathena
   trunk/debathena/config/nsswitch-config/debian/groupadd.debathena
   trunk/debathena/config/nsswitch-config/debian/useradd.debathena
Modified:
   trunk/debathena/config/nsswitch-config/debian/changelog
   trunk/debathena/config/nsswitch-config/debian/rules
   trunk/debathena/debathena/libnss-nonlocal/debian/changelog
   trunk/debathena/debathena/libnss-nonlocal/nonlocal-group.c
   trunk/debathena/debathena/libnss-nonlocal/nonlocal-passwd.c
   trunk/debathena/debathena/libnss-nonlocal/nonlocal.h
Log:
Make it possible to add new users/groups with the same name as Athena
users and groups.
* debathena/libnss-nonlocal/: If NSS_NONLOCAL_IGNORE is set, pretend
  that nonlocal information doesn't exist.
* config/nsswitch-config/debian/: Divert and wrap adduser, useradd,
  groupadd, addgroup, dpkg to set NSS_NONLOCAL_IGNORE when adding new
  accounts both manually and when installing new packages.


Added: trunk/debathena/config/nsswitch-config/debian/addgroup.debathena

Added: trunk/debathena/config/nsswitch-config/debian/adduser.debathena

Modified: trunk/debathena/config/nsswitch-config/debian/changelog
===================================================================
--- trunk/debathena/config/nsswitch-config/debian/changelog	2008-02-22 23:12:49 UTC (rev 22767)
+++ trunk/debathena/config/nsswitch-config/debian/changelog	2008-02-26 02:27:31 UTC (rev 22768)
@@ -1,3 +1,10 @@
+debathena-nsswitch-config (1.4debathena1) unstable; urgency=low
+
+  * Divert dpkg, adduser, useradd, addgroup, groupadd to wrap them with
+    setting NSS_NONLOCAL_IGNORE=ignore
+
+ -- Tim Abbott <tabbott@mit.edu>  Mon, 25 Feb 2008 19:49:38 -0500
+
 debathena-nsswitch-config (1.3debathena2) unstable; urgency=low
 
   * Use debathena-replace-conffiles interface from config-build-common

Added: trunk/debathena/config/nsswitch-config/debian/debathena-nsswitch-config.install

Added: trunk/debathena/config/nsswitch-config/debian/dpkg.debathena

Added: trunk/debathena/config/nsswitch-config/debian/groupadd.debathena

Modified: trunk/debathena/config/nsswitch-config/debian/rules
===================================================================
--- trunk/debathena/config/nsswitch-config/debian/rules	2008-02-22 23:12:49 UTC (rev 22767)
+++ trunk/debathena/config/nsswitch-config/debian/rules	2008-02-26 02:27:31 UTC (rev 22768)
@@ -7,7 +7,22 @@
     DEBATHENA_CHECK_CONFFILES_SOURCE_/etc/nsswitch.conf.debathena = \
 	/usr/share/base-files/nsswitch.conf
 endif
-
+DEBATHENA_DIVERT_FILES_debathena-nsswitch-config += \
+	/usr/sbin/adduser \
+	/usr/sbin/groupadd \
+	/usr/sbin/addgroup \
+	/usr/sbin/useradd \
+	/usr/bin/dpkg
+DEB_DH_LINK_ARGS += /usr/share/man/man8/adduser.8.gz /usr/share/man/man8/adduser.debathena.8.gz \
+		    /usr/share/man/man8/adduser.8.gz /usr/share/man/man8/adduser.debathena-orig.8.gz \
+		    /usr/share/man/man8/addgroup.8.gz /usr/share/man/man8/addgroup.debathena.8.gz \
+		    /usr/share/man/man8/addgroup.8.gz /usr/share/man/man8/addgroup.debathena-orig.8.gz \
+		    /usr/share/man/man8/useradd.8.gz /usr/share/man/man8/useradd.debathena.8.gz \
+		    /usr/share/man/man8/useradd.8.gz /usr/share/man/man8/useradd.debathena-orig.8.gz \
+		    /usr/share/man/man8/groupadd.8.gz /usr/share/man/man8/groupadd.debathena.8.gz \
+		    /usr/share/man/man8/groupadd.8.gz /usr/share/man/man8/groupadd.debathena-orig.8.gz \
+		    /usr/share/man/man8/dpkg.8.gz /usr/share/man/man8/dpkg.debathena.8.gz \
+		    /usr/share/man/man8/dpkg.8.gz /usr/share/man/man8/dpkg.debathena-orig.8.gz
 include /usr/share/cdbs/1/rules/debhelper.mk
 include /usr/share/cdbs/1/rules/debathena-replace-conffiles.mk
 

Added: trunk/debathena/config/nsswitch-config/debian/useradd.debathena

Modified: trunk/debathena/debathena/libnss-nonlocal/debian/changelog
===================================================================
--- trunk/debathena/debathena/libnss-nonlocal/debian/changelog	2008-02-22 23:12:49 UTC (rev 22767)
+++ trunk/debathena/debathena/libnss-nonlocal/debian/changelog	2008-02-26 02:27:31 UTC (rev 22768)
@@ -1,3 +1,12 @@
+libnss-nonlocal (1.5-0debathena1) unstable; urgency=low
+
+  * Add support for NSS_NONLOCAL_IGNORE environment variable, which
+    causes nss_nonlocal to pretend there are no nonlocal users.  This
+    allows us to support letting adduser add users and groups with the
+    same name as a nonlocal user/group.
+
+ -- Tim Abbott <tabbott@mit.edu>  Mon, 25 Feb 2008 19:12:30 -0500
+
 libnss-nonlocal (1.4-0debathena1) unstable; urgency=low
 
   * Bug fixes and cleanups.

Modified: trunk/debathena/debathena/libnss-nonlocal/nonlocal-group.c
===================================================================
--- trunk/debathena/debathena/libnss-nonlocal/nonlocal-group.c	2008-02-22 23:12:49 UTC (rev 22767)
+++ trunk/debathena/debathena/libnss-nonlocal/nonlocal-group.c	2008-02-26 02:27:31 UTC (rev 22768)
@@ -223,6 +223,12 @@
 			 int *errnop)
 {
     enum nss_status status;
+
+    char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+    if (buflen == MAGIC_LOCAL_GR_BUFLEN ||
+	(nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
+	return NSS_STATUS_UNAVAIL;
+
     if (grent_nip == NULL) {
 	status = _nss_nonlocal_setgrent(0);
 	if (status != NSS_STATUS_SUCCESS)
@@ -264,7 +270,9 @@
 	void *ptr;
     } fct;
 
-    if (buflen == MAGIC_LOCAL_GR_BUFLEN)
+    char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+    if (buflen == MAGIC_LOCAL_GR_BUFLEN ||
+	(nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
 	return NSS_STATUS_UNAVAIL;
 
     nip = nss_group_nonlocal_database();
@@ -301,7 +309,9 @@
 	void *ptr;
     } fct;
 
-    if (buflen == MAGIC_LOCAL_GR_BUFLEN)
+    char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+    if (buflen == MAGIC_LOCAL_GR_BUFLEN ||
+	(nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
 	return NSS_STATUS_UNAVAIL;
 
     nip = nss_group_nonlocal_database();

Modified: trunk/debathena/debathena/libnss-nonlocal/nonlocal-passwd.c
===================================================================
--- trunk/debathena/debathena/libnss-nonlocal/nonlocal-passwd.c	2008-02-22 23:12:49 UTC (rev 22767)
+++ trunk/debathena/debathena/libnss-nonlocal/nonlocal-passwd.c	2008-02-26 02:27:31 UTC (rev 22768)
@@ -192,6 +192,12 @@
 			 int *errnop)
 {
     enum nss_status status;
+
+    char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+    if (buflen == MAGIC_LOCAL_PW_BUFLEN ||
+	(nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
+	return NSS_STATUS_UNAVAIL;
+
     if (pwent_nip == NULL) {
 	status = _nss_nonlocal_setpwent(0);
 	if (status != NSS_STATUS_SUCCESS)
@@ -203,7 +209,7 @@
 	else {
 	    int nonlocal_errno;
 	    do
-		status = DL_CALL_FCT(pwent_fct.l, (pwd, buffer, buflen, errnop));	
+		status = DL_CALL_FCT(pwent_fct.l, (pwd, buffer, buflen, errnop));
 	    while (status == NSS_STATUS_SUCCESS &&
 		   check_nonlocal_uid(pwd->pw_name, pwd->pw_uid, &nonlocal_errno) != NSS_STATUS_SUCCESS);
 	}
@@ -234,7 +240,9 @@
     } fct;
     int group_errno;
 
-    if (buflen == MAGIC_LOCAL_PW_BUFLEN)
+    char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+    if (buflen == MAGIC_LOCAL_PW_BUFLEN ||
+	(nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
 	return NSS_STATUS_UNAVAIL;
 
     nip = nss_passwd_nonlocal_database();
@@ -279,7 +287,9 @@
     } fct;
     int group_errno;
 
-    if (buflen == MAGIC_LOCAL_PW_BUFLEN)
+    char *nonlocal_ignore = getenv(NONLOCAL_IGNORE_ENV);
+    if (buflen == MAGIC_LOCAL_PW_BUFLEN ||
+	(nonlocal_ignore != NULL && nonlocal_ignore[0] != '\0'))
 	return NSS_STATUS_UNAVAIL;
 
     nip = nss_passwd_nonlocal_database();

Modified: trunk/debathena/debathena/libnss-nonlocal/nonlocal.h
===================================================================
--- trunk/debathena/debathena/libnss-nonlocal/nonlocal.h	2008-02-22 23:12:49 UTC (rev 22767)
+++ trunk/debathena/debathena/libnss-nonlocal/nonlocal.h	2008-02-26 02:27:31 UTC (rev 22768)
@@ -3,4 +3,5 @@
 enum nss_status check_nonlocal_uid(const char *user, uid_t uid, int *errnop);
 enum nss_status check_nonlocal_gid(const char *user, gid_t gid, int *errnop);
 enum nss_status check_nonlocal_user(const char *user, int *errnop);
+#define NONLOCAL_IGNORE_ENV "NSS_NONLOCAL_IGNORE"
 #endif /* NON_LOCAL_H */


home help back first fref pref prev next nref lref last post