Jak na stałe zmodyfikować Launch Daemon pod OS X El Capitan?

6

I zmodyfikowany domyślny org.postfix.master.plist o Postfix , by działał jako demon , więc może wysłać mi e-mail, gdy użytkownik lokalny odbiera pocztę.

Domyślna:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.postfix.master</string>
    <key>Program</key>
    <string>/usr/libexec/postfix/master</string>
    <key>ProgramArguments</key>
    <array>
        <string>master</string>
        <string>-e</string>
        <string>60</string>
    </array>
    <key>QueueDirectories</key>
    <array>
        <string>/var/spool/postfix/maildrop</string>
    </array>
    <key>AbandonProcessGroup</key>
    <true/>
</dict>
</plist>

Zmodyfikowano:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>org.postfix.master</string>
        <key>Program</key>
        <string>/usr/libexec/postfix/master</string>
        <key>ProgramArguments</key>
        <array>
                <string>master</string>
        </array>
        <key>QueueDirectories</key>
        <array>
                <string>/var/spool/postfix/maildrop</string>
        </array>
        <key>AbandonProcessGroup</key>
        <true/>
</dict>
</plist>

Jednak ten plik jest pod, /System/Library/LaunchDaemons/więc musiałem tymczasowo wyłączyć SIP, aby zmodyfikować plik. Przeczytałem, że po następnej aktualizacji systemu operacyjnego wszystkie moje zmiany znikną z powodu SIP. Co mogę zrobić, aby to zmienić? Czy mogę umieścić mojego Launch Daemon /Library/LaunchDaemonsjako drugi?

benjaminvonderweiden
źródło

Odpowiedzi:

6

Nie miałem jeszcze do czynienia z tym „na poważnie”, ale myślę, że najlepszym rozwiązaniem jest:

  1. Skopiuj plik .plist do / Library / LaunchDaemons.
  2. Zmień nazwę (np. Dodając „local.” Na początku nazwy pliku) i edytuj jego Labelwartość, aby pasowała. Jeśli tego nie zmienisz, launchd prawdopodobnie pomyli się między tym a oryginałem.
  3. Dokonaj wszelkich innych zmian, których potrzebujesz
  4. Upewnij się, że własność jest ustawiona na root: wheel, a uprawnienia na 644.
  5. Dezaktywuj oryginalny element za pomocą np. sudo launchctl unload -w /System/Library/LaunchDaemons/org.postfix.master.plist( -wPowoduje, że staje się on trwały).
  6. Załaduj swój niestandardowy zamiennik np. sudo launchctl load /Library/LaunchDaemons/local.org.postfix.master.plist(Lub po prostu uruchom ponownie).

BTW, jeśli wyłączysz SIP i zmodyfikujesz istniejący plik, niekoniecznie zostanie on przywrócony przez aktualizację systemu operacyjnego. Ale może i będziesz musiał sprawdzić po każdej aktualizacji (w tym aktualizacje zabezpieczeń, itp.), Co jest bólem.

Gordon Davisson
źródło
Twoje rozwiązanie działa. Zmiana Labelwartości jest rzeczywiście ważna. W przeciwnym razie demon nie uruchomi się.
benjaminvonderweiden