Я заметил, что, после того как снимок является установкой, весь код доступен в/snap/snap_package/current каталоге. Существует ли способ предотвратить доступ к этому коду неавторизованных пользователей?
В то время как часть процесса превращения его в снимок означает, что все те файлы принадлежат как корень, можно все еще использовать биты режима файла. Возьмите это snapcraft.yaml
, например:
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
Выполнение snapcraft
на этом, и затем sudo snap install --dangerous <snap>
. Это - читаемый мир, как Вы отметили:
$ not-protected-snap.hello
hello world
$ cat /snap/not-protected-snap/current/hello.sh
#!/bin/sh
echo "hello world"
Примечание, что происходит, если мы изменяем это snapcraft.yaml
немного:
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
Выполнение snapcraft
на этом, и затем sudo snap install --dangerous <snap>
. Теперь Вы будете видеть различия, которые Вы ожидали бы:
$ 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"