Current time: 11-27-2024, 07:31 PM Hello There, Guest! (LoginRegister)


Post Reply 
mysql-User nur für localhost?
Author Message
gOOvER Offline
Banned

Posts: 3,561
Joined: Jul 2007
Post: #11
RE: mysql-User nur für localhost?
Natürlich würde das Sinn machen. Meiner Meinung nach würde ispCP wieder ein Stück sicherer werden. Kommt drauf an, ob die Dev's das nachher auch so sehen. Smile
(This post was last modified: 01-18-2008 05:43 PM by gOOvER.)
01-18-2008 05:41 PM
Visit this user's website Find all posts by this user Quote this message in a reply
joximu Offline
helper
*****
Moderators

Posts: 7,024
Joined: Jan 2007
Reputation: 92
Post: #12
RE: mysql-User nur für localhost?
Hi

ich denke, solange die Wahl bleibt, darf niemand dagegen sein.

Da alles innerhalb PHP stattfinden, dürfte es auch gut testbar sein (die engne-Teile in Perl sind immer ne kleine Herausforderung :-). Den 3. Teil (delete) kann man sicherlich so machen, dass alle user mit dem Namen gelöscht werden, egal welcher Host... wenn man ihn noch separat eingrichtet hat für eine bestimmte IP, dann braucht man den Eintrag wohl auch nicht mehr, meine ich...

Vielleicht die Variable so benennen, dass man sich auch wirklich nichts anderes drunter vorstellen kann (ONLYLOCALHOST könnte auch etwas sein, was in my.cnf Änderungen bewirkt). "MYSQL_USERDB_HOSTWILDCARD = false" oder so???
Toll wäre ne Liste ... = "localhost, %" oder eben nur "localhost"... aber das ist Zukunftsmusik...

Übrigens: das ganze bezieht sich ja neben mysql.user auch auf die mysql.db Tabelle: die Datenbanken dürfen dann auch nur von den zugelassenen Hosts aus angespochen werden...

Gruss J
01-18-2008 06:54 PM
Visit this user's website Find all posts by this user Quote this message in a reply
jmeyerdo Offline
Junior Member
*

Posts: 173
Joined: Oct 2007
Reputation: 2
Post: #13
RE: mysql-User nur für localhost?
Hi!

Danke für die ausführliche Rückmeldung...
joximu Wrote:Den 3. Teil (delete) kann man sicherlich so machen, dass alle user mit dem Namen gelöscht werden, egal welcher Host... wenn man ihn noch separat eingrichtet hat für eine bestimmte IP, dann braucht man den Eintrag wohl auch nicht mehr, meine ich...
Ja, das stimmt. Das wird wohl in 99,98% der Fälle so sein...

joximu Wrote:Vielleicht die Variable so benennen, dass man sich auch wirklich nichts anderes drunter vorstellen kann (ONLYLOCALHOST könnte auch etwas sein, was in my.cnf Änderungen bewirkt). "MYSQL_USERDB_HOSTWILDCARD = false" oder so???
Ok, das klingt wirklich präziser. Das kommt dann mit in die ispcp.conf, oder? Arbeitet Ihr da wirklich mit true/false? An anderen Stellen habe ich auch schon ein "yes" gesehen.

joximu Wrote:Übrigens: das ganze bezieht sich ja neben mysql.user auch auf die mysql.db Tabelle: die Datenbanken dürfen dann auch nur von den zugelassenen Hosts aus angespochen werden...
Da beim INSERT mit "grant all" gearbeitet wird, ist das ein Befehl, der mysql.user und mysql.db gleichzeitig betrifft.
Beim Löschen (in der sql_delete_user()) werde ich das mal testen, da werden scheinbar erst alle Rechte global entfernt und dann wird der User-Eintrag gelöscht. Ist damit auch der Eintrag in der mysql.db weg? Schaue ich heute abend mal und schicke dann am Wochenende den "Mini-Patch".

Viele Grüße,

