Jump to content
Froxlor Forum
  • 0

uid und guid, Vergabe von IDs u. Berechtigungen, ftp_users, panel_customers


Warlock

Question

Hi,

 

wenn ich bei einem Kunden zus?tzliche FTP-Accounts anlege, bekommen diese alle die gleiche uid und gid eingetragen.

Erwartet u. bevorzugt w?ren aber fortlaufende uids pro Login mit fester gid pro Kunden, da ich die Eintr?ge der Tabelle ftp_users (teilweise) auch f?r den SSH-Zugang verwende u. dann werden unterschiedliche uid's ben?tigt.

 

Beispiel:

User test hat uid=10000 u. gid=10000.

User ftp1@test.de hat uid=10001 u. gid=10000 usw.

Aber aktuell bekommt der user ftp1@test.de ebenfalls uid=10000 zugewiesen.

 

Frage 1: Gibt es daf?r einen besonderen Grund?

 

 

Weiterhin scheint es, als wenn f?r Owner und auch Gruppe bei Dateiberechtigungen der Wert der Spalte guid aus der Tabelle 'panel_customers' genommen wird, was eigentlich falsch ist, da uid und gid getrennt behandelt werden m?ssten.

 

 

Hier mal meine ?nderungsvorschl?ge:

  • Verwaltung der Gruppen in ftp_groups, wobei jede Gruppe eine (eigene) gid besitzt (die dann f?r die Gruppenberechtigung von Dateien u. Verzeichnissen verwendet wird).
  • Verwaltung der User in ftp_users, wobei neuen Usern jeweils eine eigene uid zugewiesen wird, die aber entsprechend der Kundenzugeh?rigkeit die gleiche gid bekommen.
  • Separates Speichern der Haupt-uid u. -gid in der Tabelle panel_customers
  • Erzeugung von Zugriffsrechten im Dateisystem entsprechend der Daten in panel_customers -> uid f?r Owner, gid f?r Gruppenberechtigung.
    Idealerweise haben die Hauptverzeichnisse f?r Web u. Mail die folgenden Berechtigungen: drwxrwsr-x
    Damit bekommen alle Benutzer der Gruppe Zugriff u. neue Dateien erhalten automatisch die richtige Gruppenzugeh?rigkeit.
     
  • Separates Speichern von uid u. gid (sofern das ?berhaupt gebraucht wird, da man die letzte uid u. gid immer aus der ftp_users ermitteln kann) in der Tabelle panel_settings

 

Eure Meinung?

 

Viele Gr??e

Manuel

Link to post
Share on other sites

10 answers to this question

Recommended Posts

jeder FTP Accounteine eigene UID, da st??t du schnell an die Grenze deines Systems wenn du ein paar mehr davon anlegen willst (bzw. der Kunde).

 

Weiterhin scheint es, als wenn f?r Owner und auch Gruppe bei Dateiberechtigungen der Wert der Spalte guid aus der Tabelle 'panel_customers' genommen wird, was eigentlich falsch ist, da uid und gid getrennt behandelt werden m?ssten.

Bezug? 'Wo' wird der genommen? Cron? Panel? System? Eigentlich sollte er das aus der ftp_users lesen

Link to post
Share on other sites

jeder FTP Accounteine eigene UID, da st??t du schnell an die Grenze deines Systems wenn du ein paar mehr davon anlegen willst (bzw. der Kunde).

Warum st??t man an die Grenzen des Systems? Soweit ich wei? gibts doch keine Begrenzung was die Anzahl der User oder Gruppen angeht?

(In meinem Fall sind es eh nicht so viele)

Alternativ k?nnte man eine eigene UID f?r die Benutzer generieren, die auch Shell-Zugriff haben sollen, alle anderen k?nnten die gleiche UID wie der Hauptbenutzer bekommen.

 

Bezug? 'Wo' wird der genommen? Cron? Panel? System? Eigentlich sollte er das aus der ftp_users lesen

 

