[Pkg-shadow-devel] Bug#352494: passwd: confusing error message if /proc is not found

Nicolas François nicolas.francois at centraliens.net
Sun Feb 12 18:08:18 UTC 2006


Hello,

On Sun, Feb 12, 2006 at 12:19:22PM +0100, Marc Haber wrote:
> 
> invoking "passwd foo" in a chroot without /proc mounted results in the
> error message "passwd: You may not view or modify password information
> for foo".

This was caused by the call to selinux_check_passwd_access, which failed
(returned -1) on non-SELinux system without /proc.

Russel, can you check the attached patch?
(It can be dropped in the debian/patches directory of the shadow source
package, after adding 493_selinux_no_proc at the end of
debian/patches/series)

Thanks in advance,
-- 
Nekral
-------------- next part --------------
Index: shadow-4.0.14/src/chage.c
===================================================================
--- shadow-4.0.14.orig/src/chage.c	2006-02-12 16:49:27.000000000 +0100
+++ shadow-4.0.14/src/chage.c	2006-02-12 18:20:44.000000000 +0100
@@ -361,11 +361,10 @@
 	textdomain (PACKAGE);
 
 	ruid = getuid ();
-#ifdef WITH_SELINUX
-	amroot = (ruid == 0
-		  && selinux_check_passwd_access (PASSWD__ROOTOK) == 0);
-#else
 	amroot = (ruid == 0);
+#ifdef WITH_SELINUX
+	if (amroot && is_selinux_enabled () > 0)
+		amroot = (selinux_check_passwd_access (PASSWD__ROOTOK) == 0);
 #endif
 
 	/*
Index: shadow-4.0.14/src/chfn.c
===================================================================
--- shadow-4.0.14.orig/src/chfn.c	2006-02-12 16:49:26.000000000 +0100
+++ shadow-4.0.14/src/chfn.c	2006-02-12 18:21:36.000000000 +0100
@@ -378,6 +378,7 @@
 	 * check if the change is allowed by SELinux policy.
 	 */
 	if ((pw->pw_uid != getuid ())
+	    && (is_selinux_enabled () > 0)
 	    && (selinux_check_passwd_access (PASSWD__CHFN) != 0)) {
 		fprintf (stderr, _("%s: Permission denied.\n"), Prog);
 		closelog ();
Index: shadow-4.0.14/src/chsh.c
===================================================================
--- shadow-4.0.14.orig/src/chsh.c	2006-02-12 16:49:27.000000000 +0100
+++ shadow-4.0.14/src/chsh.c	2006-02-12 18:23:20.000000000 +0100
@@ -304,6 +304,7 @@
 	 * check if the change is allowed by SELinux policy.
 	 */
 	if ((pw->pw_uid != getuid ())
+	    && (is_selinux_enabled () > 0)
 	    && (selinux_check_passwd_access (PASSWD__CHSH) != 0)) {
 		SYSLOG ((LOG_WARN, "can't change shell for `%s'", user));
 		closelog ();
Index: shadow-4.0.14/src/passwd.c
===================================================================
--- shadow-4.0.14.orig/src/passwd.c	2006-02-12 16:49:27.000000000 +0100
+++ shadow-4.0.14/src/passwd.c	2006-02-12 18:36:57.000000000 +0100
@@ -802,7 +802,9 @@
 	 * check if the change is allowed by SELinux policy.
 	 */
 	if ((pw->pw_uid != getuid ())
-	    && (selinux_check_passwd_access (PASSWD__PASSWD) != 0)) {
+	    && (is_selinux_enabled () > 0 ?
+	            (selinux_check_passwd_access (PASSWD__PASSWD) != 0):
+	            !amroot)) {
 #else
 	/*
 	 * If the UID of the user does not match the current real UID,


More information about the Pkg-shadow-devel mailing list