Como colocar diretórios na lista de permissões para unidades no systemd

5

Existem muitas opções disponíveis para Unidades (como serviços) em systemd . Três deles são chamados ReadWriteDirectories , ReadOnlyDirectories e InaccessibleDirectories . Estou usando o Debian 8.5 em uma máquina virtual. Em algumas versões (mais recentes?) Do systemd elas são chamadas ReadWritePaths , ReadOnlyPaths e InaccessiblePaths . Posso usar essas opções para os diretórios da lista de permissões, que devem estar acessíveis?

Eu tenho um aplicativo que é conhecido por acessar apenas alguns diretórios. Eu gostaria de restringir o acesso a esses diretórios. Mas isso não parece ter nenhum efeito se eu usar ReadWritePaths para especificar esses diretórios. A página de manual diz

Directories listed in ReadWriteDirectories= are accessible from within the namespace with the same access rights as from outside.

Mas os diretórios não especificados nessa opção parecem estar acessíveis da mesma maneira. Como negar acesso a tudo que não está especificado? Ou é para o meu sistema que não funciona? Alguém poderia imaginar que seria possível usar InaccessibleDirectories=/ para colocar na lista negra todo o resto, exceto a manpage de uma versão mais nova, em que a opção é chamada InaccessiblePaths , diz

Entries listed in InaccessiblePaths= will be made inaccessible for processes inside the namespace, and may not countain any other mountpoints, including those specified by ReadWritePaths= or ReadOnlyPaths=.

Bem, existe a possibilidade de usar ReadWriteDirectories e ReadOnlyDirectories para configurar uma lista branca de diretórios? Se não for possível, por que ReadWriteDirectories existe, parece não fazer nada?

    
por JojOatXGME 25.08.2016 / 02:26

2 respostas

5

ReadWritePaths e seu tipo só são realmente úteis quando usados junto com opções que lista negra determinados caminhos. Se você sabe que seu aplicativo só deve poder acessar determinados caminhos, você pode fazer uma combinação dos seguintes itens:

  • Defina ProtectSystem=strict e coloque na lista de permissões determinados diretórios para escrever com ReadWritePaths .
  • Defina ReadOnlyPaths e coloque na lista de permissões determinados diretórios com ReadWritePaths . Se fazendo isso com / , ele faz um superconjunto do que ProtectSystem faz (também restringe / dev, / proc e / sys, o que você pode não querer). Você também pode usar PrivateDevices , ProtectKernelTunables e ProtectControlGroups para proteger esses diretórios.
por 17.02.2017 / 17:35
0

Visto que você estava perguntando especificamente sobre o acesso de leitura à lista de permissões :

Você pode conseguir isso com InaccessiblePaths , assim:

[Service]
...
InaccessiblePaths=/
ReadOnlyPaths=/etc/myapp.conf

Veja systemd.exec (5)

    
por 18.08.2017 / 22:06