Bezug ist das Anlegen von neuen Verzeichnissen, z.B. wenn ich in der Domainverwaltung bin u. den Domainpfad auf ein Unterverzeichnis setze. Dann wird das Unterverzeichnis mit einer Dummy-index.html automatisch angelegt u. bekommt nat?rlich auch gewiesse Zugriffsrechte. Und es werden die Zugriffsrechte genommen, die in der Tabelle panel_customers im Feld guid stehen.

Link to post
Share on other sites

Warum st??t man an die Grenzen des Systems? Soweit ich wei? gibts doch keine Begrenzung was die Anzahl der User oder Gruppen angeht?

Maximum recommended is: 65535

But the maximum allowable uid/gid is: 4294967295

 

Bezug ist das Anlegen von neuen Verzeichnissen, z.B. wenn ich in der Domainverwaltung bin u. den Domainpfad auf ein Unterverzeichnis setze. Dann wird das Unterverzeichnis mit einer Dummy-index.html automatisch angelegt u. bekommt nat?rlich auch gewiesse Zugriffsrechte. Und es werden die Zugriffsrechte genommen, die in der Tabelle panel_customers im Feld guid stehen.

Klar, das ist auch richtig, denn warum sollten die Webroots irgendeinem FTP-user geh?ren? Die Rechte muss der Hauptkunde dann schon selbst ?ndern wenn er das unbedingt braucht.

Link to post
Share on other sites

Maximum recommended is: 65535

But the maximum allowable uid/gid is: 4294967295

 

 

Klar, das ist auch richtig, denn warum sollten die Webroots irgendeinem FTP-user geh?ren? Die Rechte muss der Hauptkunde dann schon selbst ?ndern wenn er das unbedingt braucht.

 

K?nntest du mir vielleicht zum schnelleren Auffinden vllt. einen Tipp geben, an welcher Stelle ich den Code finde, welcher die Berechtigungen aus der panel_customer ausliest.

Dann w?rde ich n?mlich selbst eine ?nderung vornehmen, die mir erlaubt in der panel_customer die UID und GID separat zu setzen. Das nachtr?gliche ?ndern ist grunds?tzlich OK, aber wenn der Kunde seine Domain auf ein anderes Verzeichnis setzt, wird zur Zeit die falsche UID genommen

Link to post
Share on other sites

Ich verstehe nicht ganz worauf du hinauswillst. Was meinst du mit "wenn der Kunde seine Domain auf ein anderes Verzeichnis setzt" - dann geh?rt das Verzeichnis immernoch dem Kunden, oder nicht? Wo soll da eine falsche UID genommen werden?

 

Finden tust du das ganze in den webserver-cron-files, da ich nicht weiss welchen webserver und welches setup du hast, kann ich dir leider keinen genauen Code-Ausschnitt sagen

Link to post
Share on other sites

Folgendes Setup:

  • Kunden 'test', 'mustermann'
  • Domains test.de, test.com, mustermann.de
  • Kundenverzeichnisse /var/www/webs/test und /var/www/webs/mustermann
  • Kunde 'mustermann' hat mehrere Eintr?ge in der ftp_users, darunter auch welche mit SSH-Zugang, d.h.
    UID    Name                | GID    name       |  shell
    ---------------------------|-------------------|-----------
    10000  mustermann          | 10000  mustermann |  /bin/sh
    10001  ssh/ftp_account1    | 10000  mustermann |  /bin/sh
    10000  reiner_ftp_account  | 10000  mustermann |  /bin/false
    


  • Kunde 'test' hat nur seinen Hauptbenutzerzugang:
    10002  test                | 10001  test       |  /bin/false
    


  • In der Tabelle panel_customers steht im Datensatz des Kunden 'test' die guid=10001

 

Ich verstehe nicht ganz worauf du hinauswillst. Was meinst du mit "wenn der Kunde seine Domain auf ein anderes Verzeichnis setzt" - dann geh?rt das Verzeichnis immernoch dem Kunden, oder nicht? Wo soll da eine falsche UID genommen werden?

 