Jens
01-18-2008 07:11 PM
Find all posts by this user Quote this message in a reply
jmeyerdo Offline
Junior Member
*

Posts: 173
Joined: Oct 2007
Reputation: 2
Post: #14
RE: mysql-User nur für localhost?
Hallo allerseits!

So, ich habe mit den Tests für meinen kleinen Patch begonnen. Dabei ist mir allerdings aufgefallen, dass bei mir (auch mit Download des Files client-functions.php aus dem Trunk - und ohne Änderungen meinerseits) das Löschen der User nicht 100%ig funktioniert.
Und zwar bleibt der Eintrag in der Tabelle mysql.db weiter vorhanden.

Obwohl der Code für den REVOKE auf die Tabellen vorhanden ist, wird er scheinbar aufgrund folgender if-Abfrage nicht ausgeführt:
Code:
if (count_sql_user_by_name($sql, $rs->fields['sqlu_name']) == 0) {
...
} else {
REVOKE
}
Wird an der Stelle nicht nur abgefragt, ob tatsächlich keine User mehr dieses Namens in der ispCP-sql-user-Tabelle vorhanden sind? Warum wird in diesem Fall dann nicht revoked?

Interessanterweise funktionert das REVOKE an der Stelle tatsächlich nicht (mehr?). Warum überhaupt revoken und nicht einfach die Zeile löschen, wenn ohnehin die Rechte geflusht werden (ein paar Zeilen drüber, das kann ja runter).

Soweit meine abendlichen 2 Ct. Was sagen die Profis? Wink

Viele Grüße, Jens
(This post was last modified: 01-19-2008 07:29 AM by jmeyerdo.)
01-19-2008 07:04 AM
Find all posts by this user Quote this message in a reply
Zothos Offline
Release Manager
*****
Dev Team

Posts: 1,262
Joined: Feb 2007
Reputation: 10
Post: #15
RE: mysql-User nur für localhost?
Verbessere es ruhig. Aber teste es auch ob es dann auch funktioniert Tongue
01-19-2008 11:15 AM
Find all posts by this user Quote this message in a reply
jmeyerdo Offline
Junior Member
*

Posts: 173
Joined: Oct 2007
Reputation: 2
Post: #16
RE: mysql-User nur für localhost?
Zothos Wrote:Verbessere es ruhig. Aber teste es auch ob es dann auch funktioniert Tongue
;-) Naja, bei meinen Zweifeln, warum das an der Stelle so ist, hätte ich gerne Rückmeldung von jemandem, der die Stelle/das System deutlich besser kennt.

Meine Analyse sql_delete_user():

[...]
1. User wird in ispCP gelöscht.

2. Die globalen Rechte werden "revoked" (mysql.user). Dieses setzt alle ggf. in der Tabelle gesetzten Rechte auf "N", löscht aber keinen Eintrag.
Warum? Die sollten doch eh komplett deaktiviert sein.
3. Die Einträge in mysql.user werden gelöscht und die Rechte geflusht.
Und hier kommt das ELSE:
4. Die Rechte auf der Tabelle werden "revoked" (mysql.db).
Das scheint nur zu funktionieren, wenn es den mysql.user noch gibt?
Wenn der User entfernt wurde, bekomme ich einen Fehler. Im Standardfall bleiben die Einträge vorhanden.


1. Zum ELSE:
Morgendliche Idee: Ist das eventuell dafür da, falls der User ggf. noch andere Tabellen hat? Ist das über die ispCP-GUI überhaupt möglich?
2. Fehler:
Bleibt aber der Fehler, dass die Einträge in der mysql.db nicht gelöscht werden.
3. Revoke:
Ist das überhaupt notwendig? Mein Problem ist, dass ich an der Stelle meines Wissens nicht prüfen kann, ob die Rechte überhaupt existieren. Ist kein Eintrag für user@% vorhanden (so meine neue Konfig-Möglichkeit) gibt es somit einen Fehler. Ein Löschen des Eintrags wäre einfacher.

