• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Das Monatsmotto Juli lautet -- Kitsch as Kitsch can -- Jeder von Euch kann dafür ganz individuell bestimmen, was für ihn Kitsch ist und ein Foto davon einsenden. Macht mit, traut Euch! --> Klick

[10.9 Mavericks] korrekte Sandbox Konfigurationsfiles

FritzS

Purpurroter Cousinot
Registriert
06.04.09
Beiträge
2.819
Ich habe auf meinen MBP BIND named kompiliert und auch (unter Hilfe der alten ML Dateien named.sd und bsd.sb) zum Laufen gebracht.

Was bedeuten die Zeichen:
\\
"^.......$" (Beginn und Ende??

Was steht für alle Dateien in diesem Verzeichnis
/named/ oder
/named/*

In /named/ werden jeweils mehrere Logs angelegt deren Name mit .log .log.1 .log.2 .log.3 enden - genau diese soll named schreiben und auch löschen dürfen.

Meine modifizierte named.sd
Welcher Syntax ist hier redundant und welcher falsch.

Code:
;;
;; named - sandbox profile
;; Copyright (c) 2006-2007 Apple Inc.  All Rights reserved.
;;
;; WARNING: The sandbox rules in this file currently constitute
;; Apple System Private Interface and are subject to change at any time and
;; without notice. The contents of this file are also auto-generated and not
;; user editable; it may be overwritten at any time.
;;
(version 1)
(debug deny)

(import "bsd.sb")

(deny default)
(allow process*)
(deny signal)
(allow sysctl-read)
(allow network*)

;; Allow named-specific files
(allow file-write* file-read-data file-read-metadata
   (regex "^(/private)?/var/run/named\\.pid$")
   (regex "^/var/run/named\\.pid$")
   (regex "^/var/run/named/session\\.key$")
   (regex "^/Library/Logs/named\\default.log$")
   (regex "^/Library/Logs/named\\.log$")
   (regex "^/Library/Logs/named\\.log.0$")
   (regex "^/Library/Logs/named\\.log.1$")
   (regex "^/Library/Logs/named\\.log.2$")
   (regex "^/Library/Logs/named\\.log.3$")
   (regex "^/Library/Logs/named/")
   (regex "^/Library/Logs/named/*")
   (regex "^/var/run/named/"))


(allow file-read-data file-read-metadata
  (regex "^(/private)?/etc/rndc\\.key$")
  (regex "^(/private)?/etc/resolv\\.conf$")
  (regex "^(/private)?/etc/named\\.conf$")
  (regex  "^(/private)?/var/named/"))

Das ist die original ML named.sd

Code:
(version 1)
(debug deny)

(import "bsd.sb")

(deny default)
(allow process*)
(deny signal)
(allow sysctl-read)
(allow network*)

;; Allow named-specific files
(allow file-write* file-read-data file-read-metadata
  (regex "^(/private)?/var/run/named\\.pid$"
         "^/Library/Logs/named\\.log$"))

(allow file-read-data file-read-metadata
  (regex "^(/private)?/etc/rndc\\.key$"
         "^(/private)?/etc/resolv\\.conf$"
         "^(/private)?/etc/named\\.conf$"
         "^(/private)?/var/named/"))
 

martinv2

Doppelter Prinzenapfel
Registriert
14.04.12
Beiträge
437
Ich kenne mich mit .sb-Dateien nicht aus, aber die Ausdrücke sind (wie auch davorsteht) RegEx'e oder auch Regular Expressions, d.h. Textmuster. Dabei steht ^ für den Anfang, $ für das Ende des zu matchenden Strings. \ ist ein Escapezeichen, das bewirkt, dass der folgende Punkt literal interpretiert wird. Dass es verdopplet ist, liegt wohl an der internen Interpretation der RegEx'e.

Da es mehrere Systeme für RegEx'e gibt, kann ich nur mutmassen. Ich würde vermuten, dass "^/Library/Logs/named\\.log.*$" für alle Dateien steht, die auf .log und evtl. noch etwas enden.
 

FritzS

Purpurroter Cousinot
Registriert
06.04.09
Beiträge
2.819
Literal interpretiert - damit meinst du dass die Zeichen zwischen dem Verzeichnisnamen und dem .log nicht interpretiert werden.
Warum \\ - normalerweise würde dort ja auch ein / stehen - verzeichnisname/dateiname

"^/Library/Logs/named\\.log.*$" für alle Dateien steht, die auf .log und evtl. noch etwas enden.

gerade da gab es das Problem, denn wenn die .log Datei voll wird kommt wird diese zu .log.0 und die andern bereits vorhandenen .log.* werden hochgezählt, so wie bei den anderen Mac Logs üblich.

Würde
Code:
 (regex "^/Library/Logs/named\\.log.*$")
alle Zeichen hinter dem .log zulassen?

Ich könnte mal alles was auf Library/Logs/named zeigt auf
Code:
(regex "^/Library/Logs/named\\.log$")
(regex "^/Library/Logs/named\\.log.*$")
reduzieren und sehen was passiert.
 

martinv2

Doppelter Prinzenapfel
Registriert
14.04.12
Beiträge
437
Literal interpretiert - damit meinst du dass die Zeichen zwischen dem Verzeichnisnamen und dem .log nicht interpretiert werden.
Der \ nimmt dem folgenden Zeichen - hier dem Punkt - die RegEx-Sonderbedeutung.
Warum \\ - normalerweise würde dort ja auch ein / stehen - verzeichnisname/dateiname
Wirf nicht den Inhalt (Pfad) mit der RegEx in einen Topf.
Würde
Code:
 (regex "^/Library/Logs/named\\.log.*$")
alle Zeichen hinter dem .log zulassen?
Genau dafür ist ".*" gedacht - Punkt steht für ein beliebiges Zeichen, der Stern quanifiziert das vorangehende Zeichen und steht für "beliebig viele".

Ich könnte mal alles was auf Library/Logs/named zeigt auf
Code:
(regex "^/Library/Logs/named\\.log$")
(regex "^/Library/Logs/named\\.log.*$")
reduzieren und sehen was passiert.
Die RegEx in der zweite Zeile beinhaltet das Muster der der ersten Zeile. Diese kannst Du also auch weglassen.