Re: Persistent volume ownership issue

2016-06-21 Thread James Peach
On 21 June 2016 at 12:25, Jie Yu  wrote:
> James, sticky bit means that there will be no write sharing between two
> users even if the underlying permission allows it. I'd prefer not having
> this restriction:)

No, it just prevents users renaming or deleting each others files.

http://man7.org/linux/man-pages/man1/chmod.1.html

If you want multiple users to be able to write to the same files, they
need to create with the right ownership.

>> I wonder whether ACLs are the right solution to volume ownership?
>> Certainly I think inherited ACLs are a good solution for expressing a
>> consistent access control policy over a hierarchy (at least in the
>> Windows/Darwin/SMB/NFSv4/RichAcl ACL model).
>
>
> Are you suggesting that we don't expose the underlying unix user directly to
> frameworks. Instead, expressing permissions and ownerships using ACLs?

Well that could be an option, though I'm mainly thinking out loud.
With shared volumes, it seems like you really want an access control
policy that applies to the volume, rather than requiring processes to
collaborate at a file granularity. One way to do that would be to make
the owner the creator of the volume, then use ACL inheritance to grant
additional access to other users. You'd have to reflow the
inheritance, but it could probably done.

-- 
James Peach | jor...@gmail.com


Re: Persistent volume ownership issue

2016-06-21 Thread Jie Yu
I created https://issues.apache.org/jira/browse/MESOS-5680 to track.

Since this is no objection, we'll make sure the fix go into 1.0.

- Jie

On Tue, Jun 21, 2016 at 12:25 PM, Jie Yu  wrote:

> James, sticky bit means that there will be no write sharing between two
> users even if the underlying permission allows it. I'd prefer not having
> this restriction:)
>
> I wonder whether ACLs are the right solution to volume ownership?
>> Certainly I think inherited ACLs are a good solution for expressing a
>> consistent access control policy over a hierarchy (at least in the
>> Windows/Darwin/SMB/NFSv4/RichAcl ACL model).
>
>
> Are you suggesting that we don't expose the underlying unix user directly
> to frameworks. Instead, expressing permissions and ownerships using ACLs?
>
> - Jie
>
> On Tue, Jun 21, 2016 at 9:00 AM, James Peach  wrote:
>
>> Non-recursive chown is an improvement over recursive chown which seems
>> fraught and should be avoided. For an interim fix, could you make the
>> volume root world writeable with the sticky bit set? Then you wouldn't
>> have to chown and volume users would still be able to create files.
>>
>> I wonder whether ACLs are the right solution to volume ownership?
>> Certainly I think inherited ACLs are a good solution for expressing a
>> consistent access control policy over a hierarchy (at least in the
>> Windows/Darwin/SMB/NFSv4/RichAcl ACL model).
>>
>> On 20 June 2016 at 23:25, Jie Yu  wrote:
>> > Hi folks,
>> >
>> > Currently, the ownership of the persistent volumes are set to be the
>> same as
>> > the sandbox. In the implementation, we call `chown -R` on the persistent
>> > volume to match that of the sandbox each time before we mount it into
>> the
>> > container.
>> >
>> > Recently, we realized that this behavior is not ideal. Especially, if a
>> task
>> > created some files in the persistent volume, and the owner of those file
>> > might be different than the task's user. For instance, a task is running
>> > under root and it creates some database files under user 'database' and
>> > launch the database process under user 'database'. When the database
>> process
>> > is restarted by the scheduler, the current behavior is that the we'll
>> do a
>> > 'chown -R root.root' on the persistent volume, causes database files to
>> be
>> > chown to 'root'.
>> >
>> > The true fix of this problem is to allow frameworks to explicit specify
>> > owner of persistent volumes during creation. THis is captured in this
>> > ticket:
>> > https://issues.apache.org/jira/browse/MESOS-4893
>> >
>> > In the short-term (for 1.0), I propose that, instead of doing a
>> recursive
>> > chown, we do a non-recursive chown. That'll allow the new task to at
>> least
>> > create new files under the persistent volume, but do not change
>> ownership of
>> > files created by previous tasks. It should be a very simple fix which
>> we can
>> > ship in 1.0. We'll ship MESOS-4893 after 1.0. What do you guys think?
>> >
>> > Thanks,
>> > - Jie
>>
>>
>>
>> --
>> James Peach | jor...@gmail.com
>>
>
>


