atd funktioniert nicht mehr unter OS X 10.10.3

Ich verwende OS X Yosemite, das gerade auf 10.10.3 aktualisiert wurde, und der Befehl at und verwandte (atq, atrm usw.) funktionieren nicht mehr. Wurde atd im letzten 10.10.3 deaktiviert? Wenn ja, wie kann ich die erforderlichen Berechtigungen untersuchen und erneut aktivieren?

~$ atq
atq: cannot regain privs: Operation not permitted

Als Hintergrund habe ich einen Job, der täglich ausgeführt wird (mit launchd) und eine Liste von Jobs an atd sendet. Die Liste der Jobs bezieht sich auf Ereignisse, die an diesem Tag stattfinden, sodass sie sich täglich ändern. Also verwende ich atd, um diese Jobs basierend auf den täglichen Ereigniszeiten auszuführen.

Es hat bis zum letzten Upgrade auf 10.10.3 einwandfrei funktioniert.

/usr/libexec/atrunist aktiviert und läuft laut launchd einwandfrei.

Scheint ein Fehler zu sein (ich kann ihn auf mehreren Rechnern reproduzieren)
Ist es ein Fehler ... oder ein "Sicherheitsfeature"?
Auch hier ist Linux/UNIX 'at' darauf ausgelegt, einen Hintergrundjob zu übermitteln, der als der übermittelnde Benutzer ausgeführt wird. Die Binärdatei /usr/bin/at ist SUID-Root!

Antworten (2)

Diese Meldung weist darauf hin, dass Sie nicht über die erforderlichen Berechtigungen zum Ausführen von verfügen atq. Versuchen Sie, es mit sudo von der Befehlszeile aus auszuführen, um zu sehen, ob das hilft, dh:

> atq
atq: cannot regain privs: Operation not permitted
> sudo atq
Password:
>
Ja, es funktioniert mit sudo. Ich sende jedoch Jobs von einem Bash-Skript, sodass ich sudo nicht verwenden kann, da ich kein Passwort aus dem Skript angeben kann. Ich verstehe nicht, warum ich jetzt keine Berechtigungen habe. Vor dem Upgrade hat es funktioniert. /var/at/at.deny ist leer und ich habe /var/at/at.allow mit meinem Benutzernamen hinzugefügt. Das geht doch nicht.
Sie können das übergeordnete Skript mit sudo ausführen, wenn Sie es manuell starten, oder Sie können es als root über cron ausführen. Apple aktualisiert gelegentlich die Berechtigungen, die zum Ausführen einiger Befehlszeilentools erforderlich sind. Beispielsweise war xcodebuild ursprünglich vollständig für Benutzer verfügbar, aber dann begann das Flag --switch in einem Xcode-Upgrade, sudo zu erfordern.
Der 'at'-Befehl ist SUID für root und sollte wirklich KEINE Root-Privilegien erfordern, es sei denn, Sie senden einen at-Job, der als root und nicht als bestimmter Benutzer ausgeführt werden soll.
@mdpc Ich stimme zu und es hat bis zum 10.10.3-Update gut funktioniert. Jetzt kann ich es nicht als mein normales Benutzerkonto ausführen, obwohl ich das zu at.allow hinzugefügt habe und es nicht in at.deny ist. Ich kann nichts falsch mit meinem Setup sehen (das hat früher gut funktioniert).
Ich habe ein wenig mehr damit experimentiert, und was ich herausgefunden habe, ist, dass im Grunde alles, was einfach getan wird, ist, den Job einfach in die "Jobs"-Warteschlange zu stellen, wo er im Grunde für immer bleibt. Damit kann man das 'at' machen und ein Job wird ja nur NIE ausgeführt (OSX 10.10.3).

Ich habe heute das 10.10.4-Update von Apple installiert.

Mir ist aufgefallen, dass der at-Befehl funktioniert. Aber das ist noch nicht alles, was Sie tun müssen, um den Dienst zu aktivieren. Was Sie tun müssen, ist, die /System/Library/LaunchDaemons/com.apple.atrun.plist zu bearbeiten und nach dem deaktivierten XML-Abschnitt das "true" auf "false" zu ändern. Dann können Sie den Befehl verwenden

 launchctl load /System/Library/LaunchDaemons/com.apple.atrun.plist

um es zu starten.