setcap cap_sys_time funktioniert nicht für Wein

330
skwear

Ich wurde beauftragt, unsere Windows-Only-Software auf einer Linux-Distribution auszuführen. Also habe ich beschlossen, es auf Ubuntu 18.04 auf Wein laufen zu lassen. Das Ubuntu ist von einem Net-Install, also habe ich eigentlich nur X11, Openbox, und ich konfiguriere alles über Xterm.

Unter Windows erhält unsere Software die Uhrzeit von unserem Gerät (läuft auf IRIG-B von GPS-Satellit) und ändert die Systemzeit, sodass die Computerzeit und die Gerätezeit synchron sind. Die Software überprüft dies alle 5 Minuten.

Ich habe die Software über das Wochenende mit Wein laufen gelassen, wine "path"ohne den Vorgang von xterm zu trennen, und als ich zurückkam, bemerkte ich, dass ich alle fünf Minuten in xterm einen Haufen dieser Nachrichten erhalten hatte:

err:ntdll:NtSetSystemTime Cannot set time to Mon Jun 18 09:49:19 2018, time adjustment -3153: Operation not permitted 

Also überprüfe ich die Weinquelle NtSetSystemTimeund stelle sicher, dass es eine Verpackung für ist settimeofday. Also ich schaue von der Manpage aus settimeofdayund es sagt, dass es nötig ist CAP_SYS_TIME. Also ich setcapmit cap_sys_time+epfor wine-stable, wineserverund der ausführbaren Software, aber es funktioniert nicht.

Ich habe eine Kombination aus +ep, +eiund versucht +eip, aber das funktioniert auch nicht. Ich habe die NTP-Funktion deaktiviert timedatectl set-ntp 0und habe das Ein- set-local-rtcund Ausschalten versucht .

Ich habe auch versucht, die Systemzeit auf etwa 10 Minuten zu ändern, um zu sehen, ob sich dies ändern würde, aber das hat auch nichts aufgedeckt.

Ich habe keine Dinge mehr, um es zu versuchen. Was vermisse ich? Ich muss nur die Software dazu bringen können, die Systemzeit zu ändern.

0

1 Antwort auf die Frage

0
skwear

Ich habe es herausgefunden. Nachdem ich nach mehr Weinsachen gesucht hatte, wurde mir klar, dass es tatsächlich eine Menge mehr Weinsachen gibt /usr/lib/wine.

Obwohl which wineRenditen /usr/bin/wine, die symbolisch verlinkt /usr/bin/wine-stable, die, die Sie wirklich wollen, setcapist /usr/lib/wine/wine.

Alles in allem funktionierte das für mich:

sudo setcap cap_sys_time+ep /usr/lib/wine/wine 

Ich habe sie alle getestet und herausgefunden, welche nicht unbedingt eine Kappe benötigen, und ich bin zu dem Schluss gekommen, dass nur die eine wirklich eine Kappe braucht.