From: Jamie C. <jca...@we...> - 2002-02-12 10:56:21
|
David Morton wrote: > > > From what I understand from my own reading of the subject up to now > >(which I'll do more of now) there isn't a universal method of locking a > >file. I think the current method is used for universal compatibility > >across numerous platforms...but I don't know which platforms, if any, > >don't play well with flock. Might be worth trying out...When I was > >curious about this I found the flock tutorial at Perl Monks to be helpful: > > Quite right - In order to play nicely with other programs, we need to read > up > a little more. In order to prevent the race condition with Webmin, > the opening of the .lock file and the writing of the pid file needs > to be protected with flock, at the least. This would prevent webmin from > racing with itself. In order to keep from messing up with other programs, > we need to use the same method that they use... which is beyond what I > have time to investigate right now... :P > > For someone who knows what they are doing, this is probably a 2-3 line fix. You're right that the lock_file function has a race condition that could cause problems, but even that problem wouldn't cause multiple simulataneous password changes to create additional shadow file entries.. If two processes doing a password change got locks at once, the result would be that one of the password changes would be written to the file and the other one lost. The lock_file function does need to be improved though, and I would welcome suggestions from anyone on the list for an operating system and filesystem independant way of doing it .. flock is probably the best way, but does it work properly on NFS filesystems? - Jamie |