Re: Unable to restrict a CephFS client to a subdirectory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Yoann,

I confirm too that your recipe works! 

We run CentOS 7:
[root@pulpo-admin ~]# uname -r
3.10.0-693.2.2.el7.x86_64

Here were the old caps for user 'hydra':
# ceph auth get client.hydra
exported keyring for client.hydra
[client.hydra]
        key = AQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==
        caps mds = "allow rw"
        caps mgr = "allow r"
        caps mon = "allow r"
        caps osd = "allow rw"

Our CephFS name is 'pulpos', when I tried to restrict CephFS client capabilities:
# ceph fs authorize pulpos client.hydra /hydra rw
I got this error:
Error EINVAL: key for client.hydra exists but cap mds does not match

In retrospect, the error means exactly what it says: the user caps and CephFS client caps must match! You can't *restrict* (narrow down) user caps with 'ceph fs authorize'.

For example, this won't work (I can't give 'rw' cap to all pools the restrict it):
# ceph auth caps client.hydra mon 'allow r' mgr 'allow r' osd 'allow rw' mds 'allow rw path=/hydra'
updated caps for client.hydra
# ceph fs authorize pulpos client.hydra /hydra rw
Error EINVAL: key for client.hydra exists but cap osd does not match

I find only this works:
# ceph auth caps client.hydra mon 'allow r' mgr 'allow r' osd 'allow rw pool=cephfs_data' mds 'allow rw path=/hydra'
updated caps for client.hydra
# ceph fs authorize pulpos client.hydra /hydra rw
[client.hydra]
        key = AQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==
```

But I still have 2 lingering questions:
1. If the user caps and CephFS client caps must match, why do we need 2 commands ('ceph auth' & 'ceph fs authorzie')? The first one is sufficient.
2. We only give 'rw' cap to the data pool and it works. Why is it unnecessary to give 'rw' cap to the metadata pool?

Best regards,
Shaw 



On Tue, Oct 10, 2017 at 4:20 AM, Yoann Moulin <yoann.moulin@xxxxxxx> wrote:

>> I am trying to follow the instructions at:
>> http://docs.ceph.com/docs/master/cephfs/client-auth/
>> to restrict a client to a subdirectory of  Ceph filesystem, but always get
>> an error.
>>
>> We are running the latest stable release of Ceph (v12.2.1) on CentOS 7
>> servers. The user 'hydra' has the following capabilities:
>> # ceph auth get client.hydra
>> exported keyring for client.hydra
>> [client.hydra]
>>         key = AQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==
>>         caps mds = "allow rw"
>>         caps mgr = "allow r"
>>         caps mon = "allow r"
>>         caps osd = "allow rw"
>>
>> When I tried to restrict the client to only mount and work within the
>> directory /hydra of the Ceph filesystem 'pulpos', I got an error:
>> # ceph fs authorize pulpos client.hydra /hydra rw
>> Error EINVAL: key for client.dong exists but cap mds does not match
>>
>> I've tried a few combinations of user caps and CephFS client caps; but
>> always got the same error!
>
> The "fs authorize" command isn't smart enough to edit existing
> capabilities safely, so it is cautious and refuses to overwrite what
> is already there.  If you remove your client.hydra user and try again,
> it should create it for you with the correct capabilities.

I confirm it works perfectly ! it should be added to the documentation. :)

# ceph fs authorize cephfs client.foo1 /foo1 rw
[client.foo1]
        key = XXX1
# ceph fs authorize cephfs client.foo2 / r /foo2 rw
[client.foo2]
        key = XXX2

# ceph auth get client.foo1
exported keyring for client.foo1
[client.foo1]
        key = XXX1
        caps mds = "allow rw path=/foo1"
        caps mon = "allow r"
        caps osd = "allow rw pool=cephfs_data"

# ceph auth get client.foo2
exported keyring for client.foo2
[client.foo2]
        key = XXX2
        caps mds = "allow r, allow rw path=/foo2"
        caps mon = "allow r"
        caps osd = "allow rw pool=cephfs_data"

Best regards,

--
Yoann Moulin
EPFL IC-IT
_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Ceph Dev]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux