我正在使用下面的代码与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/