I don't think you can get away without a tempfile and get safe "in-place" modifications. It looks to me like the best compromise would be to - read in the original - write the modified file to a temp (use ruby's 'tempfile' which, I think, should create a temp with secure permissions) - use the most atomic os facility you can to copy the modified atop the original On many platforms this might map to Rubys File.rename or FileUtils.mv, I'm not sure... HTH, - alan