Mit dem "Vorgang" meine ich folgendes:

  1. Einloggen als Kunde, z.B. 'test'
  2. Men?punkt Domains > Einstellungen
  3. Dort kann man dann jeder Domain einen Pfad innerhalb des Hauptkundenverzeichnis zuweisen, wenn man das macht, wird das angegebene Verzeichnis automatisch mit einer Dummy index.html angelegt u. es werden daf?r die Berechtigungen gesetzt

 

Ausgehend vom obigen Setup, wenn ich jetzt der Domain test.de das Unterverzeichnis test_de/ (anstatt /) zuweise, dann wird folgenes Verzeichnis angelegt: /var/www/webs/test/test_de und es erh?lt (f?lschlicherweise) die UID=10001 und GID=10001, weil der Eintrag guid aus der panel_customers genommen wird.

Korrekt w?re allerdings, die UID=10002 und die GID=10001 zu setzen.

 

Ich hoffe, ich konnte das Problem jetzt besser beschreiben.

Link to post
Share on other sites

Aaah, sag doch gleich das du die UID eines anderen Kunden bekommen hast, du redest als nur von den FTP-Accounts eines Kunden.

 

EDIT: Wie hast du es geschafft, das ein Kunde auf einmal 2 UIDs besitzt? (mustermann + ssh/ftp_account1) Das kommt meiner Meinung nach nicht von Froxlor

Link to post
Share on other sites

Aaah, sag doch gleich das du die UID eines anderen Kunden bekommen hast, du redest als nur von den FTP-Accounts eines Kunden.

 

EDIT: Wie hast du es geschafft, das ein Kunde auf einmal 2 UIDs besitzt? (mustermann + ssh/ftp_account1) Das kommt meiner Meinung nach nicht von Froxlor

 

Ein Kunde hat mehrere UIDs, wenn er die FTP-Accounts auch als SSH-Accounts freischaltet (dies geht bei mir durch setzen der Shell auf etwas anderes als /bin/false).

Die UIDs hatte ich manuell in der DB ver?ndert, da dies f?r die SSH-Accounts n?tig war, anderenfalls war Shell-Login nicht m?glich.

Ich bin ja ein Advanced User, der auch PHP Programmierung beherrscht :-).

 

Ich denke, ich werde einfach das Ganze auf meine W?nsche anpassen und die GUID-Felder aufsplitten in UID und GID, und dann mal einen Patch daf?r erstellen, w?re das was?

 

Vllt. kann die Funktionalit?t dann (einschlie?lich der M?glichkeit, die FTP-User als SSH-User zu benutzen) in die n?chste Froxlor-Version noch vor 1.0 einflie?en...

Du erinnerst dich sicher an meinen Patch f?r die SSH-Funktionalit?t, dieser wurde aber erst f?r die Version 1.0 geplant.

Link to post
Share on other sites

Naja sorry, aber manuellen Datenbank?nderungen deinerseits erschehren mir nat?rlich die Fehlersuche.

 

Es wurde bisher absichtlich keine SSH-Funktionalit?t implementiert (allein schon aus Sicherheitsgr?nden). Und es gibt kaum was, was ein "normal-Kunde" nicht auch mit FTP erledigen kann.

 

Und ?nderungen wie du sie beschrieben hast, werden wohl auch erst mit 1.0 einflie?en.

Link to post
Share on other sites

Naja sorry, aber manuellen Datenbank?nderungen deinerseits erschehren mir nat?rlich die Fehlersuche.

 

Es wurde bisher absichtlich keine SSH-Funktionalit?t implementiert (allein schon aus Sicherheitsgr?nden). Und es gibt kaum was, was ein "normal-Kunde" nicht auch mit FTP erledigen kann.

 

Und ?nderungen wie du sie beschrieben hast, werden wohl auch erst mit 1.0 einflie?en.

 

Ist schon klar...h?tte das Ganze gleich ausf?hrlicher beschreiben sollen.

 

Ich habe einen Patch im Bugtracker gepostet -> Item 419.

Link to post
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...