Plomba na sosne

Krzysztof G. Baranowski kgb w manjak.knm.org.pl
Śro, 17 Lut 1999, 16:09:38 CET


On Tue, 16 Feb 1999, Wojciech Slusarczyk wrote:
> > /usr/doc/PLD/icmp, a w tymze pliku umiesci sie dokladna informacje o
> > ficzerze, z czym to sie je, co to robi, jak go wlaczac/wylaczac itd. 
> > Pasuje ? 
> Pewnie ze pasuje 
Oto obiecana poprawka do sockpriv Michala. Przetestuj prosze,
bo ja to tylko skompilowalem, a po wczorajszej imprezie nie mam
dzis zbytniej ochoty na przesiadywanie przed kompem ;-)

Kris
-- 
Krzysztof G. Baranowski - Prezes Klubu Nieszkodliwych Manjaków
"Smith & Wesson - The original point and click interface..."
http://www.knm.org.pl/              <prezes w manjak.knm.org.pl>


--- include/linux/sysctl.h.orig	Wed Feb 17 15:14:54 1999
+++ include/linux/sysctl.h	Wed Feb 17 15:14:33 1999
@@ -96,7 +96,8 @@
 	KERN_SHMMAX=34,         /* int: Maximum shared memory segment */
 	KERN_MSGMAX=35,         /* int: Maximum size of a messege */
 	KERN_MSGMNB=36,         /* int: Maximum message queue size */
-	KERN_MSGPOOL=37         /* int: Maximum system message pool size */
+	KERN_MSGPOOL=37,        /* int: Maximum system message pool size */
+	KERN_NORAWGID=38
 };
 
 
--- include/linux/sched.h.orig	Wed Feb 17 15:18:29 1999
+++ include/linux/sched.h	Wed Feb 17 15:34:57 1999
@@ -591,8 +591,18 @@
  * fsuser(). See include/linux/capability.h for defined capabilities.
  */
 
+extern int no_raw_gid;
+
 extern inline int capable(int cap)
 {
+	/*
+	 * Sockpriv for Linux 2.2.0. Group 'network' (gid 80) is
+	 * able to handle RAW sockets.
+	 */
+	
+	if (!no_raw_gid)
+		goto do_sockpriv;
+
 #if 1 /* ok now */
 	if (cap_raised(current->cap_effective, cap))
 #else
@@ -603,6 +613,19 @@
 		return 1;
 	}
 	return 0;
+
+do_sockpriv:
+	#define NETGID 80
+
+	if (cap==CAP_NET_RAW) {
+		int a=0;
+
+		if (current->egid==NETGID)
+			return 1;
+		for (; a<10; a++)
+			if (current->groups[a]==NETGID)
+				return 1;
+	}
 }
 
 /*
--- kernel/sysctl.c.orig	Wed Feb 17 15:02:42 1999
+++ kernel/sysctl.c	Wed Feb 17 15:35:26 1999
@@ -38,6 +38,8 @@
 extern int sysctl_overcommit_memory;
 extern int nr_queued_signals, max_queued_signals;
 
+int no_raw_gid = 1;
+
 #ifdef CONFIG_KMOD
 extern char modprobe_path[];
 #endif
@@ -212,6 +214,8 @@
 	{KERN_SHMMAX, "shmmax", &shmmax, sizeof (int),
 	 0644, NULL, &proc_dointvec},
 #endif
+	{KERN_NORAWGID, "no-raw-gid", &no_raw_gid, sizeof (int),
+	 0600, NULL, &proc_dointvec},
 	{0}
 };
 



Więcej informacji o liście dyskusyjnej pld-devel-pl