Warum nicht "einfach":
1. delete user in mysql.user (wenn vorhanden)
2. delete tabellenrechte mysql.db (wenn vorhanden)
3. flush privileges

Für mich selbst kann ich das natürlich funktionsfähig hacken. Für einen sinnvollen Patch bitte ich um Diskussion. Wink

Viele Grüße, Jens
01-19-2008 06:27 PM
Find all posts by this user Quote this message in a reply
joximu Offline
helper
*****
Moderators

Posts: 7,024
Joined: Jan 2007
Reputation: 92
Post: #17
RE: mysql-User nur für localhost?
Hi Jens

es wird nur wenige geben, die diesen Code schonmal gelesen haben - ob du denjenigen findest, der ihn geschrieben hat, wage ich zu bezweifeln...
Also, ephigenie und RatS kommen noch vom VHCS her - vielleicht wissen sie mehr. Raphael hat sich sonst schon stark mit dem Code auseinandergesetzt (und bei solche stellen einfach das ganze neu gemacht).

Ich hab nun auch mal diese Funktion angesehen und sehe, vom lesen alleine - nicht durch (erinnert mich an die Forum-Sig von Zothos).

Ich würde vorschlagen: Funktion neu machen, aber ich bitte noch Raphael um seine Meinung (da er zeitverschoben wohnt, kommt die Antwort wohl erst heute Abend).

Gruss Joxi
01-19-2008 07:19 PM
Visit this user's website Find all posts by this user Quote this message in a reply
RatS Offline
Project Leader
******

Posts: 1,854
Joined: Oct 2006
Reputation: 17
Post: #18
RE: mysql-User nur für localhost?
bitte keine globale Konfigurationen, sondern vom Reseller einstellbar für jede Domain und vom Admin einstellbar für jeden Reseller, ob externe Verbindungen erlaubt sind. Würde heißen:

Admin
-- Reseller (nein)
---- Kunde (nein)
-- Reseller (ja)
---- Kunde (ja)
---- Kunde (nein)
01-20-2008 09:05 PM
Visit this user's website Find all posts by this user Quote this message in a reply
rbtux Offline
Moderator
*****
Moderators

Posts: 1,847
Joined: Feb 2007
Reputation: 33
Post: #19
RE: mysql-User nur für localhost?
RatS Wrote:bitte keine globale Konfigurationen, sondern vom Reseller einstellbar für jede Domain und vom Admin einstellbar für jeden Reseller, ob externe Verbindungen erlaubt sind. Würde heißen:

Admin
-- Reseller (nein)
---- Kunde (nein)
-- Reseller (ja)
---- Kunde (ja)
---- Kunde (nein)


Als Erweiterung für ein zukünftige Version wäre eventuell denkbar bei bestimmten Domains den Zugriff für bestimmte IPs freizuschalten und nicht %...
01-20-2008 09:24 PM
Visit this user's website Find all posts by this user Quote this message in a reply
jmeyerdo Offline
Junior Member
*

Posts: 173
Joined: Oct 2007
Reputation: 2
Post: #20
RE: mysql-User nur für localhost?
Na, Ihr seid ja lustig. Wink

Vielleicht fangen wir mit Schritt 1 (globale Konfiguration) an. Das zieht weniger Änderungen nach sich - die aber alle für die weiteren Schritte grundlegend notwendig sind (z.B. sollte man User löschen können, ohne dass es Fehler gibt, weil der "user@%"-Eintrag nicht gesetzt ist.

Also zurück zu den Kernfragen würde das bedeuten:

- ist mein oben angesprochener Fehler (Einträge werden nicht gelöscht) bei Euch reproduzierbar?
- wäre mein Workaround/neuer Weg (kein Revoke, Löschen der Einträge und flushen der Rechte) der richtige?

Viele Grüße,

Jens
01-20-2008 10:02 PM
Find all posts by this user Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 3 Guest(s)