I don't think the prepare-device script can be used to auto connect, probably because it runs confined.

You can request the store to add an auto connection statement to the snap declaration assertion.

Cheers
kyleN


On 03/07/2017 05:19 AM, Nicolino Curalli wrote:
Hi all,
I implemented hints from James but it doesn't works.

I create a new gadget snap based on pc gadget for amd64, adding a hook 
directory with a prepare-device hook script.
I make this script executable.
I build  an image containg my gadget (domotz-pc), pc-kernel and nmap snap from 
store.

The layout of my new gadget snap ( named domotz-pc )  just installed is :

./

-rwxr-xr-x 1 root root 753 Mar  7 00:04 meta/gadget.yaml
-rw-r--r-- 1 root root 230 Mar  7 09:11 meta/snap.yaml

meta/gui:

-rwxr-xr-x 1 root root 39908 Nov 30 08:18 icon.png

meta/hooks:

-rwxr-xr-x 1 root root 134 Mar  7 09:09 prepare-device

The prepare-device script content is:

----------
#!/bin/sh

# enabling network-control interface slot for nmap network-control plug
snap connect nmap:network-control :network-control
----------

After the registration of board by console-conf i find the following I find the 
following situation on interface side:

:network       nmap
:network-bind  nmap
-              nmap:network-control

instead

:network       nmap
:network-bind  nmap
:network-control  nmap

as I wish.

I also  have  the following error from Apparmor:

Mar  7 02:23:10 localhost /usr/lib/snapd/snapd[936]: taskrunner.go:353: DEBUG: 
Running task 77 on Do: Run prepare-device hook
Mar  7 02:23:10 localhost kernel: [11351843419.508357] audit: type=1400 audit(1488853390.962:25): apparmor="DENIED" 
operation="exec" profile="snap.domotz-pc.hook.prepare-device" name="/usr/bin/snap" pid=1428 
comm="prepare-device" requested_mask="x" denied_mask="x" fsuid=0 ouid=0
Mar  7 02:23:10 localhost /usr/lib/snapd/snapd[936]: task.go:303: DEBUG: 
2017-03-07T02:23:10Z ERROR run hook "prepare-device": 
/snap/domotz-pc/x1/meta/hooks/prepare-device: 4: 
/snap/domotz-pc/x1/meta/hooks/prepare-device: snap: Permission denied
Mar  7 02:28:08 localhost systemd[1]: Starting Update resolvconf for networkd 
DNS...
Mar  7 02:28:08 localhost systemd-timesyncd[795]: Network configuration 
changed, trying to establish connection.
Mar  7 02:28:08 localhost systemd[1]: Started Update resolvconf for networkd 
DNS.
Mar  7 02:28:08 localhost systemd-timesyncd[795]: Synchronized to time server 
91.189.94.4:123 (ntp.ubuntu.com).
Mar  7 02:28:10 localhost /usr/lib/snapd/snapd[936]: taskrunner.go:353: DEBUG: 
Running task 80 on Do: Run prepare-device hook
Mar  7 02:28:10 localhost kernel: [11351843719.476882] audit: type=1400 audit(1488853690.938:26): apparmor="DENIED" 
operation="exec" profile="snap.domotz-pc.hook.prepare-device" name="/usr/bin/snap" pid=1455 
comm="prepare-device" requested_mask="x" denied_mask="x" fsuid=0 ouid=0
Mar  7 02:28:10 localhost /usr/lib/snapd/snapd[936]: task.go:303: DEBUG: 
2017-03-07T02:28:10Z ERROR run hook "prepare-device": 
/snap/domotz-pc/x1/meta/hooks/prepare-device: 4: 
/snap/domotz-pc/x1/meta/hooks/prepare-device: snap: Permission denied
Mar  7 02:33:07 localhost systemd[1]: Starting Update resolvconf for networkd 
DNS...
Mar  7 02:33:07 localhost systemd-timesyncd[795]: Network configuration 
changed, trying to establish connection.
Mar  7 02:33:07 localhost systemd[1]: Started Update resolvconf for networkd 
DNS.
Mar  7 02:33:07 localhost systemd-timesyncd[795]: Synchronized to time server 
91.189.94.4:123 (ntp.ubuntu.com).
Mar  7 02:33:10 localhost /usr/lib/snapd/snapd[936]: taskrunner.go:353: DEBUG: 
Running task 83 on Do: Run prepare-device hook
Mar  7 02:33:10 localhost kernel: [11351844019.491749] audit: type=1400 audit(1488853990.964:27): apparmor="DENIED" 
operation="exec" profile="snap.domotz-pc.hook.prepare-device" name="/usr/bin/snap" pid=1475 
comm="prepare-device" requested_mask="x" denied_mask="x" fsuid=0 ouid=0
Mar  7 02:33:10 localhost /usr/lib/snapd/snapd[936]: task.go:303: DEBUG: 
2017-03-07T02:33:10Z ERROR run hook "prepare-device": 
/snap/domotz-pc/x1/meta/hooks/prepare-device: 4: 
/snap/domotz-pc/x1/meta/hooks/prepare-device: snap: Permission denied
Mar  7 02:38:07 localhost systemd[1]: Starting Update resolvconf for networkd 
DNS...
Mar  7 02:38:07 localhost systemd-timesyncd[795]: Network configuration 
changed, trying to establish connection.
Mar  7 02:38:07 localhost systemd[1]: Started Update resolvconf for networkd 
DNS.
Mar  7 02:38:07 localhost systemd-timesyncd[795]: Synchronized to time server 
91.189.94.4:123 (ntp.ubuntu.com).
Mar  7 02:38:10 localhost /usr/lib/snapd/snapd[936]: taskrunner.go:353: DEBUG: 
Running task 86 on Do: Run prepare-device hook
Mar  7 02:38:10 localhost /usr/lib/snapd/snapd[936]: task.go:303: DEBUG: 
2017-03-07T02:38:10Z ERROR run hook "prepare-device": 
/snap/domotz-pc/x1/meta/hooks/prepare-device: 4: 
/snap/domotz-pc/x1/meta/hooks/prepare-device: snap: Permission denied
Mar  7 02:38:10 localhost kernel: [11351844319.456207] audit: type=1400 audit(1488854290.935:28): apparmor="DENIED" 
operation="exec" profile="snap.domotz-pc.hook.prepare-device" name="/usr/bin/snap" pid=1496 
comm="prepare-device" requested_mask="x" denied_mask="x" fsuid=0 ouid=0


It seems that is not possible exec a core apps from gadget, then what is the 
path to the solution for my use case? Perhaps I miss some important thing in 
prepare-device script?

Thanks in advance for each hints and contribution to solve this use case.


Nicolino



--
Snapcraft mailing list
Snapcraft@lists.snapcraft.io
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/snapcraft

Reply via email to