Hallo,
zwei kleine simple Fragen.
(1) Wie kann ich erreichen, ob man PHP mit exec(); zum Bleistift anweisen kann Kommandos auf der Unix-Konsole ausführen, oder nicht? In dem ich dem Benutzeraccount, unter dem PHP und respektive auch der Webserver läuft einer gültige Shell gebe oder nicht, oder?
(2) Ein kleines MySQL-Eleganz-Problem. Ich habe ein Mehrbenutzersystem, in dem Benutzer bestimmte Rechte haben. Ich möchte alle beide Sachen dynamisch halten. Das heißt ich will durch den Eintrag eines neuen Records entweder einen neuen Benutzer hinzufügen, oder einem Benutzer neue Rechte geben/entziehen oder gar ein neues Recht erfinden?
Habe bisher 2 Ansätze:
(a) entweder eine Tabelle mit 2 Spalten: Benutzer und Recht (hier würde das bloße Vorhandesein eines Records mit einem Benutzer und einem bestimmten Recht über den Erhalt des Rechtes entscheiden. Hat als Benutzer xyz in der Rechtetabelle keinen Record, der meinentwegen als Recht "mysql_beschreiben", so hat er dieses Recht automatisch nicht. Er hat nur die, mit denen er in der Tabelle aufgeführt ist.
Vorteil: Rechte lassen sich leicht geben und entziehen.
Nachteile: Ich habe viele Records in dieser Tabelle, wobei von 100 zum Beispiel 99 Benutzer xyz gehören - Verschwendung das Benutzerfeld immer wieder mit dem selben Benutzernamen zu beschreiben.
Tabelle könnte so aussehen:
nick right
Benutzer_1 mysql_administration
Benutzer_1 mysql_reboot
Benutzer_14 serverlog_lesen
Benutzer_1 mysql_beschreiben
Benutzer 15 dateisystem_beschreiben
Benutzer_14 serverlog_truncate
(b) oder eine Tabelle, die als erste Spalte den Benutzer hat und alle weiteren Spalten respräsentieren Rechte. Beispiel
nick mysql_schreiben mysql_booten mysql_admin serverlog_admin
Benutzer_1 Y Y N Y
Benutzer_3 N Y N Y
Neue Rechte müssten über den ALTER-Syntax hinzugefügt oder entfernt werden.
Vorteil: weniger Records
Nachteil: leere Felder entstehen beim Hinzufügen von Rechten, eingeschränkte Benennung der Rechte aufgrund der MySQL-Spaltennamen-Konvention
Was meint ihr?
Danke für eure Zeit.
zwei kleine simple Fragen.
(1) Wie kann ich erreichen, ob man PHP mit exec(); zum Bleistift anweisen kann Kommandos auf der Unix-Konsole ausführen, oder nicht? In dem ich dem Benutzeraccount, unter dem PHP und respektive auch der Webserver läuft einer gültige Shell gebe oder nicht, oder?
(2) Ein kleines MySQL-Eleganz-Problem. Ich habe ein Mehrbenutzersystem, in dem Benutzer bestimmte Rechte haben. Ich möchte alle beide Sachen dynamisch halten. Das heißt ich will durch den Eintrag eines neuen Records entweder einen neuen Benutzer hinzufügen, oder einem Benutzer neue Rechte geben/entziehen oder gar ein neues Recht erfinden?
Habe bisher 2 Ansätze:
(a) entweder eine Tabelle mit 2 Spalten: Benutzer und Recht (hier würde das bloße Vorhandesein eines Records mit einem Benutzer und einem bestimmten Recht über den Erhalt des Rechtes entscheiden. Hat als Benutzer xyz in der Rechtetabelle keinen Record, der meinentwegen als Recht "mysql_beschreiben", so hat er dieses Recht automatisch nicht. Er hat nur die, mit denen er in der Tabelle aufgeführt ist.
Vorteil: Rechte lassen sich leicht geben und entziehen.
Nachteile: Ich habe viele Records in dieser Tabelle, wobei von 100 zum Beispiel 99 Benutzer xyz gehören - Verschwendung das Benutzerfeld immer wieder mit dem selben Benutzernamen zu beschreiben.
Tabelle könnte so aussehen:
nick right
Benutzer_1 mysql_administration
Benutzer_1 mysql_reboot
Benutzer_14 serverlog_lesen
Benutzer_1 mysql_beschreiben
Benutzer 15 dateisystem_beschreiben
Benutzer_14 serverlog_truncate
(b) oder eine Tabelle, die als erste Spalte den Benutzer hat und alle weiteren Spalten respräsentieren Rechte. Beispiel
nick mysql_schreiben mysql_booten mysql_admin serverlog_admin
Benutzer_1 Y Y N Y
Benutzer_3 N Y N Y
Neue Rechte müssten über den ALTER-Syntax hinzugefügt oder entfernt werden.
Vorteil: weniger Records
Nachteil: leere Felder entstehen beim Hinzufügen von Rechten, eingeschränkte Benennung der Rechte aufgrund der MySQL-Spaltennamen-Konvention
Was meint ihr?
Danke für eure Zeit.
Kommentar