Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Benutzerpasswort über SSH zurücksetzen

Benutzerpasswort über SSH zurücksetzen

onlyapple1328.09.1515:09
Hallo,
ich hätte eine Frage, also:
Ich habe einen Mac OS X Server Yosemite installiert in einer Schule mit Netzwerkbenutzer und den Profilmanager mit den Gruppen Schülern und Lehrer.
Jetzt müsste ich ein Programm schreiben mit den die Lehrer das Benutzerpasswort für einen Schüler zurücksetzen kann sofern dies vergessen wird. Die einzige Möglichkeit dies Zurückzusetzen ist über eine SSH Verbindung zum Server sofern ich herausgefunden habe die Befehlsreihenfolge ist die folgende:


Ssh diradmin@ipserver
dscl
> cd /LDAPv3/127.0.0.1/Users/
> auth diradmin 
> passwd username


Dies funktioniert einwandfrei nur darf der Lehrer nicht das Passwort des diradmins auf den Server wissen. Also müsste ich dies alles in einen Apple Script oder ein Automator Programm Übertragen wo man dann Benutzername eingibt und anschließend noch das neue Passwort;

Ich habe Bereits Angefangen mit:

set benutzername to display dialog "Benutzrname eingaben" default answer ""
set neuespasswort to display dialog "Passwort eingeben" default answer ""

tell application "Terminal"
activate

do script "ssh diradmin@10.0.50.6" & return


Ich komme jetzt aber nicht dahinter wie ich die Eingeben Werte zum Terminal weiterleiten kann, und bitte um euere Hilfe.

Falls es eine Einfache Möglichkeit dies zu machen nehme ich den Vorschlag sehr gerne an.


Danke jetzt schön für eure Hilfe,
onlyapple13
0

Kommentare

MikeMuc28.09.1516:11
1. Das Tell Terminal kannst du dir sparen. Außer du "stellst" einem Fenster was du dort eingeben willst. Aber so macht man das nicht...

2. do script kommt der Sache schon näher. Da gibt es noch die Option "with administrator previleges" Dann fragt das Script selber zumindest nach dem Passwort. Such mal in die Richtung.

Früher konnte man User und Passwort auch ins Script hardcodieren aber das ist eigentlich ein NoGo und geht wohl auch nicht mehr. Als Alternative sollte man da den Schlüsselbund nutzen.

3. Leg erstmal einen extra Benutzer mit entsprechenden Rechten an, dann braucht du nicht gleich das PW vom diradmin rauszugeben sondern nutzt nur diesen neun User dessen Passwort man bei Bedarf ändern kann. Meinetwegen wöchentlich ändern und jeweils unter die Tastatur des PCs im Lehrerzimmer kleben von aus diese Änderung durchgeführt werden muß
0
onlyapple1328.09.1516:49
MikeMuc
1. Das Tell Terminal kannst du dir sparen. Außer du "stellst" einem Fenster was du dort eingeben willst. Aber so macht man das nicht...

2. do script kommt der Sache schon näher. Da gibt es noch die Option "with administrator previleges" Dann fragt das Script selber zumindest nach dem Passwort. Such mal in die Richtung.

Früher konnte man User und Passwort auch ins Script hardcodieren aber das ist eigentlich ein NoGo und geht wohl auch nicht mehr. Als Alternative sollte man da den Schlüsselbund nutzen.

3. Leg erstmal einen extra Benutzer mit entsprechenden Rechten an, dann braucht du nicht gleich das PW vom diradmin rauszugeben sondern nutzt nur diesen neun User dessen Passwort man bei Bedarf ändern kann. Meinetwegen wöchentlich ändern und jeweils unter die Tastatur des PCs im Lehrerzimmer kleben von aus diese Änderung durchgeführt werden muß

Danke für deine Hilfe. Das kling jetzt leider alles einwenig Kompliziert, habe mir das mit "with administartor previlegues" angesehen dazu müsste ich dann aber ein Shell Script machen und die Variablen Benutzername und Passwort übergeben.

Dir ist da keine Einfachere Möglichkeit bekannt oder ein schon gemachtes Programm? Kann mir nicht vorstellen das es die einzigste Schule mit Mac OS X Server ist. Das Problem mit Passwort vergessen dürfe ja bei Schüler auch nicht wenig verbreitet sein
0
MikeMuc28.09.1520:01
Nein, aber das ist alles gar nicht kompliziert. Ob du die Befehle in ein Terminalfenster eingibst, in einer Textdatei speicherst oder per Do Script an den Rechner verfütterst. Es sind immer die selben., es ist wie mit den Wegen nach Rom. Wichtig ist erstmal das du rausbekommst was du eingeben mußt um dein eigentliches Ziel zu erreichen. Dann geht es nur noch um die anwenderfreundliche Verpackung
0
hidalgo29.09.1503:05
Also ich kann dir bei der Syntax von dscl nicht helfen, da ich schon lange keine OSX-Server mehr im Einsatz habe, aber dafür, wie du das Drumherum anlegen könntest, hätte ich eine Idee.

