![]() |
OSX: Hat aktueller Benutzer Administratorenrechte?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Vielleicht kann mir da ja jemand weiterhelfen. Ich programmiere da an einem OX Programm herum, dass unter anderem auch Shell-Skripte generiert, diese ausführt und bis zu dessen Beendigung wartet. Ich würde gerne in Abhängigkeit, ob der angemeldete Benutzer über Administratorenrechte verfügt, ein Shell-Skript ausführen. Wenn der Benutzer keine Administratorenrechte besitzt, sollen beim Start des Skripts irgendwie Administratorenrechte abgefragt werden. Also, zusammengefasst: 1. Wie stelle ich unter OSX fest, ob der angemeldete Benutzer Administratorenrechte besitzt? 2. Wie kann ich OSX veranlassen, mein Shell-Skript mit Administratorenrechten auszuführen, wenn der angemeldete Benutzer nicht über Administratorenrechte verfügt (so eine Art "sudo" mit Eingabemaske, siehe Bild)? |
AW: OSX: Hat aktueller Benutzer Administratorenrechte?
OSX sollte eigentlich auch ein ordentliches Berechtigungssystem haben?
Man prüft nicht auf Admin, sondern man prüft, ob das nötige Recht vorhanden ist. (ein Admin muß nicht alle Rechte besitzen und ein Benutzer, kann dafür aber denoch das jeweilige Recht bekommen) Im einfachsten Fall einfach mit einem "einfachen" Befehl vorher testen und wenn's nicht geht, dann fehlt das Recht. Zitat:
|
AW: OSX: Hat aktueller Benutzer Administratorenrechte?
Wie Himitsu schon sagt, sind die macOS Rechte etwas granularer als nur User oder Admin. Wenn es in Deinen Scripten um Dateien geht, sollte geklärt werden, welchem User die Dateien gehören, und wenn dieser zufällig angemeldet ist, muss man keine höheren Rechte abfragen. Andererseits kannst Du auch immer davon ausgehen, das ein Mitglied der Admin-Gruppe (80) im Dateisystem so ziemlich alles darf (bei Systemdatein hört der Spaß auf, aber da willst Du ja ohnehin nichts Scripten). Du kannst per Shellscript prüfen, ob ein User Mitglied der Admingruppe ist:
Code:
Was die Ausführung von Scripten als Admin betrifft, habe ich auf die schnelle nur Beispiele für
isadmin() { id -G $1 | grep -q -w 80 ; }
![]()
Code:
Sherlock
set userSize to do shell script "du -sh /var/log | awk '{print $1}'" with administrator privileges
|
AW: OSX: Hat aktueller Benutzer Administratorenrechte?
Erst mal vielen Dank für die Hilfe.
Auf das Auführen von Skripten mit Adminrechten mittels Appleskript bin mittlerweile auch gestossen. Ich mach das im Moment mit einem zu einer App kompiliertem Appleskript, dass ich ausführe:
Code:
In diesem Skript wird dann mit "do shell script etc.. with administrator privileges" das eigentliche Shellscript gestartet. Das funzt.LTask:=TNSTask.Wrap(TNSTask.Alloc.init); LTask.setLaunchPath(StrToNSStr( TmpDir + 'myappleskript.app/Contents/MacOS/applet' )); LTask.setArguments(LArgs); LTask.launch; LTask.waitUntilExit; Ich könnte mir den Umweg über das Appleskript sparen, wenn ich vorher wüsste, ob der User zur Gruppe Admin (80) gehört. Um herauszufinden, ob der aktuelle User der Groupe Admin angehört , müsste ich das vorgeschlagene Shellscript:
Code:
ausführen und dessen Resultat in meiner Delphi-Anwendung zurückerhalten. Geht das?
isadmin() { id -G $1 | grep -q -w 80 ; }
|
AW: OSX: Hat aktueller Benutzer Administratorenrechte?
Habe eine Bibliothek gefunden, mit der man Prozesse starten kann auf OSX:
![]() FUnktioniert einwandfrei und gibt auch den Output eines Shell-Skripts zurück. Danke nochmals für die Unterstützung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz