Hi, Konstantin,
>Perhaps more logical would be to do what Unix does: if permissions aren't
explicitly set during creation, those should be inherited from the parent.
as per my observations on Linux, the implicitly created directories take
default permissions 0777 & ~umask but not inherit them from parent.
E.g.
/bin/mkdir -m 700 a
/bin/mkdir -p -m 770 a/b/c/d
gives the following result:
a 700
a/b 775
a/b/c 775
a/b/c/d 770
('touch' Unix command does not have ability to create parent directories.)
Or you mean a behavior of a built-in system function, but not the standard
commands?
Currently suggested patch (see
https://issues.apache.org/jira/browse/IGNITE-1637) fixes the behavior
exactly as it is implemented in HDFS (because main function of IGFS is to
be a replacement or a caching layer over HDFS):
--------------------------------
If a file is created, the created directories get
org.apache.hadoop.fs.permission.FsPermission#getDirDefault (0777)
permission. Umask *is* applied to the created file, but is *not *applied to
the created directories.
If a directory is created, all the parent directories are created with the
same permission that is requested for the directory itself. The only
exception is that "wx" (write and execute) permissions are explicitly added
for the owner on the parent directories to be able to write child
directories. Umask *is* applied to all the created directories.
If umask conflicts with the added permissions , the added permissions take
priority.
--------------------------------
Though, there is no problem to re-implement this in another way. Just would
like to make sure we have a proposal that is argued and agreed over the
community.
On Sat, Nov 21, 2015 at 6:37 PM, Dmitriy Setrakyan <[email protected]>
wrote:
> On Fri, Nov 20, 2015 at 7:05 PM, Konstantin Boudnik <[email protected]>
> wrote:
>
> > On Tue, Oct 13, 2015 at 08:01PM, Ivan Veselovskiy wrote:
> > > Currently we have #create, #append , #mkdirs operations that implicitly
> > > create parent directories if they are absent.
> > > Now #mkdirs uses the properties passed in for the implicitly created
> > > directories if they are not null, and uses default properties (with
> 0777
> > > permission flag) if the properties are not given.
> > > #create & #append use for the implicitly created directories properties
> > > passed in for newly created file, if the passed in properties are not
> > null,
> > > and use default properties (with 0777 permission flag) if they are not
> > > given.
> > > The question is: wouldn't it be more logical to always use defaults for
> > the
> > > implicitly created directories?
> >
> > Looks like this is way to late, but still... Perhaps more logical would
> be
> > to
> > do what Unix does: if permissions aren't explicitly set during creation,
> > those should be inherited from the parent.
> >
> > Does it makes sense?
> >
>
> Makes sense to me.
>
>
> > Cos
> >
>