# Kann man mit Java auf einem lokalen PC/Mac Benutzergruppen auslesen und Rechte ändern?



## seco (28. Mai 2017)

Hallo,
ich bin auf der suche nach einer möglichkeit die lokalen Benutzergruppen auszulesen und dann anschliesend den Benutzer wechseln um z. B. andere Benutzerrechte zu erlangen.
Konkretes bsp. hab mir einen Explorer (ähnlich dem Win Explorer geschrieben, weil ich die Schnauze voll hab vom Finder!!). Ich kann mir aber nicht von allen Ordnern die Inhalte anzeigen lassen, da mir die Benutzerrechte nicht ausreichen. Also dachte ich daran, die Benutzergruppen auszulesen und mit entsprechendem Benutzer anzumelden um alle Benutzerrechte zu bekommen.

Habe was über LDAP gelesen, aber wenn ichs richtig verstanden habe ist das nicht das richtige für mich.

Weis vielleicht jemand eine Lösung für mein Problem, bin für jeden tip dankbar.


----------



## Meniskusschaden (28. Mai 2017)

seco hat gesagt.:


> Ich kann mir aber nicht von allen Ordnern die Inhalte anzeigen lassen, da mir die Benutzerrechte nicht ausreichen.


Na ja, das ist ja auch der Sinn der Benutzerrechte.


seco hat gesagt.:


> Also dachte ich daran, die Benutzergruppen auszulesen und mit entsprechendem Benutzer anzumelden um alle Benutzerrechte zu bekommen.


Warum meldest du dich nicht einfach gleich mit entsprechenden Rechten an? Dann mußt du auch nichts auslesen. Mit Java wirst du das nicht direkt auslesen können. Du könntest höchstens die Kommandozeilentools des Betriebssystems nutzen. Da bekommst du natürlich auch nur das zu sehen, wofür der ausführende Benutzer berechtigt ist. Dein Programm wird sich hoffentlich auch nicht als anderer Benutzer anmelden können. Das sollte ein vernünftiges Betriebssystem unterbinden.


seco hat gesagt.:


> Weis vielleicht jemand eine Lösung für mein Problem


Ehrlich gesagt sehe ich da überhaupt kein Problem. Ist doch super, wenn man nur auf die Dateien Zugriff hat, für die man berechtigt ist.
Du könntest eine Serverkomponente programmieren, die permanent unter vollen Berechtigungen läuft (unter Windows vorzugsweise als Dienst; beim Mac weiß ich es nicht). Dein Explorer könnte dann als Client unter einem normalen Benutzerkonto laufen und sich von der Serverkomponente die Verzeichnisse und Dateien liefern lassen.


----------



## JuKu (3. Jun 2017)

Du könntest Java mit Administrator Rechten ausführen.
Evtl. verhindert der Security Layer (kA, wie der wirklich in der JVM läuft) den Zugriff auf Betriebssystem-Pfade, z.B. C:/Windows .
Aber alles andere solltest du auslesen können. Und den Security Layer kann man auch umgehen, aber das sollte nicht das Ziel sein.


----------



## seco (3. Jun 2017)

@Meniskusschaden: 





> Ehrlich gesagt sehe ich da überhaupt kein Problem. Ist doch super, wenn man nur auf die Dateien Zugriff hat, für die man berechtigt ist.


schon richtig, da ich aber den Finder gerne ausrangieren wollte, sollte halt mein Progrämmchen halt ähnliche möglichkeiten bieten. heisst also das ich mich wahlweise auch als anderer User (root/admin) anmelden möchte um evtl. dateidrechte zu administrieren.


