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");