Enquanto parte do processo de transformá-lo em um snap significa que todos esses arquivos são de propriedade root, você ainda pode usar bits de modo de arquivo. Tome este snapcraft.yaml
por exemplo:
name: not-protected-snap
version: '0.1'
summary: my summary
description: my description
grade: devel
confinement: strict
apps:
hello:
command: hello.sh
parts:
my-part:
plugin: nil
build: |
echo "#!/bin/sh" > $SNAPCRAFT_PART_INSTALL/hello.sh
echo "echo \"hello world\"" >> $SNAPCRAFT_PART_INSTALL/hello.sh
chmod a+x $SNAPCRAFT_PART_INSTALL/hello.sh
Execute snapcraft
sobre isso e, em seguida, sudo snap install --dangerous <snap>
. Isso é legível pelo mundo, como você observou:
$ not-protected-snap.hello
hello world
$ cat /snap/not-protected-snap/current/hello.sh
#!/bin/sh
echo "hello world"
Observe o que acontece se alterarmos este snapcraft.yaml
um pouco:
name: protected-snap
version: '0.1'
summary: my summary
description: my description
grade: devel
confinement: strict
apps:
hello:
command: hello.sh
parts:
my-part:
plugin: nil
build: |
echo "#!/bin/sh" > $SNAPCRAFT_PART_INSTALL/hello.sh
echo "echo \"hello world\"" >> $SNAPCRAFT_PART_INSTALL/hello.sh
chmod 500 $SNAPCRAFT_PART_INSTALL/hello.sh
Execute snapcraft
sobre isso e, em seguida, sudo snap install --dangerous <snap>
. Agora você verá as diferenças esperadas:
$ protected-snap.hello
/snap/protected-snap/x1/command-hello.wrapper: 5: exec: /snap/protected-snap/x1/hello.sh: Permission denied
$ cat /snap/protected-snap/current/hello.sh cat: /snap/protected-snap/current/hello.sh: Permission denied
$ sudo protected-snap.hello
hello world
$ sudo cat /snap/protected-snap/current/hello.sh
#!/bin/sh
echo "hello world"