Apporta modifiche di sysctl all'avvio

1

Mi piacerebbe cambiare le impostazioni predefinite di smb all'avvio per rimuovere i timeout. Ho il seguente script;

#!/bin/sh

sysctl net.smb.fs.kern_deadtimer=0
sysctl net.smb.fs.kern_hard_deadtimer=0
sysctl net.smb.fs.kern_soft_deadtimer=0

L'esecuzione di questo script con sudo imposta correttamente le opzioni del kernel pertinenti. Quindi so che questi comandi sono quelli corretti.

Ho creato il seguente LaunchDaemon in /Library/LaunchDaemons/ per provare a far eseguire questo script all'avvio;

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.jo.sysctl</string>
    <key>Disabled</key>
    <false/>
    <key>UserName</key>
    <string>admin</string>
    <key>GroupName</key>
    <string>staff</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/admin/scripts/sysctl.sh</string>
    </array>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Ho controllato il plist con plutil e controlla OK. Ho impostato le autorizzazioni per lo script della shell su 0755 e ho impostato la proprietà del file plist su root:wheel .

Esecuzione

sudo launchctl load /Library/LaunchDaemons/com.jo.sysctl.plist

... non fa nulla. I valori predefiniti sono ancora impostati in modo errato. Dove sto andando male?

Grazie

    
posta Jack Westmore 06.04.2018 - 18:40
fonte

2 risposte

3

Probabilmente è meglio abbandonare l'approccio allo script e utilizzare il file di impostazioni progettato per questo scopo: sysctl.conf

Questo vale fino a macOS 10.12 Sierra.
come @klanomath ha sottolineato nei commenti: "* .deadtimer sono tutti" sysctl: unknown oid * .deadtimer "nel mio ambiente High Sierra. IE essi non esistono!"
Quindi sembra che quella parte dell'interfaccia di sysctl sia completamente scomparsa ora.

sudo nano  /private/etc/sysctl.conf

aggiungi le seguenti variabili:

net.smb.fs.kern_deadtimer=0
net.smb.fs.kern_hard_deadtimer=0
net.smb.fs.kern_soft_deadtimer=0

Se successivamente si avvia in modalità dettagliata ( cmd + v all'avvio o sudo nvram boot-args="-v" prima di un riavvio), dovresti vedere le impostazioni personalizzate applicate.

Dovresti quindi vedere i messaggi di avvio come questi:

net.smb.fs.kern_deadtimer: 60 -> 0
net.smb.fs.kern_hard_deadtimer: 600 -> 0
net.smb.fs.kern_soft_deadtimer: 30 -> 0

Altrimenti controlla con

sysctl -a | grep smb

Questo approccio dovrebbe funzionare per la maggior parte delle impostazioni accessibili tramite sysctl e quindi essere generalizzato come implica il titolo della domanda.

    
risposta data 06.04.2018 - 19:29
fonte
0

Ho trovato un altro modo per farlo alla fine.

Il trucco era impostare un valore di timeout predefinito più lungo in /etc/nsmb.conf in questo modo:

[default]
max_resp_timeout=1000     # default is 30 which way too low!

Grazie a tutti per il vostro aiuto: -)

    
risposta data 21.04.2018 - 10:57
fonte

Leggi altre domande sui tag