Tratando de whitelist una extensión del kernel para un agente que estoy tratando de instalar. Estoy usando Mojave como la máquina cliente y Profile Manger en un servidor Mac que he configurado. Puedo inscribir la máquina cliente muy bien en Profile Manager, y puede recibir configuraciones enlatadas como restricciones de dispositivos externos, etc., pero parece que no puedo conseguir que las configuraciones personalizadas funcionen correctamente.
El proceso para que esto funcione es que he subido lo siguiente:
<?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>PayloadContent</key>
<array>
<dict>
<key>AllowedKernelExtensions</key>
<dict>
<key>HLGBMCXUS7</key>
<array>
<string>com.verdasys.dgagent</string>
</array>
</dict>
<key>AllowedTeamIdentifiers</key>
<array>
<string>HLGBMCXUS7</string>
</array>
<key>PayloadDescription</key>
<string>Configures Kernel Extension Policy settings</string>
<key>PayloadDisplayName</key>
<string>Kernel Extension Policy</string>
<key>PayloadIdentifier</key>
<string>com.github.erikberglund.ProfileCreator.F508AD6F-E398-402B-9928-1A2300C1E229.com.apple.syspolicy.kernel-extension-policy.69B09342-9C35-4FB8-9C18-6DF2A53E7C0C</string>
<key>PayloadOrganization</key>
<string></string>
<key>PayloadType</key>
<string>com.apple.syspolicy.kernel-extension-policy</string>
<key>PayloadUUID</key>
<string>69B09342-9C35-4FB8-9C18-6DF2A53E7C0C</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDescription</key>
<string>allows extensions from specific extension Team Identifiers</string>
<key>PayloadDisplayName</key>
<string>DigitalGuardian</string>
<key>PayloadIdentifier</key>
<string>com.github.erikberglund.ProfileCreator.F508AD6F-E398-402B-9928-1A2300C1E229</string>
<key>PayloadOrganization</key>
<string>ProfileCreator</string>
<key>PayloadRemovalDisallowed</key>
<true/>
<key>PayloadScope</key>
<string>System</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>F508AD6F-E398-402B-9928-1A2300C1E229</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
como un archivo .plist utilizando "com.apple.syspolicy.kernel-extension-policy" como dominio de política en Profile Manager, guardando la configuración en profile manager, y luego descargando un archivo .mobileconfig.
Muevo ese archivo .mobileconfig al cliente ya inscrito, y ejecuto el archivo y salvo las indicaciones para instalar el perfil en profile->system prefs. Esto va con éxito y veo verde "verificado" en la parte superior
PERO
no resulta en la adición del ID del equipo en la DB (al menos no hasta ahora).
Estoy usando el siguiente código para tratar de leer la DB sqlite para verificar:
#!/bin/sh
# Gather list of User Approved Kernel Extensions. 20180313 DM
folder=.
file=checkKEXTs.csv
# Create folder
/bin/mkdir -p ${folder}
/usr/sbin/chown root:admin ${folder}
/bin/chmod 755 ${folder}
/usr/bin/sqlite3 -csv /var/db/SystemPolicyConfiguration/KextPolicy "select team_id,bundle_id from kext_policy" > ${folder}/${file}
exit 0
Sí veo entradas, pero son para VMware. Nunca para los productos anteriores.
Buscando en la consola, veo lo siguiente:
rejecting write of key _DKThrottledActivityLast_DKKnowledgeStorageLogging_DKKnowledgeStorageDidInsertEventsNotification:/app/usageActivityDate in { com.apple.contextstored, root, kCFPreferencesAnyHost, no container, managed: 0 } from process 151 because setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
y
Sandbox: contextstored(151) deny(1) file-write-data /private/var/root/Library/Preferences/com.apple.contextstored.plist
Violation: deny(1) file-write-data /private/var/root/Library/Preferences/com.apple.contextstored.plist
Process: contextstored [151]
Path: /System/Library/PrivateFrameworks/CoreDuetContext.framework/Versions/A/Resources/contextstored
Load Address: 0x1077f3000
Identifier: contextstored
Version: ??? (???)
Code Type: x86_64 (Native)
Parent Process: launchd [1]
Responsible: /System/Library/PrivateFrameworks/CoreDuetContext.framework/Resources/contextstored [151]
User ID: 0
Date/Time: 2019-02-23 17:09:04.228 PST
OS Version: Mac OS X 10.14.3 (18D109)
Report Version: 8
MetaData: {"checker":"cfprefsd","target":"\/private\/var\/root\/Library\/Preferences\/com.apple.contextstored.plist","profile-in-collection":false,"signing-id":"com.apple.contextstored","profile-flags":0,"build":"Mac OS X 10.14.3 (18D109)","errno":1,"primary-filter":"path","responsible-process-path":"\/System\/Library\/PrivateFrameworks\/CoreDuetContext.framework\/Resources\/contextstored","platform-policy":false,"action":"deny","process":"contextstored","sandbox_checker":"cfprefsd","flags":5,"responsible-process-pid":151,"normalized_target":["private","var","root","Library","Preferences","com.apple.contextstored.plist"],"checker-pid":116,"hardware":"Mac","file-flags":0,"process-path":"\/System\/Library\/PrivateFrameworks\/CoreDuetContext.framework\/Versions\/A\/Resources\/contextstored","summary":"deny(1) file-write-data \/private\/var\/root\/Library\/Preferences\/com.apple.contextstored.plist","platform-binary":true,"platform_binary":"yes","vnode-type":"REGULAR-FILE","uid":0,"primary-filter-value":"\/private\/var\/root\/Library\/Preferences\/com.apple.contextstored.plist","operation":"file-write-data","pid":151,"rdev":0,"path":"\/private\/var\/root\/Library\/Preferences\/com.apple.contextstored.plist"}
Thread 0 (id: 809):
0 libsystem_kernel.dylib 0x00007fff6c47117a mach_msg_trap + 10
1 CoreFoundation 0x00007fff3f052158 __CFRunLoopServiceMachPort + 336
2 CoreFoundation 0x00007fff3f0516a6 __CFRunLoopRun + 1661
3 CoreFoundation 0x00007fff3f050dd6 CFRunLoopRunSpecific + 467
4 CoreFoundation 0x00007fff3f050bde CFRunLoopRun + 40
5 contextstored 0x00000001077f6525
6 libdyld.dylib 0x00007fff6c337ed9 start + 1
7 contextstored 0x0000000000000001
Thread 1 (id: 5898):
0 libsystem_kernel.dylib 0x00007fff6c472b6a __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fff6c52a405 start_wqthread + 13
Thread 2 (id: 5904):
0 libsystem_kernel.dylib 0x00007fff6c472b6a __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fff6c52a405 start_wqthread + 13
2 contextstored 0x0000000054485244
Thread 3 (id: 5923):
0 libsystem_kernel.dylib 0x00007fff6c47117a mach_msg_trap + 10
1 libdispatch.dylib 0x00007fff6c3016ff _dispatch_mach_msg_send + 1087
2 libdispatch.dylib 0x00007fff6c300eeb _dispatch_mach_send_drain + 440
3 libdispatch.dylib 0x00007fff6c2fda5a _dispatch_mach_send_msg + 307
4 libdispatch.dylib 0x00007fff6c2fdd15 _dispatch_mach_send_and_wait_for_reply + 382
5 libdispatch.dylib 0x00007fff6c2fe2ad dispatch_mach_send_with_result_and_wait_for_reply + 53
6 libxpc.dylib 0x00007fff6c569161 xpc_connection_send_message_with_reply_sync + 178
7 CoreFoundation 0x00007fff3f0c03ea __91-[CFPrefsPlistSource sendFullyPreparedMessage:toConnection:settingValue:forKey:retryCount:]_block_invoke + 29
8 CoreFoundation 0x00007fff3f047b4d -[_CFXPreferences withConnectionForRole:performBlock:] + 36
9 CoreFoundation 0x00007fff3f0c03be -[CFPrefsPlistSource sendFullyPreparedMessage:toConnection:settingValue:forKey:retryCount:] + 202
10 CoreFoundation 0x00007fff3f0c0025 -[CFPrefsPlistSource sendMessageSettingValue:forKey:] + 605
11 CoreFoundation 0x00007fff3f0bf60a -[CFPrefsPlistSource alreadylocked_setPrecopiedValues:forKeys:count:from:] + 579
12 CoreFoundation 0x00007fff3f08357b -[CFPrefsSource setValues:forKeys:count:copyValues:removeValuesForKeys:count:from:] + 394
13 CoreFoundation 0x00007fff3f0833eb -[CFPrefsSource setValues:forKeys:count:copyValues:from:] + 28
14 CoreFoundation 0x00007fff3f0c204a -[CFPrefsSearchListSource alreadylocked_setPrecopiedValues:forKeys:count:from:] + 1000
15 CoreFoundation 0x00007fff3f08357b -[CFPrefsSource setValues:forKeys:count:copyValues:removeValuesForKeys:count:from:] + 394
16 CoreFoundation 0x00007fff3f0833eb -[CFPrefsSource setValues:forKeys:count:copyValues:from:] + 28
17 CoreFoundation 0x00007fff3f0bf3ac -[CFPrefsSource setValue:forKey:from:] + 71
18 CoreFoundation 0x00007fff3f02fdb0 __108-[_CFXPreferences(SearchListAdditions) withSearchListForIdentifier:container:cloudConfigurationURL:perform:]_block_invoke + 268
19 CoreFoundation 0x00007fff3f02fa72 -[_CFXPreferences(SearchListAdditions) withSearchListForIdentifier:container:cloudConfigurationURL:perform:] + 337
20 CoreFoundation 0x00007fff3f0c1c39 -[_CFXPreferences setValue:forKey:appIdentifier:container:configurationURL:] + 90
21 CoreFoundation 0x00007fff3f0c1bad _CFPreferencesSetAppValueWithContainerAndConfiguration + 116
22 Foundation 0x00007fff41437ec3 -[NSUserDefaults(NSUserDefaults) setObject:forKey:] + 55
23 CoreDuet 0x00007fff52f61de4 -[_DKActivityThrottler setDate:forKey:] + 116
24 CoreDuet 0x00007fff52f60e74 -[_DKActivityThrottler _performNoMoreOftenInSecondsThan:name:activityBlock:throttleBlock:] + 340
25 CoreDuet 0x00007fff52f616e6 __94-[_DKActivityThrottler _performOrScheduleWithTimeInterval:name:queue:activityBlock:callDepth:]_block_invoke.123 + 48
26 libdispatch.dylib 0x00007fff6c2e8d53 _dispatch_call_block_and_release + 12
27 libdispatch.dylib 0x00007fff6c2e9dcf _dispatch_client_callout + 8
28 libdispatch.dylib 0x00007fff6c2f0124 _dispatch_lane_serial_drain + 618
29 libdispatch.dylib 0x00007fff6c2f0bdc _dispatch_lane_invoke + 388
30 libdispatch.dylib 0x00007fff6c2f9090 _dispatch_workloop_worker_thread + 603
31 libsystem_pthread.dylib 0x00007fff6c52a60b _pthread_wqthread + 409
32 libsystem_pthread.dylib 0x00007fff6c52a405 start_wqthread + 13
Binary Images:
0x1077f3000 - 0x1077f7ff3 contextstored (915.240.4) <3a7911f4-4f46-377e-ac35-01772ef5c88a> /System/Library/PrivateFrameworks/CoreDuetContext.framework/Versions/A/Resources/contextstored
0x7fff3f016000 - 0x7fff3f464ff7 com.apple.CoreFoundation (6.9 - 1562) <da75643f-6cf0-3fb1-b047-c142152e63b6> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x7fff413b9000 - 0x7fff41787fff com.apple.Foundation (6.9 - 1562) <83d4a12b-ea5a-3c62-8d93-95e64f0a256b> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
0x7fff52e77000 - 0x7fff5304dff3 com.apple.CoreDuet (1.0 - 1) <186c84c2-679e-3a75-86e1-0b4e7c155b4e> /System/Library/PrivateFrameworks/CoreDuet.framework/Versions/A/CoreDuet
0x7fff6c2e6000 - 0x7fff6c320ff7 libdispatch.dylib (1008.220.2) <2fdb1401-5119-3df0-91f5-f4e105f00cd7> /usr/lib/system/libdispatch.dylib
0x7fff6c321000 - 0x7fff6c350ff3 libdyld.dylib (655.1) <90c801e7-5d05-37a8-810c-b58e8c53953a> /usr/lib/system/libdyld.dylib
0x7fff6c470000 - 0x7fff6c498ff7 libsystem_kernel.dylib (4903.241.1) <ca10bc3a-5b09-32ce-b74f-bad01755aa37> /usr/lib/system/libsystem_kernel.dylib
0x7fff6c528000 - 0x7fff6c532fff libsystem_pthread.dylib (330.230.1) <80cc5992-823e-327e-bb6e-9d4568b84161> /usr/lib/system/libsystem_pthread.dylib
0x7fff6c55f000 - 0x7fff6c58ffff libxpc.dylib (1336.240.2) <ee0cda53-6ff9-3b4e-a571-335a5ff6b6f4> /usr/lib/system/libxpc.dylib
Estos mensajes de registro aparecen justo en el momento en que instalo el archivo .mobileconfig cada vez, así que sospecho que hay una correlación. He intentado reparar los permisos sin éxito. Lo único que no he hecho es probar esto en otro Mac, que puede que lo intente también. También he probado a utilizar un archivo .plist que sólo incluya configuraciones para los ID de paquete o los ID de equipo respectivamente (no combinados como en el caso anterior) sin éxito.
Lo peor es que estoy teniendo dificultades para solucionar el problema. No entiendo muy bien los mecanismos subyacentes, así que estoy abierto a recibir consejos para solucionar el problema. También puede ser que haya algo mal en mi código .plist pero no lo veo. También estoy abierto a sugerencias. Parece que mi máquina de prueba está tratando de confirmar la configuración, pero no está funcionando.
Otra cosa: también noté errores relacionados con el archivo "DetachedSignatures" en los registros y copié un archivo de otra máquina en la de prueba en la carpeta /var/db (creo) y los errores desaparecieron. Ni idea de si están relacionados.
Como puedes ver, me estoy agarrando a un clavo ardiendo. Esperando y rezando para que los dioses moderadores sean benévolos conmigo y me permitan mantener este post activo para poder recibir ayuda. Muchas gracias de antemano por leer esto y espero que con su ayuda pueda superar esto. Seguramente es algo tonto que se me escapa.