Como proteger o código nos snaps contra acesso não autorizado?

1

Eu observei que, assim que um snap é instalado, todo o código fica acessível no diretório / snap / snap_package / current. Existe uma maneira de impedir o acesso a este código por usuários não autorizados?

    
por Sharath Huddar 16.01.2017 / 07:22

1 resposta

1

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"
    
por Kyle 16.01.2017 / 08:03