Re: Problem using mandatory locks (other apps can read/delete etc)
E. Abbink (esger@bumblebeast.com)
Fri, 12 Apr 2002 11:22:53 +0200
> On Thu, Apr 11, 2002 at 09:37:37AM -0200, Denis Vlasenko wrote:
> > On 10 April 2002 15:08, E. Abbink wrote:
> > > I'm trying to solve a problem using mandatory locks but am having some
> > > difficulty in doing so. (if there's a more appropriate place for
> > > discussing this please ignore the rest of this post. pointers to that
> > > place would be appreciated ;) )
> > >
> > > my problem:
> > >
> > > when I lock a file with a mandatory write lock (ie. fcntl, +s-x
bits and
> > > mand mount option. for code see below) it is still possible:
> > >
> > > - for me to rm the file in question
> > > - for the file to be read by an other process
> >
> > [snip]
> >
> > > lock.l_type = F_WRLCK ; <================
> > > lock.l_whence = SEEK_SET ;
> > > lock.l_start = 0 ;
> > > lock.l_len = 0 ;
> > > lock.l_pid = 0 ; // ignored
> > >
> > > int err = fcntl (fd, F_SETLK, &lock) ;
> >
> > I know nothing about file locking in Unix, but it looks like you
> > requested write lock, i.e. forbid writing to a file. Why are you
> > surprised that reads are allowed?
>
> That's advisory write lock. Question is: why open call to read the file
> succeeded?
Normally it's an advisory lock, but if you do the appropriate actions
(mounting the fs with mand and setting the +s-x modebits, see
Documentation/mandatory.txt) the file becomes a mandatory lock candidate
and fcntl will/should mandatory lock it.
>
> >
> > Probably someone else would comment on why rm is working, though...
>
> Why not? Apparently he has write permission on the directory which contain
> the file, and is the owner of that file.
>
> By the way, where are you changing file permissions to +s-x?
>
by hand before the program is run.
>
>
>
--
NeoMail - Webmail that doesn't suck... as much.
http://neomail.sourceforge.net
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/