On Tue, Jan 10, 2006 at 08:00:36AM +0100, [EMAIL PROTECTED] wrote:
> The attached patch was written back in November for Debian bug #62821.
> 
> It simply adds a small warning to vipw reminding the user to also edit
> the shadow file when using either vipw or vigr.
> 
> So far, I haven't got feedback on it.
> 
> I intend to now apply it and close the relevant Debian bug (#62821,
> one of the oldest we have), no matter it's applied upstream or
> not. But, Tomasz, can you give us an indication whether you think it's
> OK for you...

I think it can be applied.

The possible improvements are:
 * also propose to edit the non-shadowed databases when -s is used
 * verify that the system is shadow enabled before the warning
 * Maybe no warning should be displayed in quiet mode?

 * do not just warn, but also propose to edit the other database

The attached patch implements the first two points.
As the message is now displayed 4 times, I prefered to use a generic
message.


-- 
Nekral
Goal: Warn about possible need to edit shadow files when editing the 
      master files with vipw

Fixes: #62821

Status wrt upstream: Forwarded but not applied yet

Index: shadow-4.0.14/src/vipw.c
===================================================================
--- shadow-4.0.14.orig/src/vipw.c       2005-12-13 15:01:08.000000000 +0100
+++ shadow-4.0.14/src/vipw.c    2006-01-11 00:47:25.000000000 +0100
@@ -41,6 +41,12 @@
 #include "pwio.h"
 #include "sgroupio.h"
 #include "shadowio.h"
+
+#define MSG_WARN_EDIT_OTHER_FILE _( \
+       "You have modified %s.\n"\
+       "You may need to modify %s for consistency.\n"\
+       "Please use the command `%s' to do so.\n")
+
 /*
  * Global variables
  */
@@ -285,17 +291,39 @@
        }
 
        if (do_vipw) {
-               if (editshadow)
+               if (editshadow) {
                        vipwedit (SHADOW_FILE, spw_lock, spw_unlock);
-               else
+                       printf (MSG_WARN_EDIT_OTHER_FILE,
+                               SHADOW_FILE,
+                               PASSWD_FILE,
+                               "vipw");
+               } else {
                        vipwedit (PASSWD_FILE, pw_lock, pw_unlock);
+                       if (spw_file_present ())
+                               printf (MSG_WARN_EDIT_OTHER_FILE,
+                                       PASSWD_FILE,
+                                       SHADOW_FILE,
+                                       "vipw -s");
+               }
        } else {
 #ifdef SHADOWGRP
-               if (editshadow)
+               if (editshadow) {
                        vipwedit (SGROUP_FILE, sgr_lock, sgr_unlock);
-               else
+                       printf (MSG_WARN_EDIT_OTHER_FILE,
+                               SGROUP_FILE,
+                               GROUP_FILE,
+                               "vigr");
+               } else {
 #endif
                        vipwedit (GROUP_FILE, gr_lock, gr_unlock);
+#ifdef SHADOWGRP
+                       if (sgr_file_present ())
+                               printf (MSG_WARN_EDIT_OTHER_FILE,
+                                       GROUP_FILE,
+                                       SGROUP_FILE,
+                                       "vigr -s");
+#endif
+               }
        }
 
        nscd_flush_cache ("passwd");

Reply via email to