Re: Persistent volume ownership issue

2016-06-21 Thread Jie Yu
James, sticky bit means that there will be no write sharing between two
users even if the underlying permission allows it. I'd prefer not having
this restriction:)

I wonder whether ACLs are the right solution to volume ownership?
> Certainly I think inherited ACLs are a good solution for expressing a
> consistent access control policy over a hierarchy (at least in the
> Windows/Darwin/SMB/NFSv4/RichAcl ACL model).


Are you suggesting that we don't expose the underlying unix user directly
to frameworks. Instead, expressing permissions and ownerships using ACLs?

- Jie

On Tue, Jun 21, 2016 at 9:00 AM, James Peach  wrote:

> Non-recursive chown is an improvement over recursive chown which seems
> fraught and should be avoided. For an interim fix, could you make the
> volume root world writeable with the sticky bit set? Then you wouldn't
> have to chown and volume users would still be able to create files.
>
> I wonder whether ACLs are the right solution to volume ownership?
> Certainly I think inherited ACLs are a good solution for expressing a
> consistent access control policy over a hierarchy (at least in the
> Windows/Darwin/SMB/NFSv4/RichAcl ACL model).
>
> On 20 June 2016 at 23:25, Jie Yu  wrote:
> > Hi folks,
> >
> > Currently, the ownership of the persistent volumes are set to be the
> same as
> > the sandbox. In the implementation, we call `chown -R` on the persistent
> > volume to match that of the sandbox each time before we mount it into the
> > container.
> >
> > Recently, we realized that this behavior is not ideal. Especially, if a
> task
> > created some files in the persistent volume, and the owner of those file
> > might be different than the task's user. For instance, a task is running
> > under root and it creates some database files under user 'database' and
> > launch the database process under user 'database'. When the database
> process
> > is restarted by the scheduler, the current behavior is that the we'll do
> a
> > 'chown -R root.root' on the persistent volume, causes database files to
> be
> > chown to 'root'.
> >
> > The true fix of this problem is to allow frameworks to explicit specify
> > owner of persistent volumes during creation. THis is captured in this
> > ticket:
> > https://issues.apache.org/jira/browse/MESOS-4893
> >
> > In the short-term (for 1.0), I propose that, instead of doing a recursive
> > chown, we do a non-recursive chown. That'll allow the new task to at
> least
> > create new files under the persistent volume, but do not change
> ownership of
> > files created by previous tasks. It should be a very simple fix which we
> can
> > ship in 1.0. We'll ship MESOS-4893 after 1.0. What do you guys think?
> >
> > Thanks,
> > - Jie
>
>
>
> --
> James Peach | jor...@gmail.com
>


Re: Persistent volume ownership issue

2016-06-21 Thread Yan Xu
+1 if no one is relying on the old behavior.

Jiang Yan Xu 

On Mon, Jun 20, 2016 at 11:25 PM, Jie Yu  wrote:

> Hi folks,
>
> Currently, the ownership of the persistent volumes are set to be the same
> as the sandbox. In the implementation, we call `chown -R` on the persistent
> volume to match that of the sandbox each time before we mount it into the
> container.
>
> Recently, we realized that this behavior is not ideal. Especially, if a
> task created some files in the persistent volume, and the owner of those
> file might be different than the task's user. For instance, a task is
> running under root and it creates some database files under user 'database'
> and launch the database process under user 'database'. When the database
> process is restarted by the scheduler, the current behavior is that the
> we'll do a 'chown -R root.root' on the persistent volume, causes database
> files to be chown to 'root'.
>
> The true fix of this problem is to allow frameworks to explicit specify
> owner of persistent volumes during creation. THis is captured in this
> ticket:
> https://issues.apache.org/jira/browse/MESOS-4893
>
> In the short-term (for 1.0), I propose that, instead of doing a recursive
> chown, we do a non-recursive chown. That'll allow the new task to at least
> create new files under the persistent volume, but do not change ownership
> of files created by previous tasks. It should be a very simple fix which we
> can ship in 1.0. We'll ship MESOS-4893 after 1.0. What do you guys think?
>
> Thanks,
> - Jie
>


