PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wwwuser mit rechten in /etc/



daroon
24.06.05, 10:59
Hi,

Ich bin Linux-Neuling und brauche eure Hilfe. Ich hab einen Debian 3.0r5 System und Apache2, php5 und mysql4.1.
Die Software die ich installiert habe ligt z.T. in /var/www/ und z.T. in /etc/.
wenn ich jetzt versuche die site im browser anzusehen bekomme ich:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'ldu'@'localhost' (using password: YES) in /etc/...
Could not connect to database!

Ich hab die software schonmal unter windows installiert gehabt, da musste ich dann bei selbigem fehler dem wwwuser einfach zugriff auf das Verzeichniss geben. Was macht man in einem solchen Fall unter Linux. Kann ich überhaut einem User zugriff auf nur ein Verzeichniss geben. Und wie?

Evtl gehöhrt das Thema hier garnicht hin, aber ich wusste nicht wohin sonst.

Danke schonmal für eure Hilfe

Gruß,
DaRoon

rudi_m
24.06.05, 11:15
Unter Unix kannst Du jeder Datei/Verzeichnissen einen Eigentuemer und eine Gruppe zuordnen fuer die Du dann jeweils Lese/Schreib/execute Rechte vergeben kannst.
Das solltest Du suf jeden Fall mal nachlesen wenn Du vorhast Dich mit Linux zu beschaeftigen:
man chmod
man chown
man chgrp

Leserechte in /etc erlauben also noch nicht das Lesen aller Dateien in /etc
(UND DAS IST AUCH GUT SO)

Gib dem wweuser Leserecht genau fuer die Datei(en) die er in diesem Fall braucht - sicher die wo das passwort fuer den mysql-user "ldu" drin steht und vielleicht noch ein paar config dateien mehr!?

(wenn ich das Problem jetzt richtig verstanden habe)

PS.: Die Datenbank und den mysql-user hast Du korrekt angelegt!?

Herr Kommisar
24.06.05, 11:17
dein problem ist nicht /etc sondern der user für mysql

Access denied for user 'ldu'@'localhost' (using password: YES) in /etc/...

leg einen user in der tabelle mysql.user mit rechten auf die Tabellen


dann sollte diese meldung nicht mehr kommen

tippfehler inclusive

daroon
24.06.05, 11:40
danke schonmal für die schnelle hilfe.
@rudi_m: Werd dir manuals gleich mal lesen. Die MySQL DB hab ich per .sql datei angelegt. demnach sollten die tabellen passen. das testsystem von MySQL hat auch einwandfrei gefunzt. Daher denke ich, dass ich es richtig installiert habe.

@Herr Kommisar: Der User den ich angelegt habe hat alle rechte auf die Datenbank.daran soltle es eigentlich nicht scheitern.

wie heisst denn der wwwuser unter Linux? Oder gibt es da keinen Standart. zumindest bin ich nicht gefragt worden ob ich einen anlegen will, bzw. hab ich keinen selber angelegt

Herr Kommisar
24.06.05, 11:46
wenn du eine datenbankverbindung per php aufbaust dann
musst du doch einen user mit hoffentlich einem password angeben

und wenn du das nicht tust dann nimmt er den user wwwrun welcher für den dienst apache2 zuständig ist da der apache über den user wwwrun gestartet wird

und wenn du einen neuen user angelegt hast dann starte den mysql- dienst neu

/etc/init.d/mysql restart


PHPMyAdmin wäre ne gute sache

rudi_m
24.06.05, 11:51
wie heisst denn der wwwuser unter Linux?
Wahrscheinlich auch wwwuser.
Guck einfach in der Prozessliste als was der apache laeuft:
ps axu |grep apache

daroon
24.06.05, 11:52
phpMyAdmin hab ich vorhin auch entdeckt. :) dachte schon ich müsste das alles händisch machen.

Der wwwrun ist ein DB-User von MySQL wenn ich dich richtig verstanden habe. Im MySQL hab ich nen User MIT Pwd angelegt, aber ich dachte es gäbe auch so etwas wie einen User der - wie sag ich das jetzt am besten - der standartmäßig von apache verwendet wird um auf lokale Dateien zuzugreifen. wenn ich diesem dann das recht auf meinen Ordner im /etc/ geben könnte, dann sollte es klappen.

daroon
24.06.05, 11:54
@rudi_m: kann das sein? www-data? ist das ein normaler lokaler account?

daroon
24.06.05, 12:00
was wäre denn sinnvoll dem user für rechte zu geben, ich bin durch die linuxberechtigungsstruktur noch nicht wirklich durchgestiegen ;)

rudi_m
24.06.05, 12:35
was wäre denn sinnvoll dem user für rechte zu geben, ich bin durch die linuxberechtigungsstruktur noch nicht wirklich durchgestiegen ;)

liess es Dir wirklich erstmal durch, z.B.
http://eva-marbach.net/handbuch/u-chmod.htm
http://www.google.com/search?q=rechte+chmod+gruppe&ie=UTF-8&oe=UTF-8

Dann finde heraus welche Dateien der apache lesen will
z.B /pfad/zu/einer/config.php
Du koenntest erstmal testweise ALLEN Usern Leserechte geben:
$ chmod o+r config.php
Allerdings ist das nicht so gut weil dann eben alle Deine user das passwort lesen koennen! Hackt jemand z.B den ftp server dann hat er Dein mysql passwort auch!

Aus Sicherheits gruenden ist es deshalb besser ueber ein System aus Gruppen/Eigentuemern nachzudenken.
Z.B eine gruppe "xyz-web" anlegen:
$ groupadd xyz-web
in /etc/group traegst Du dann user "www-data" als Mitglied ein
und machst
$ chown root:xyz-web config.php
$ chmod 640 config.php

Dann kann also nur "root" die Datei veraendern und www-data (und NUR er und root) kann lesen, weil er Mitglied der Gruppe xyz-web ist:
$ ls -l config.php
-rw-r----- 1 root xyz-web 0 2005-06-24 13:22 config.php
(Du kannst statt root auch eine anderen user nehmen der dann eben fuer die config dieser Webpage zustaendig ist)


Du koenntest auch einfach die Datei dem user "www-data" vermachen
$ chown www-data config.php
aber wenn nun jemand den apache hackt koennte er die Datei veraendern und moeglicherweise auf weitere Datenbanken zugreifen!
Also es lohnt sich ueber ein gutes Rechtekonzept nachzudenken!
Sicher gibt es schon ein Benutzer/Gruppen Grunderuest auf Deinem Debian - aber da Hilft nur Doku lesen ;)

daroon
24.06.05, 15:13
also...

Hab es zum laufen bekommen. Hat sich herausgestellt, dass es ein fehler im MySQL war. Tut mir leid, dass ich euch umsonst bemüht habe. Auf jeden
Fall habe ich aber jetzt die Artikel gelesen, und werde mir auch ein schlüssiges Sicherheitskonzept überlegen. Ich hoffe ihr helft mir wieder wenn ich mal wieder nicht weiter weiß, was sicherlich noch öfters der Fall sein wird nachdem ich jetzt Admin einer Linuxkiste bin :D

thx