Το πρόβλημα της διαχείρισης αδειών στο macOS
Στο macOS Sequoia και μεταγενέστερες εκδόσεις, το λειτουργικό σύστημα εμφανίζει συχνά ειδοποιήσεις για πρόσβαση εφαρμογών σε τοπικά δίκτυα. Το πρόβλημα εντείνεται από εφαρμογές που χρησιμοποιούν δυναμικές διαδρομές (όπως οι browsers βασισμένοι σε Chromium), οι οποίες κατά την αναβάθμιση ή την εκκίνηση δημιουργούν νέα path, καθιστώντας τις προηγούμενες επιλογές του χρήστη άκυρες. Αυτό οδηγεί σε έναν ατέρμονο κύκλο ειδοποιήσεων που δεν μπορούν να διαχειριστούν οι τυπικές ρυθμίσεις του συστήματος.
Αρχιτεκτονική προσέγγιση και υλοποίηση
Το dontallow λειτουργεί ως ένας background agent (launchd) που παρακολουθεί το σύστημα για συγκεκριμένα παράθυρα διαλόγου. Η υλοποίηση βασίζεται σε:
- Accessibility Observer: Καταγράφει τη δημιουργία παραθύρων από τη διεργασία
UserNotificationCenter. - Heuristic Matching: Αναλύει το κείμενο του διαλόγου για να επιβεβαιώσει ότι πρόκειται για αίτημα τοπικού δικτύου.
- Synthetic Input: Εκτελεί την ενέργεια απόρριψης μέσω του Accessibility API, με fallback σε συνθετικά κλικ (synthetic clicks) αν η απευθείας κλήση αποτύχει.
Διαχείριση και επεκτασιμότητα
Παρά την απλότητά του, το εργαλείο προσφέρει μηχανισμούς για περιπτώσεις όπου η πρόσβαση είναι επιθυμητή. Μέσω ενός allowlist και της εντολής pause, ο χρήστης μπορεί να παρακάμψει την αυτοματοποιημένη απόρριψη για συγκεκριμένες εφαρμογές. Επιπλέον, η δυνατότητα ανάπτυξης σε στόλο υπολογιστών (fleet) μέσω MDM και PPPC προφίλ καθιστά το εργαλείο βιώσιμο για διαχειριστές συστημάτων που επιθυμούν να επιβάλουν πολιτικές απορρήτου χωρίς χειροκίνητη παρέμβαση.
Τεχνικοί περιορισμοί
Το εργαλείο είναι επί του παρόντος περιορισμένο σε αγγλόφωνες εκδόσεις του macOS, καθώς η ανίχνευση βασίζεται σε συγκεκριμένα strings του UI. Η αρχιτεκτονική του, ωστόσο, είναι εξαιρετικά αποδοτική, καθώς δεν απαιτεί Xcode για τη μεταγλώττιση (build) και διατηρεί μηδενική κατανάλωση CPU όταν δεν εκτελείται η διαδικασία απόρριψης.