1. Du packst das korrekte dscl-Kommando (inkl. diradmin-Kennwort) in einen Bash-Skript, der den zu behandelnden Benutzernamen als Argument bekommen kann.
2. Das Bash-Skript muss ausführbar sein
3. Du erstellst eine Automator-App (siehe Screenshot), die vom Client aus über ssh den Skript ausführen kann.
„«Probleme kann man nie mit derselben Denkweise lösen, durch die sie entstanden sind.» Albert Einstein“
0
MikeMuc29.09.1504:00
[quote=hidalgo]
1. Du packst das korrekte dscl-Kommando (inkl. diradmin-Kennwort) in einen Bash-Skript
ACHTUNG: Sicherheitslücke. Du packst dich auch nicht deinen privaten PGP-Key in Programme die an den Anwender gehen. Das machen nur große Firmen so, aber doch kein anständiger Programmierer.
0
hidalgo29.09.1508:54
@ MikeMuc

Wie kann ich denn den Quell-Code aus der Automator-App extrahieren um ans Kennwort zu gelangen? Ist mir auf die Schnelle nicht gelungen. Und wenn ich die Sicherheit gegenüber Bequemlichkeit abwäge und die vermuteten Kenntnisse der Anwender und den zu erwarteten Schaden mit einbeziehe, sehe ich da keine allzu grossen Probleme.
Obwohl ich dir natürlich Recht geben muss: Nach Lehrbuch ist das nicht.
„«Probleme kann man nie mit derselben Denkweise lösen, durch die sie entstanden sind.» Albert Einstein“
0
onlyapple1329.09.1510:37
Habe mich für die Variante mit den Terminal entschieden.

Jetzt bin ich gerade dabei das Shell Script zu erstellen bislang habe ich folgendes geschreiben:
#!/bin/bash
ssh diradmin@10.0.50.6 -P passwort
dscl -u diradmin -P passwort /LDAPv3/127.0.0.1 -passwd /Users/$username $newpass

Es ist noch in einer Textdatei ich müsste die Datei jetzt eigentlich nur mit .sh unbennenen und anschließend mit den Terminal ausführbar machen. Leider beomme ich da immer eine Fehlermeldung... Kann es sein das ich oben etwas Falsch gemacht habe? Die Werte werden dann ja Automatisch von Automator übertragen oder?

Sorry das ich euch so mit Fragen bombardiere aber ihr seit die einzigen die mir da wirklich weiterhelfen könnt
Grüße,
onlyapple13
0
gfhfkgfhfk29.09.1510:47
onlyapple13
Dies funktioniert einwandfrei nur darf der Lehrer nicht das Passwort des diradmins auf den Server wissen.
Weshalb editierst Du die Regeln für den LDAP Server nicht, so daß der Lehrer nur die Passwörter ändern darf? Dazu gibt es LDAP Clients mit denen man so eine Aktion auch per GUI durchführen kann.
0
MikeMuc29.09.1511:05
gfhfkgfhfk
das wurde ignoriert bzw war mit meinem neuen Benutzer gemeint:-)
Aber man kann auch gleich der Lehrergruppe das Recht erteilen anderer Leute Passwort zurücksetzten zu dürfen. Dann muß man nur schauen das die sich nicht gegenseitig ärgern

Und der Vorschlag, das Rad nicht neu zu erfinden, ist natürlich genial. Andere für sich arbeiten zu lassen ist immer gut. Somit spart man sich sowohl die Terminalbefehle als auch jedwedige Programmierung 😎
0
gfhfkgfhfk29.09.1511:15
Auch das läßt sich alles in LDAP abbilden, d.h. Lehrer dürfen nur bei Schülern Passwörter ändern und nicht bei anderen Lehrern. Mir rollen sich jedesmal die Fußnägel hoch, wenn Passwörter in Skripten abgelegt werden und diese auch noch für Nutzerinteraktion gedacht sind.
0
onlyapple1329.09.1511:20
gfhfkgfhfk
onlyapple13
Dies funktioniert einwandfrei nur darf der Lehrer nicht das Passwort des diradmins auf den Server wissen.
Weshalb editierst Du die Regeln für den LDAP Server nicht, so daß der Lehrer nur die Passwörter ändern darf? Dazu gibt es LDAP Clients mit denen man so eine Aktion auch per GUI durchführen kann.