Re: Persistent volume ownership issue

2016-06-21 Thread James Peach
Non-recursive chown is an improvement over recursive chown which seems
fraught and should be avoided. For an interim fix, could you make the
volume root world writeable with the sticky bit set? Then you wouldn't
have to chown and volume users would still be able to create files.

I wonder whether ACLs are the right solution to volume ownership?
Certainly I think inherited ACLs are a good solution for expressing a
consistent access control policy over a hierarchy (at least in the
Windows/Darwin/SMB/NFSv4/RichAcl ACL model).

On 20 June 2016 at 23:25, Jie Yu  wrote:
> Hi folks,
>
> Currently, the ownership of the persistent volumes are set to be the same as
> the sandbox. In the implementation, we call `chown -R` on the persistent
> volume to match that of the sandbox each time before we mount it into the
> container.
>
> Recently, we realized that this behavior is not ideal. Especially, if a task
> created some files in the persistent volume, and the owner of those file
> might be different than the task's user. For instance, a task is running
> under root and it creates some database files under user 'database' and
> launch the database process under user 'database'. When the database process
> is restarted by the scheduler, the current behavior is that the we'll do a
> 'chown -R root.root' on the persistent volume, causes database files to be
> chown to 'root'.
>
> The true fix of this problem is to allow frameworks to explicit specify
> owner of persistent volumes during creation. THis is captured in this
> ticket:
> https://issues.apache.org/jira/browse/MESOS-4893
>
> In the short-term (for 1.0), I propose that, instead of doing a recursive
> chown, we do a non-recursive chown. That'll allow the new task to at least
> create new files under the persistent volume, but do not change ownership of
> files created by previous tasks. It should be a very simple fix which we can
> ship in 1.0. We'll ship MESOS-4893 after 1.0. What do you guys think?
>
> Thanks,
> - Jie



-- 
James Peach | jor...@gmail.com


Re: Persistent volume ownership issue

2016-06-21 Thread Anindya Sinha
Currently the volume is owned by say framework user A when a CREATE is done. 
When a task is launched, the ownership of the volume is changed recursively to 
say user B, which means the root directory and all of its content has now 
ownership of user B. This enables user B to write into this persistent volume 
but as a result it changes ownership of all existing contents of persistent 
volume to user B as well.

I think change just changes ownership of the root directory  to user B but 
keeps the ownership of the existing content of persistent volume to user A. 
This would still allow the task to write onto the persistent volume as user B 
(at least at root level) but not allow existing content to be deleted or 
overwritten that is owned by a lower privileged user.

I think this would work and would restrict lower privileged user to not modify 
contents of higher privileged users.

Thanks
Anindya


