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

Reply via email to