Some code you may find useful to enforce the readonly byte (do this before your program opens the DB). John
#include <fcntl.h> #include <unistd.h> #define int setRObyte ( const char * sqDBfn ) { int fd = open(sqDBfn, O_WRONLY, 0); int rc = -1; if (fd == -1) return -1; #ifdef HAVE_PWRITE if (pwrite(fd, "\143", (size_t)1, (off_t)18) == 1) rc = 0; #else if (lseek(fd, (off_t)18, SEEK_SET) == (off_t)18) == 1) ? 0 : -1; rc = (write(fd, "\143", (size_t)1) == 1) ? 0 : -1; } else rc = -1; #endif (void)close(fd); return rc; } On Tue, Oct 14, 2014 at 7:23 AM, Richard Hipp <d...@sqlite.org> wrote: > On Tue, Oct 14, 2014 at 2:19 AM, Ross Altman <altman...@husky.neu.edu> > wrote: > > > I need to host a fixed, unchanging database online, and I want to make > sure > > that anyone who downloads it cannot add to it. Is there any way to set > the > > permissions to be read-only within sqlite? > > > > Change the 18th byte of the file from 1 or 2 to 99. > > Anyone who downloads the file can always change that byte back to its > original value using a binary editor and then write the database. But you > have at least then made the problem more difficult for them. > > -- > D. Richard Hipp > d...@sqlite.org > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users