> On Jun 21, 2016, at 5:07 AM, Joris Van Remoortere  wrote:
> 
> For the case where a container drops down in privileges and still wants to
> create a new file, this will result in an error if it is at the root of the
> persistent volume right?
> 
> Is the recommended pattern then to always create a stub directory at the
> root of the persistent volume, and then launch any lower privileged apps
> underneath that? For example:
> 
> / <- Root of persistent volume (Owned by framework user / root)
> /Database/ <- Stub directory (Owned by lower privileged user)
> 
> All new files by the lower privileged app must be created under /Database/*
> ?
> It would result in an error if the App tried to create /Database-backups/ ?
> Only the framework as its original user would be able to do that?
> 
> —
> *Joris Van Remoortere*
> Mesosphere
> 
>> On Tue, Jun 21, 2016 at 8:25 AM, Jie Yu  wrote:
>> 
>> Hi folks,
>> 
>> Currently, the ownership of the persistent volumes are set to be the same
>> as the sandbox. In the implementation, we call `chown -R` on the persistent
>> volume to match that of the sandbox each time before we mount it into the
>> container.
>> 
>> Recently, we realized that this behavior is not ideal. Especially, if a
>> task created some files in the persistent volume, and the owner of those
>> file might be different than the task's user. For instance, a task is
>> running under root and it creates some database files under user 'database'
>> and launch the database process under user 'database'. When the database
>> process is restarted by the scheduler, the current behavior is that the
>> we'll do a 'chown -R root.root' on the persistent volume, causes database
>> files to be chown to 'root'.
>> 
>> The true fix of this problem is to allow frameworks to explicit specify
>> owner of persistent volumes during creation. THis is captured in this
>> ticket:
>> https://issues.apache.org/jira/browse/MESOS-4893
>> 
>> In the short-term (for 1.0), I propose that, instead of doing a recursive
>> chown, we do a non-recursive chown. That'll allow the new task to at least
>> create new files under the persistent volume, but do not change ownership
>> of files created by previous tasks. It should be a very simple fix which we
>> can ship in 1.0. We'll ship MESOS-4893 after 1.0. What do you guys think?
>> 
>> Thanks,
>> - Jie
>> 


Re: Persistent volume ownership issue

2016-06-21 Thread Joris Van Remoortere
For the case where a container drops down in privileges and still wants to
create a new file, this will result in an error if it is at the root of the
persistent volume right?

Is the recommended pattern then to always create a stub directory at the
root of the persistent volume, and then launch any lower privileged apps
underneath that? For example:

/ <- Root of persistent volume (Owned by framework user / root)
/Database/ <- Stub directory (Owned by lower privileged user)

All new files by the lower privileged app must be created under /Database/*
?
It would result in an error if the App tried to create /Database-backups/ ?
Only the framework as its original user would be able to do that?

—
*Joris Van Remoortere*
Mesosphere

On Tue, Jun 21, 2016 at 8:25 AM, Jie Yu  wrote:

> Hi folks,
>
> Currently, the ownership of the persistent volumes are set to be the same
> as the sandbox. In the implementation, we call `chown -R` on the persistent
> volume to match that of the sandbox each time before we mount it into the
> container.
>
> Recently, we realized that this behavior is not ideal. Especially, if a
> task created some files in the persistent volume, and the owner of those
> file might be different than the task's user. For instance, a task is
> running under root and it creates some database files under user 'database'
> and launch the database process under user 'database'. When the database
> process is restarted by the scheduler, the current behavior is that the
> we'll do a 'chown -R root.root' on the persistent volume, causes database
> files to be chown to 'root'.
>
> The true fix of this problem is to allow frameworks to explicit specify
> owner of persistent volumes during creation. THis is captured in this
> ticket:
> https://issues.apache.org/jira/browse/MESOS-4893
>
> In the short-term (for 1.0), I propose that, instead of doing a recursive
> chown, we do a non-recursive chown. That'll allow the new task to at least
> create new files under the persistent volume, but do not change ownership
> of files created by previous tasks. It should be a very simple fix which we
> can ship in 1.0. We'll ship MESOS-4893 after 1.0. What do you guys think?
>
> Thanks,
> - Jie
>


Persistent volume ownership issue

2016-06-20 Thread Jie Yu
Hi folks,

Currently, the ownership of the persistent volumes are set to be the same
as the sandbox. In the implementation, we call `chown -R` on the persistent
volume to match that of the sandbox each time before we mount it into the
container.

Recently, we realized that this behavior is not ideal. Especially, if a
task created some files in the persistent volume, and the owner of those
file might be different than the task's user. For instance, a task is
running under root and it creates some database files under user 'database'
and launch the database process under user 'database'. When the database
process is restarted by the scheduler, the current behavior is that the
we'll do a 'chown -R root.root' on the persistent volume, causes database
files to be chown to 'root'.

The true fix of this problem is to allow frameworks to explicit specify
owner of persistent volumes during creation. THis is captured in this
ticket:
https://issues.apache.org/jira/browse/MESOS-4893

In the short-term (for 1.0), I propose that, instead of doing a recursive
chown, we do a non-recursive chown. That'll allow the new task to at least
create new files under the persistent volume, but do not change ownership
of files created by previous tasks. It should be a very simple fix which we
can ship in 1.0. We'll ship MESOS-4893 after 1.0. What do you guys think?

Thanks,
- Jie