Extending fcopy

Achim Bohnet ach at mpe.mpg.de
Fri Dec 8 16:48:30 CET 2006


On Friday, 8. December 2006 13:47, Janning Vygen wrote:
> Am Freitag, 8. Dezember 2006 11:29 schrieben Sie:
> > On Thursday, 7. December 2006 22:45, Michael Tautschnig wrote:
> > >
> > > - some -k/--keep option (which I'd rather call --keep-permissions :-) )
> > > to retain the permissions of the file which should be overwritten (BTW:
> > > what should happen if there is no such file?)
> >
> > I'm not against the option, but in the an FAI context, IMHO one should now
> > user:group:permission before overriding a file.  If there are different
> > from host to host, then either it's wrong or I better 'code' this exception
> > in the installation scripts.  <- IMHO of course.
> 
> Why should i know the user:group:permission of a file like /etc/sudoers. I 
> know it is there i want to override it and want to keep the permissions of 
> the orignial file. to me, it sounds very naturally, just to copy the content 
> of a file and keep original permissions.

If a file permission get borked it will never be fixed by an softupdate.
In the case that it's not root:root 644 it has in most cases a special
reason.  If the file is missing there noting to preserve, what to use then?
would be nice if a softupdate fixes it with right protections.

 
> > > - some way to return the number of files that were actually copied.
> >
> > That does not sound unix'ish IMHO.  Why not the
> > paths of the files copied are listed on stdout.  Num is then just adding
> > '| wc -l'.   And stuff like: fcopy --whatever | while read file; do ...
> > are still possible.
> 
> your absolutely right and i already wrote it this way, but i did use a 
> different format fcopy already uses:
> 
>    print "fcopy: copied $sourcefile to $destfile\n" ;

that also okay.  grep of sed can be used to transform
> 
> i tried to use exit code, too:
> 
>   exit code is 0: if one or more files were changed (content or permissions) 
> and no errors occured
>   exit code is 1: if no files were changed (content nor permissions) and no 
> warnings or errors occured
>   exit code is 2: warnings or errors occured plus description of exit code 1
>   exit code is 3: warnings or errors occured plus description of exit code 1
>   exit code is 4: on all other conditions (show Usage etc.)
> 
> this way you can say 
> 
>    fcopy ... /etc/postgresql && /etc/init.d/postgresql restart || exit 1;
> 
> What do you think about using exit codes? First i sort it's not unix like, but 
> diff does like this, too.

Add $? to your prompt and you'll see that much more apps do it like this ;)
So both methods can coexists with file list turned on (or off) with a file
an option.

> > Philosophical: I favour postinst scripts for all this, i.e. event based
> > programming ;)   When using FAI the first time the split of data below
> > files and scripts using then scattered over the rest of fai/config
> > was very hard to follow.  Now I use fcopy recursive once and logic is
> > in postinst files.  And if something is missing I would first think
> > about adding another event script like postinst and filemode.
> 
> but if you have more than two (or more) config files for a daemon you need two 
> (or more) postinst scripts which reloads the daemon. And the daemon is 
> reloaded twice and maybe even before the second file is copied which might 
> even include a security hole. Because the daemon is restarted with only one 
> file changed, then copying the second file before restarting again. i don't 
> like restarting a half-configured daemon.

Yeah, that's right.  I didn't run into this yet (or didn't realize ;)

I _assume_ I would have added a cfggroup.<desc>/ tree with the correlated
files in it and used fcopy -r ... && <desc>-postinst  construct like you.
When it happened more often: groups/<desc>.{postinst,.d/,...}
plus a little wrapper script, that loops, calls fcopy -r and the scripts.

Achim

> 
> kind regards
> janning
> 
> 

-- 
  To me vi is Zen.  To use vi is to practice zen. Every command is
  a koan. Profound to the user, unintelligible to the uninitiated.
  You discover truth everytime you use it.
                                      -- reddy at lion.austin.ibm.com



More information about the linux-fai-devel mailing list