Könntest du mir evtl. einen LDAP Client empfehlen? Gibt es da die Möglichkeit nur auf das Passwort zu beschränken? Die Lehrer schaffen das sonst nicht da sie Technisch sehr limitiert sind.
0
onlyapple1329.09.1512:44
Ok kann geschlossen werden:
Hier evtl. die Lösung falls es jemand benötigt alles über Apple Script:

set domandanome to display dialog "Inserire Nome Utente" default answer ""
set nomeutente to text returned of domandanome
set domandapasswort to display dialog "Inseriere la nuova password" default answer ""
set nuovapasswort to text returned of domandapasswort

tell application "Terminal"
    activate
    do script "sshpass -p 'passwort' ssh benutzer@172.20.10.6 dscl -u diradmin -P passwort /LDAPv3/127.0.0.1 -passwd /Users/" & nomeutente & " " & nuovapasswort & return
end tell
0
gfhfkgfhfk29.09.1512:51
Wenn ein LDAP Client zu kompliziert sind, paß die Struktur im Server so an, daß der jeweilige Lehrer sich mit seinem eigenen Passwort anmelden kann um die Änderung am Passwort durchzuführen. Dann kannst Du ein Skript schreiben, was ohne hinterlegtes Passwort auskommt.

Noch eine Frage: Weshalb wird eigentlich nicht "passwd" auf der Kommandozeile genutzt? Unter so ziemlich jedem *I*X ändert dies Benutzerpasswörter auch auf einem LDAP Server, wenn die Computer richtig konfiguriert sind.

LDAP Client z.B. ,
0
gfhfkgfhfk29.09.1512:59
Mit dem Adminpasswort in einem Skript ist die Sache unsauber - so etwas macht man nicht.
0
Joe12
Joe1229.09.1513:23
Man muss aber doch nicht das Terminal öffnen um das script auszuführen das kann man doch auch direkt machen.
set domandanome to display dialog "Inserire Nome Utente" default answer ""
set nomeutente to text returned of domandanome
set domandapasswort to display dialog "Inseriere la nuova password" default answer ""
set nuovapasswort to text returned of domandapasswort

do shell script "sshpass -p 'passwort' ssh benutzer@172.20.10.6 dscl -u diradmin -P passwort /LDAPv3/127.0.0.1 -passwd /Users/" & nomeutente & " " & nuovapasswort & return
0
onlyapple1329.09.1514:52
gfhfkgfhfk
Mit dem Adminpasswort in einem Skript ist die Sache unsauber - so etwas macht man nicht.

Das Script wird ja anschließend zu einen Programm gemacht was nicht mit mit den Apple Script Editor einlesbar ist. So ist das Passwort "sicher"
0
onlyapple1329.09.1514:53
Joe12
Man muss aber doch nicht das Terminal öffnen um das script auszuführen das kann man doch auch direkt machen.
set domandanome to display dialog "Inserire Nome Utente" default answer ""
set nomeutente to text returned of domandanome
set domandapasswort to display dialog "Inseriere la nuova password" default answer ""
set nuovapasswort to text returned of domandapasswort

do shell script "sshpass -p 'passwort' ssh benutzer@172.20.10.6 dscl -u diradmin -P passwort /LDAPv3/127.0.0.1 -passwd /Users/" & nomeutente & " " & nuovapasswort & return

Super Danke für den Tipp werde das einbauen.

Nochmals vielen Dank für euere Hilfe.
0
onlyapple1329.09.1514:57
gfhfkgfhfk
Wenn ein LDAP Client zu kompliziert sind, paß die Struktur im Server so an, daß der jeweilige Lehrer sich mit seinem eigenen Passwort anmelden kann um die Änderung am Passwort durchzuführen. Dann kannst Du ein Skript schreiben, was ohne hinterlegtes Passwort auskommt.

Noch eine Frage: Weshalb wird eigentlich nicht "passwd" auf der Kommandozeile genutzt? Unter so ziemlich jedem *I*X ändert dies Benutzerpasswörter auch auf einem LDAP Server, wenn die Computer richtig konfiguriert sind.


Bei passwd wir mann nach den Alten Passwort gefragt in diesen Fall... habe das schon versucht deshalb der Weg über den Server
LDAP Client z.B. ,
0
gfhfkgfhfk30.09.1509:48
onlyapple13
Das Script wird ja anschließend zu einen Programm gemacht was nicht mit mit den Apple Script Editor einlesbar ist. So ist das Passwort "sicher"
Da braucht man sich nicht mehr zu wundern, weshalb es so viele Exploits gibt. Es ist eben diese Denke, die ins Desaster führt.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.