我正在使用下面的代码与Ceph集群交谈并获得
即使管理员用户具有所有特权,EAccess也会拒绝例外。有解决这个问题的指针吗?我正在docker中运行集群。

管理员权限:

client.admin
    key: AQDVsTJdeF0KExAAd58npeDpnJsXQZwfUBAPMA==
    auid: 0
    caps: [mds] allow
    caps: [mgr] allow *
    caps: [mon] allow *
    caps: [osd] allow *


例外:


无法连接到Ceph集群; EACCES:权限被拒绝
(-13):com.ceph.rados.exceptions.RadosException:无法连接到
Ceph集群; EACCES:权限被拒绝(-13)
com.ceph.rados.exceptions.RadosException:无法连接到Ceph集群; EACCES:权限被拒绝(-13)
在com.ceph.rados.RadosBase.throwException(RadosBase.java:94)
在com.ceph.rados.RadosBase.handleReturnCode(RadosBase.java:50)
在com.ceph.rados.Rados.connect(Rados.java:160)
在com.example.demo.CephClient.main(CephClient.java:20)


码:

Rados cluster = new Rados("admin");
  System.out.println("Created cluster handle.");

  File f = new File("/etc/ceph/ceph.conf");
  cluster.confReadFile(f);
  System.out.println("Read the configuration file.");

  cluster.connect();
  System.out.println("Connected to the cluster.");


ceph.conf

mon initial members = VirtualBox
mon host = xxx.xxx.x.xxxx
public network = xxx.xxx.xxx.xxx/xx
cluster network = xxx.xxx.xxx.xxx/xx
osd journal size = 100
log file = /dev/null
keyring = /etc/ceph/ceph.client.admin.keyring

最佳答案

问题是ceph.client.admin.keyring文件的权限与ceph用户有关。我以root用户身份运行应用程序,这就是为什么权限被拒绝例外。

将文件权限更改为root之后。有效。

     sudo chown root:root filepath

关于java - Ceph:通过Java连接时EAccess被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57122327/

10-13 04:14