#
local auid=444
ceph-authtool --create-keyring --name client.TEST --gen-key --set-uid $auid TEST-keyring
+ expect_false ceph auth import --in-file TEST-keyring
+ rm TEST-keyring
+ ceph-authtool --create-keyring --name client.TEST --gen-key --cap mon "allow r" --set-uid $auid TEST-keyring
ceph auth import --in-file TEST-keyring
rm TEST-keyring
ceph auth get client.TEST > $TMPFILE
mon->key_server.export_keyring(keyring);
}
-void AuthMonitor::import_keyring(KeyRing& keyring)
+int AuthMonitor::import_keyring(KeyRing& keyring)
{
for (map<EntityName, EntityAuth>::iterator p = keyring.get_keys().begin();
p != keyring.get_keys().end();
++p) {
+ if (p->second.caps.empty()) {
+ dout(0) << "import: no caps supplied" << dendl;
+ return -EINVAL;
+ }
KeyServerData::Incremental auth_inc;
auth_inc.name = p->first;
auth_inc.auth = p->second;
dout(30) << " " << auth_inc.auth << dendl;
push_cephx_inc(auth_inc);
}
+ return 0;
}
bool AuthMonitor::prepare_command(MonOpRequestRef op)
err = -EINVAL;
goto done;
}
- import_keyring(keyring);
+ err = import_keyring(keyring);
+ if (err < 0) {
+ ss << "auth import: no caps supplied";
+ getline(ss, rs);
+ mon->reply_command(op, -EINVAL, rs, get_last_committed());
+ return true;
+ }
ss << "imported keyring";
getline(ss, rs);
err = 0;
void upgrade_format();
void export_keyring(KeyRing& keyring);
- void import_keyring(KeyRing& keyring);
+ int import_keyring(KeyRing& keyring);
void push_cephx_inc(KeyServerData::Incremental& auth_inc) {
Incremental inc;