PERFORCE change 21024 for review

Robert Watson rwatson at freebsd.org
Wed Nov 13 05:10:26 GMT 2002


http://perforce.freebsd.org/chv.cgi?CH=21024

Change 21024 by rwatson at rwatson_tislabs on 2002/11/12 21:09:42

	Begin to futz around with login classes and inetd: rather than
	using "daemon" as the default, use the class of the user specified
	in inetd.conf.  This way, MAC labels get set correctly also.
	Allow the default to be overriden, permitting a restoration of
	the previous behavior using:
	
		inetd -L daemon
	
	Probably not quite there yet in terms of complete correctness
	and functionality, but appears to be a step up.

Affected files ...

.. //depot/projects/trustedbsd/mac/usr.sbin/inetd/inetd.8#7 edit
.. //depot/projects/trustedbsd/mac/usr.sbin/inetd/inetd.c#8 edit

Differences ...

==== //depot/projects/trustedbsd/mac/usr.sbin/inetd/inetd.8#7 (text+ko) ====

@@ -43,6 +43,7 @@
 .Nm
 .Op Fl d
 .Op Fl l
+.Op Fl L Ar class
 .Op Fl w
 .Op Fl W
 .Op Fl c Ar maximum
@@ -80,6 +81,11 @@
 Turn on debugging.
 .It Fl l
 Turn on logging of successful connections.
+.It Fl L Ar class
+Specify an alternative class to use as the default login class for a
+daemon; by default, inetd will use the user class specified in the
+.Xr 5 master.passwd
+file.
 .It Fl w
 Turn on TCP Wrapping for external services.
 See the
@@ -426,9 +432,7 @@
 part separated by
 .Dq /
 allows to specify login class different
-than default
-.Dq daemon
-login class.
+than default login class for the specified user.
 .Pp
 The
 .Em server-program

==== //depot/projects/trustedbsd/mac/usr.sbin/inetd/inetd.c#8 (text+ko) ====

@@ -180,10 +180,6 @@
 
 #ifdef LOGIN_CAP
 #include <login_cap.h>
-
-/* see init.c */
-#define RESOURCE_RC "daemon"
-
 #endif
 
 #ifndef	MAXCHILD
@@ -277,6 +273,9 @@
 uid_t	euid;
 gid_t	egid;
 mode_t	mask;
+#ifdef LOGIN_CAP
+char	*default_class = NULL;
+#endif
 
 struct	servtab *servtab;
 
@@ -338,7 +337,7 @@
 
 	openlog("inetd", LOG_PID | LOG_NOWAIT | LOG_PERROR, LOG_DAEMON);
 
-	while ((ch = getopt(argc, argv, "dlwWR:a:c:C:p:s:")) != -1)
+	while ((ch = getopt(argc, argv, "dlL:wWR:a:c:C:p:s:")) != -1)
 		switch(ch) {
 		case 'd':
 			debug = 1;
@@ -347,6 +346,11 @@
 		case 'l':
 			log = 1;
 			break;
+#ifdef LOGIN_CAP
+		case 'L':
+			default_class = optarg;
+			break;
+#endif
 		case 'R':
 			getvalue(optarg, &toomany,
 				"-R %s: bad value for service invocation rate");
@@ -793,7 +797,10 @@
 				if (grp != NULL)
 					pwd->pw_gid = grp->gr_gid;
 #ifdef LOGIN_CAP
-				if ((lc = login_getclass(sep->se_class)) == NULL) {
+				if (sep->se_class == NULL)
+					lc = NULL;
+				else if ((lc = login_getclass(sep->se_class))
+				    == NULL) {
 					/* error syslogged by getclass */
 					syslog(LOG_ERR,
 					    "%s/%s: %s: login class error",
@@ -1894,7 +1901,7 @@
 		*s = '\0';
 		sep->se_class = newstr(s + 1);
 	} else
-		sep->se_class = newstr(RESOURCE_RC);
+		sep->se_class = default_class;
 #endif
 	if ((s = strrchr(sep->se_user, ':')) != NULL) {
 		*s = '\0';
To Unsubscribe: send mail to majordomo at trustedbsd.org
with "unsubscribe trustedbsd-cvs" in the body of the message



More information about the trustedbsd-cvs mailing list