[LEDE-DEV] Create a ubus object with a non-root account
Luis Araneda
luaraneda at gmail.com
Tue May 16 22:17:03 PDT 2017
Hi,
I'm trying to create a ubus object using a non-root account.
I've created an ACL file and put it inside the folder "/usr/share/acl.d"
{
"user": "ubususer1",
"access": {
"system": {
"methods": [ "board", "info" ]
},
"testobj": {
"methods": [ "say_hello", "add", "reply" ]
},
"service": {
"methods": [ "list" ]
}
}
}
With the ACL file, the non-root account can access the methods just fine.
When I try to execute the program using the non-root account,
it fails when calling ubus_add_object(). This is the output of
"ubus monitor":
root at LEDE:~# ubus monitor
-> 1af1ba4b #00000003 status: {"status":0}
-> 0973710c #0973710c hello: {}
<- 0973710c #00000000 add_object: {"objpath":"testobj",
"signature":{"say_hello":{},
"reply":{"msg":3},
"add":{"a":5,"b":5}}}
-> 0973710c #00000000 status: {"status":2}
<- 0973710c #00000000 add_object: {}
-> 0973710c #00000000 data: {"objid":1402562455}
-> 0973710c #00000000 status: {"status":0}
But, when I try execute the program as root, it executes correctly,
giving this output on "ubus monitor":
root at LEDE:~# ubus monitor
-> 83090aba #00000003 status: {"status":0}
-> 1a8c6bf2 #1a8c6bf2 hello: {}
<- 1a8c6bf2 #00000000 add_object: {"objpath":"testobj",
"signature":{"say_hello":{},
"reply":{"msg":3},
"add":{"a":5,"b":5}}}
-> 9dc9e08c #00000000 invoke: {"objid":-723209694,
"method":"ubus.object.add",
"data":{"id":-235541040,"path":"testobj"}}
-> 4bb7a57d #00000000 invoke: {"objid":-1940255602,
"method":"ubus.object.add",
"data":{"id":-235541040,"path":"testobj"}}
-> 1a8c6bf2 #00000000 data: {"objid":-235541040,"objtype":1777611453}
-> 1a8c6bf2 #00000000 status: {"status":0}
<- 9dc9e08c #00000000 status: {"status":0,"objid":-723209694}
<- 4bb7a57d #00000000 status: {"status":0,"objid":-1940255602}
<- 1a8c6bf2 #00000000 add_object: {}
-> 1a8c6bf2 #00000000 data: {"objid":752170120}
-> 1a8c6bf2 #00000000 status: {"status":0}
I've done some research, and I've found
https://lists.openwrt.org/pipermail/openwrt-devel/2015-September/035514.html
and I think the call to ubusd_acl_check() shouldn't generate an error in
my case because I have an ACL file (assuming it is properly written)
- I doing something wrong in the ACL file?
- Is the root user the only allowed to add an object to the bus?
- Am I missing something?
Thanks in advance,
Luis Araneda.
More information about the Lede-dev
mailing list