> Du könntest eine Serverkomponente programmieren, die permanent unter vollen Berechtigungen läuft (unter Windows vorzugsweise als Dienst;


meinst du das in C programmieren und als *.dll? da sind meine kenntnisse ziehmlich bescheiden.

@ JuKu: 





> Aber alles andere solltest du auslesen können


kann sein, dass ich gerade auf dem schlauch stehe, aber welche Klassen brauche ich den um alle User auf dem System auszulesen und anschließen bei bedarf den User mit entsprechenden Rechten zu wechseln?


----------



## mrBrown (3. Jun 2017)

seco hat gesagt.:


> ähnlich dem Win Explorer geschrieben, weil ich die Schnauze voll hab vom Finder!!


Rein aus Interesse, was ist denn so schlimm am Finder?



JuKu hat gesagt.:


> der Security Layer


Was soll das sein?





seco hat gesagt.:


> meinst du das in C programmieren und als *.dll? da sind meine kenntnisse ziehmlich bescheiden.
> 
> @ JuKu: kann sein, dass ich gerade auf dem schlauch stehe, aber welche Klassen brauche ich den um alle User auf dem System auszulesen und anschließen bei bedarf den User mit entsprechenden Rechten zu wechseln?



Seine Methode ist, das Programm einfach als root zu starten - während der Laufzeit mehr Rechte bekommen wird (zumindest mit Java) nicht klappen.


----------



## Meniskusschaden (3. Jun 2017)

seco hat gesagt.:


> Meniskusschaden hat gesagt.:
> 
> 
> > Du könntest eine Serverkomponente programmieren, die permanent unter vollen Berechtigungen läuft (unter Windows vorzugsweise als Dienst
> ...


Nein, ich meine, dass du das Programm dann nicht als Dialoganwendung laufen lassen solltest, sondern als Hintergrunddienst, damit sich der höher berechtigte Benutzer nicht anmelden muss. Da muss man aber wahrscheinlich ein wenig recherchieren, um heraus zu finden, wie man das mit einer Java-Anwendung macht. Insgesamt finde ich das aber aus den bereits genannten Gründen nicht sinnvoll.


seco hat gesagt.:


> schon richtig, da ich aber den Finder gerne ausrangieren wollte, sollte halt mein Progrämmchen halt ähnliche möglichkeiten bieten


Und der Finder zeigt einem auch Dateien, für die man nicht berechtigt ist (habe keine MAC-Kenntnisse)? Finde ich ein wenig skurril.


----------



## mrBrown (3. Jun 2017)

Meniskusschaden hat gesagt.:


> Und der Finder zeigt einem auch Dateien, für die man nicht berechtigt ist (habe keine MAC-Kenntnisse)? Finde ich ein wenig skurril.


Nö, tut er nicht.
Es gibt aber die Möglichkeit, sich nach Eingabe des Admin-Passworts höhere Rechte zu verschaffen - offensichtlich sogar mal mit Java-Wrapper, scheint aber nicht mehr gepflegt zu werden


----------



## seco (4. Jun 2017)

@mrBrown


> Rein aus Interesse, was ist denn so schlimm am Finder?


naja zb. dass der Finder sich immer noch nicht die Positionen oder Größe beim schließen nicht merken kann. Ich weiss schon ist nur ne kleinigkeit. Aber am meisten stört mich, dass man dass Dateisystem im Finder garnicht richtig erkennen kann. Als ich mit meinem progrämmchen angefangen habe und die Linuxdateiverwaltung gesehen habe, dachte ich ich hätte was falsch gemacht. Das Mac OSX ne art Linux Distribution ist, war mir vorher überhaupt nicht klar. Ist halt auch ne geschmackssache.


----------



## mrBrown (4. Jun 2017)

seco hat gesagt.:


> naja zb. dass der Finder sich immer noch nicht die Positionen oder Größe beim schließen nicht merken kann. Ich weiss schon ist nur ne kleinigkeit.


Hm, tut er schon. Wenn man einen Ordner im Finder in einem neuem Fenster öffnet, zeigt er das Fenster an der gleichen Stelle, wo der Ordner auch geschlossen wurde.
Ein Fenster an der Default-Postition macht er auf, wenn man ein ganz neues Fenster öffnen. Aber ehrlich gesagt wüsste ich nicht, wo der das sonst öffnen sollte - an einer der Positionen, wo die anderen 5 Fenster grad offen sind, oder da, wo das zu letzt geschlossene Fenster saß, und werden dann alle neu geöffneten an der Position geöffnet und man sieht immer nur das oberste, oder lieber FIFO oder LIFO-mäßig? soll nicht bös klingen, aber ich frag mich das grad wirklich 



seco hat gesagt.:


> Aber am meisten stört mich, dass man dass Dateisystem im Finder garnicht richtig erkennen kann.


Was meinst du mit Datei-System? Ich seh sowohl alles was im Dateisystem liegt, als auch die Art des Dateisystems, wenn ich mir die Info zur Partition anzeigen lasse?



seco hat gesagt.:


> Als ich mit meinem progrämmchen angefangen habe und die Linuxdateiverwaltung gesehen habe, dachte ich ich hätte was falsch gemacht. Das Mac OSX ne art Linux Distribution ist, war mir vorher überhaupt nicht klar.


*Die eine* Linuxdateiverwaltung gibt es nicht - Thunar oder Pantheon sehen jetzt nicht mal großartig anders aus 
macOS ist sich ganz sicher eines nicht - eine Linux Distribution, es sind nur beides Unixoide Betriebssysteme.


----------



## Thallius (4. Jun 2017)

*schenkt seco mal einen mac einsteiger kurs*


----------



## seco (4. Jun 2017)

*hihihihi du bischdjasoluschdig*


----------



## JuKu (14. Jun 2017)

seco hat gesagt.:


> @Meniskusschaden:@ JuKu:
> kann sein, dass ich gerade auf dem schlauch stehe, aber welche Klassen brauche ich den um alle User auf dem System auszulesen und anschließen bei bedarf den User mit entsprechenden Rechten zu wechseln?



Dafür bietet Java meines Wissens keine Klassen an, das musst du schon selbst bauen.
Unter Linux stehen alle User in der /etc/passwd Datei, allerdings brauchst du root Rechte, um diese öffnen zu können.



mrBrown hat gesagt.:


> Security Layer
> Was soll das sein?
> 
> Seine Methode ist, das Programm einfach als root zu starten.



Ich meinte die Java Sandbox, siehe auch http://www.javaworld.com/article/2076989/core-java/java-s-security-architecture.html?page=2.
Und leider würde letzteres auch funktionieren, weil Java derzeit eine Sicherheitslücke besitzt, welche er unter Java 8 noch ausnutzen könnte:
https://github.com/noctarius/unsafe...aworld/security/ExploitingSecurityChecks.java
Normalerweise würde die Sandbox meines Wissens auch mit root Rechten keinen Zugriff auf z.B. /etc/passwd gewähren.

Ich glaube das Problem ist aber eig. nicht der Finder selbst, sondern dass du nicht weißt, wie Dateisysteme unter Linux & Mac OSX funktionieren.
Unter Windows gibt es Laufwerke (mit Buchstaben), unter Linux & Mac OSX gibt es einen einzigen Dateibaum.
Dieser startet bei / und alle Ordner, Laufwerke usw. werden irgendwo eingehangen.
z.B. kann somit ein Ordner auf einer ganz anderen Festplatte liegen, als der Rest.
Und die Festplatten werden z.B. unter Linux meist unter /dev/sdb0 usw. eingehangen.


----------

