in reply to File rights?

I am going to go out on a limb and say that your problem does not involve permissions at all and is due to the issue that I mentioned at Re (tilly) 3: BerkleyDB versions 2.x , 3.x, which is that the underlying Berkeley DB libraries cannot be accessed simultaneously from multiple machines due to limitations in how shared memory is implemented.

Furthermore I am going to guess that this error comes from inside the C library, and is not (usefully at least) trapped by DB_File, which is why $! is not populated.

Using locks so that people don't really access this simultaneously is likely to help. (I cannot guarantee that though.) Another solution for read-only access is to have people operate off of local copies of the index files.

And an incidental note for the casual reader. The underlying shared memory issue is one of the reasons why at Re (tilly) 2: Synchronizing variables (in mod_perl) across Apache instances? I said I prefer avoiding introducing shared memory when it is not yet needed. Berkeley DB has little choice, among other things they implement their locking subsystem between processes in a shared memory segment. However if you are building something that will ever potentially be shared across machines, avoid it up front.