Hello,
die Verwaltung horizontaler Rechte pro User können die meisten Datenbank-Management-Systeme bestens alleine. Du kannst diesen Mechanismus nutzten.
Als Beispiel betrachten wir mal MySQL, das per PHP-Script bedient werden soll. Das bedeutet, das im ersten Schritt der User üblicherweise ein speziell festgelegter für alle Aktionen der Script ist.
Das kann an aber ändern. Wenn der User, der die PHP-Scripte nutzt (also der individuelle), bekannt ist, weil er sich anmelden musste, kann man auch die MySQL-Queries unter diesem User (oder einem ihm zugeordneten) ausführen lassen.
Die Funktion change_user() könnte Dir dabei helfen
http://dev.mysql.com/doc/refman/5.1/en/apis-php-class.mysqli.html#apis-php-mysqli.change-user
Wenn es jedoch um vertikale Rechte geht, also solche, die sich auf speziell gekennzeichnete Datensäteze auswirken sollen, so hat dies i.d.R. Auswirkung auf das Datenmodell und lässt sich dann am besten durch Festlegung von Stored Procedures für alle Query-Typen beaufsichtigen.
Die direkten Select-, Insert-, Update-, und Delete-Statemnets werden den Usern entzogen. Es werden ihnen nur die Stored Procedures bereitgestellt, die aber ihrerseits Rücksicht auf den angemeldeten User und die für ihn festgelegten Regeln nehmen. Die Regeln können nun wiederum in einer zusätzlichen Tabelle hinterlegt werden.
Bei vernünftigen DBMS kann man innerhalb einer solchen Stored Procedure auch ein eine Exception schmeißen lassen für den Fall, dass z.B. Rechte nicht ausreichen oder einer Procedure unerlaubte Parameter übergeben wurden.
Diese Vorgehensweis hat den Vorteil, dass alle Rechte auf die Daten auch im DBMS festgelegt werden und als API nebeneinander unterschiedliche (z.B. PHP-Scripte, PERL-Scripte, C++-Frontend fürs LAN) verwendet werden können.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg