[10.11 El Capitan] Zugriff auf Netzwerkaccounts mit dscl

medienbauer

Erdapfel
Registriert
07.05.22
Beiträge
4
Hallo allerseits,

wenn ich auf meinem MacOSX Server (also konfiguriert mit der Server App) im Terminal
Code:
dscl . -list /Users
aufrufe, dann wird mir nur eine Liste der lokalen user angezeigt. Sicher muss ich einen Pfad auf den eingerichteten Open Directory verwenden. Dort müssten sich die user befinden, die über die Server-App als Netzwerkaccounts konfiguriert wurden. Nur wie lautet dieser Pfad und kann ich sie über das dscl-Command auch editieren?

Die "man dscl" habe ich selbstverständlich bereits aufgerufen und versucht mir meine Frage selbst zu beantworten. Leider ohne Erfolg :(

Noch ein Hinweis: Ich bin mir nicht sicher, ob "Netzwerkaccounts" der richtige Begriff ist. Es handelt sich um user, die im Open Directory hängen, daher sich an allen Rechnern im Netzwerk anmelden können, wobei der Benutzerordner auf dem jeweiligen Client angelegt wird.
 

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.681
Netzwerkaccount erscheint mir schon der richtige Begriff. Aber warum konfigurierst du die Accounts nicht mit der Server-App?

Bei dscl kann man wohl auch den LDAP als Path angeben:

In the case of specifying a host as a data source, the top level of paths correspond to Open Directory plug-ins and Search Paths. One can specify the plug-in to traverse to a node name, after which the paths are equivalent to the former usage. The following might be the equivalent paths as the above paths:

/LDAPv3/10.0.1.42/Groups/admin

Hier gefunden: https://ss64.com/osx/dscl.html

Selbst probiert habe ich das aber noch nie.

Hilft dir das weiter?
 

medienbauer

Erdapfel
Registriert
07.05.22
Beiträge
4
Hilft dir das weiter?
Nein, leider nicht. Die Pfade hatte ich auch schon in der man-Page gefunden und nicht kapiert, wie ich sie auf meine Konfiguration anwenden soll. Ich weiß halt nicht, wo die Server-App die Datenbank anlegt :( Hintergrund dieser Anfrage ist, zum einen zu verstehen, wie der Anmeldeprozess im Netzwerk im Hintergrund funktioniert und zum anderen Netzwerkaccounts über ein Launch Daemon zu steuern, der eine zeitgesteuerte Anmeldemöglichkeit schafft. Über die Server App muss ich immer von Hand "darf sich anmelden" setzen, dass nervt mich gerade.
 

Marcel Bresink

Hadelner Sommerprinz
Registriert
28.05.04
Beiträge
8.540
Ich weiß halt nicht, wo die Server-App die Datenbank anlegt

Wozu muss man das wissen? Das ist eine Netzwerk-Datenbank, also wird immer nur per LDAP-Protokoll oder per Open Directory Proxy auf die Datenbank zugegriffen. Die Server-App "weiß" auch nicht, wo die Daten liegen.

Möglicherweise denkst Du, das wären UNIX-Dateipfade. Die sind aber niemals gemeint und dürfen auch nicht verwendet werden. Das sind Open Directory-Zugriffspfade. In einer Standardinstallation von macOS Server ist die lokale Open Directory-Datenbank zugreifbar unter

/Local/Default

und ein oder mehrere Netzwerkdatenbanken nach dem Muster

/LDAPv3/a.b.c.d

wobei "a.b.c.d" durch die primäre IPv4-Adresse des jeweiligen Servers ersetzt werden muss. Hierbei ist 127.0.0.1 nicht erlaubt. Du findest die Liste aller Datenbankknoten, die den Open Directory-Suchpfad bilden, unter "Verzeichnisdienste > Suchpfad > Authentifizierung". Der Suchpfad aller Pfade, also der Metasuchpfad darf unter dem Namen

/Search

angegeben werden.

Hintergrund dieser Anfrage ist, zum einen zu verstehen, wie der Anmeldeprozess im Netzwerk im Hintergrund funktioniert

Das ist ganz einfach. Der Anmeldeprozess schaltet seinen Open Directory-Suchpfad einfach von /Local/Default auf /Search um. Das ist alles. Du kannst also die Gesamtbenutzerliste mit

dscl /Search -list /Users

abrufen.
 
Zuletzt bearbeitet:

medienbauer

Erdapfel
Registriert
07.05.22
Beiträge
4
Vielen Dank, dass hat mir im Verständnis sehr geholfen. Ich konnte damit auch auf die Netzwerkaccounts zugreifen. Nun ist mir aber aufgefallen, dass es im Datensatz des Benutzers überhaupt keinen Schlüssel gibt, wo gespeichert wird, ob der Benutzer aktiv oder inaktiv geschaltet ist, also ob er sich anmelden darf oder nicht.

Wo setzt der Server diese Eigenschaft? Ich hatte vermutet, dass es mit
Code:
sudo dscl . create /Users/hiddenuser IsHidden 1
funktioniert, aber ich kann dieses Attribute für den Netzwerkaccount nicht setzen, da es nur lesbar ist. Ich vermute, dass geht nur mit den lokalen Accounts.
 

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.681
Ich glaube das wird übers Passwort gesteuert:

pwpolicy -u username disableuser
 

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.681
Ich meine auch, dass hidden nicht dasselbe ist wie disabled (was du ja eigentlich willst laut deiner Beschreibung).
 

medienbauer

Erdapfel
Registriert
07.05.22
Beiträge
4
Vielen Dank für eure Antworten. Leider habe ich es noch nicht geknackt. "pwpolicy" war ein guter Hinweis, damit müsste es funktionieren, wenn ich mir die man-Page so ansehe. Leider verwehrt er mir dann doch die Ausführung mit "Error: root privileges or authenticator required" und das, obwohl ich mich im Terminal als root angemeldet habe.

"dscl -u ..." habe ich auch versucht. Hierbei springt das Script in einen interactive-mode. Das nützt mir ja nichts, wenn ich eine ausführbare Datei anlegen möchte, die die Einstellungen automatisiert setzt.
 

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.681
Vielen Dank für eure Antworten. Leider habe ich es noch nicht geknackt. "pwpolicy" war ein guter Hinweis, damit müsste es funktionieren, wenn ich mir die man-Page so ansehe. Leider verwehrt er mir dann doch die Ausführung mit "Error: root privileges or authenticator required" und das, obwohl ich mich im Terminal als root angemeldet habe.
Es ist nicht der Shell-User ausschlaggebend, sondern du musst dich mit über den -a (authenticator) Parameter mit einem User anmelden, der Directory Administrator des LDAP-Verzeichnisses ist. Nur der darf schreibend auf andere User zugreifen.

Bsp.:

pwpolicy -a <diradminuser> -p <diradminpassword> -u <username> -disableuser
 
Zuletzt bearbeitet: