Titel: mysql chroot funktioniert nicht... Beitrag von: scuba303 am 05. Februar 2004, 13:58:59 hallo. bei mir funktioniert der wechsel in das homedir nicht.
xxx.xxx.xxx.xxx - Preparing to chroot() the environment, path = '~/' xxx.xxx.xxx.xxx - ralph chroot("~/"): No such file or directory xxx.xxx.xxx.xxx - error: unable to set default root directory xxx.xxx.xxx.xxx - FTP session closed. also login selber funktioniert. muss ich meinem user eine gruppen & user id im table hinterlegen? und wie ist die homedir syntax richtig? also mit führenden / und end / (/user/homedir/) oder doch eher /user/homedir Titel: Re: mysql chroot funktioniert nicht... Beitrag von: stonki am 05. Februar 2004, 14:17:56 Zitat von: "scuba303" hallo. bei mir funktioniert der wechsel in das homedir nicht. xxx.xxx.xxx.xxx - Preparing to chroot() the environment, path = '~/' xxx.xxx.xxx.xxx - ralph chroot("~/"): No such file or directory xxx.xxx.xxx.xxx - error: unable to set default root directory xxx.xxx.xxx.xxx - FTP session closed. also login selber funktioniert. muss ich meinem user eine gruppen & user id im table hinterlegen? und wie ist die homedir syntax richtig? also mit führenden / und end / (/user/homedir/) oder doch eher /user/homedir Welches HomeDir hat denn der SQL User ? Welche UID. GID hat der SQL User ? Darf dieser User auf as Verzeichnis zugreifen ? Titel: mysql chroot funktioniert nicht... Beitrag von: scuba303 am 05. Februar 2004, 14:26:33 also, hab mal
DefaultRoot ~ !users auf DefaultRoot / !users geändert. da kriege ich dann immerhin ralph chdir("/home/das/ziel"): Permission denied also übernimmt er da die direcoty, die ich ihm in der db gebe. habe meinem user ralph uid und gid von dem user gegeben, dem das verzeichnis gehört. hatte es aber vor eh auf chmod 777 gesetzt. Titel: mysql chroot funktioniert nicht... Beitrag von: stonki am 05. Februar 2004, 14:54:38 Zitat von: "scuba303" also, hab mal DefaultRoot ~ !users auf DefaultRoot / !users geändert. da kriege ich dann immerhin ralph chdir("/home/das/ziel"): Permission denied also übernimmt er da die direcoty, die ich ihm in der db gebe. habe meinem user ralph uid und gid von dem user gegeben, dem das verzeichnis gehört. hatte es aber vor eh auf chmod 777 gesetzt. proftpd -n -d5 und Dir die Ausgabe anschauen. Titel: mysql chroot funktioniert nicht... Beitrag von: scuba303 am 05. Februar 2004, 15:07:55 Zitat xxx.xxx.xxx.xxx - FTP session opened. xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'USER ralph' to mod_tls xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'USER ralph' to mod_rewrite xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'USER ralph' to mod_core xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'USER ralph' to mod_core xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'USER ralph' to mod_auth xxx.xxx.xxx.xxx - dispatching CMD command 'USER ralph' to mod_auth xxx.xxx.xxx.xxx - no supplemental groups found for user 'ralph' xxx.xxx.xxx.xxx - dispatching POST_CMD command 'USER ralph' to mod_sql xxx.xxx.xxx.xxx - dispatching LOG_CMD command 'USER ralph' to mod_sql xxx.xxx.xxx.xxx - dispatching LOG_CMD command 'USER ralph' to mod_log xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'PASS (hidden)' to mod_tls xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'PASS (hidden)' to mod_rewrite xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'PASS (hidden)' to mod_core xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'PASS (hidden)' to mod_core xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'PASS (hidden)' to mod_wrap xxx.xxx.xxx.xxx - dispatching PRE_CMD command 'PASS (hidden)' to mod_auth xxx.xxx.xxx.xxx - dispatching CMD command 'PASS (hidden)' to mod_auth xxx.xxx.xxx.xxx - no supplemental groups found for user 'ralph' xxx.xxx.xxx.xxx - xxx.xxx.xxx.xxx - Config for SEVERNAME: xxx.xxx.xxx.xxx - /* xxx.xxx.xxx.xxx - Limit xxx.xxx.xxx.xxx - AllowAll xxx.xxx.xxx.xxx - Limit xxx.xxx.xxx.xxx - AllowAll xxx.xxx.xxx.xxx - AllowOverwrite xxx.xxx.xxx.xxx - HideNoAccess xxx.xxx.xxx.xxx - DisplayLogin xxx.xxx.xxx.xxx - DisplayFirstChdir xxx.xxx.xxx.xxx - HiddenStores xxx.xxx.xxx.xxx - DirFakeUser xxx.xxx.xxx.xxx - DirFakeGroup xxx.xxx.xxx.xxx - DirFakeMode xxx.xxx.xxx.xxx - SQLAuthTypes xxx.xxx.xxx.xxx - SQLAuthenticate xxx.xxx.xxx.xxx - SQLConnectInfo xxx.xxx.xxx.xxx - SQLDefaultGID xxx.xxx.xxx.xxx - SQLDefaultUID xxx.xxx.xxx.xxx - SQLMinUserGID xxx.xxx.xxx.xxx - SQLMinUserUID xxx.xxx.xxx.xxx - SQLLog_PASS xxx.xxx.xxx.xxx - SQLNamedQuery_counter xxx.xxx.xxx.xxx - SQLLog_RETR xxx.xxx.xxx.xxx - SQLLog_STOR xxx.xxx.xxx.xxx - SQLNamedQuery_transfer1 xxx.xxx.xxx.xxx - SQLLog_ERR_RETR xxx.xxx.xxx.xxx - SQLLog_ERR_STOR xxx.xxx.xxx.xxx - SQLNamedQuery_transfer2 xxx.xxx.xxx.xxx - AllowForeignAddress xxx.xxx.xxx.xxx - Umask xxx.xxx.xxx.xxx - MaxClientsPerHost xxx.xxx.xxx.xxx - MaxClients xxx.xxx.xxx.xxx - AllowStoreRestart xxx.xxx.xxx.xxx - AllowRetrieveRestart xxx.xxx.xxx.xxx - TransferLog xxx.xxx.xxx.xxx - RequireValidShell xxx.xxx.xxx.xxx - ServerIdent xxx.xxx.xxx.xxx - DeferWelcome xxx.xxx.xxx.xxx - DefaultServer xxx.xxx.xxx.xxx - DisplayLogin xxx.xxx.xxx.xxx - DisplayConnect xxx.xxx.xxx.xxx - DisplayFirstChdir xxx.xxx.xxx.xxx - HiddenStores xxx.xxx.xxx.xxx - DirFakeUser xxx.xxx.xxx.xxx - DirFakeGroup xxx.xxx.xxx.xxx - DirFakeMode xxx.xxx.xxx.xxx - AuthPAM xxx.xxx.xxx.xxx - SQLAuthTypes xxx.xxx.xxx.xxx - SQLAuthenticate xxx.xxx.xxx.xxx - SQLConnectInfo xxx.xxx.xxx.xxx - SQLDefaultGID xxx.xxx.xxx.xxx - SQLDefaultUID xxx.xxx.xxx.xxx - SQLMinUserGID xxx.xxx.xxx.xxx - SQLMinUserUID xxx.xxx.xxx.xxx - SQLUserTable xxx.xxx.xxx.xxx - SQLUsernameField xxx.xxx.xxx.xxx - SQLPasswordField xxx.xxx.xxx.xxx - SQLUidField xxx.xxx.xxx.xxx - SQLGidField xxx.xxx.xxx.xxx - SQLHomedirField xxx.xxx.xxx.xxx - SQLShellField xxx.xxx.xxx.xxx - SQLLog_PASS xxx.xxx.xxx.xxx - SQLNamedQuery_counter xxx.xxx.xxx.xxx - SQLLog_RETR xxx.xxx.xxx.xxx - SQLLog_STOR xxx.xxx.xxx.xxx - SQLNamedQuery_transfer1 xxx.xxx.xxx.xxx - SQLLog_ERR_RETR xxx.xxx.xxx.xxx - SQLLog_ERR_STOR xxx.xxx.xxx.xxx - SQLNamedQuery_transfer2 xxx.xxx.xxx.xxx - AllowForeignAddress xxx.xxx.xxx.xxx - Umask xxx.xxx.xxx.xxx - UserID xxx.xxx.xxx.xxx - UserName xxx.xxx.xxx.xxx - GroupID xxx.xxx.xxx.xxx - GroupName xxx.xxx.xxx.xxx - MaxClientsPerHost xxx.xxx.xxx.xxx - MaxClients xxx.xxx.xxx.xxx - AllowStoreRestart xxx.xxx.xxx.xxx - AllowRetrieveRestart xxx.xxx.xxx.xxx - IdentLookups xxx.xxx.xxx.xxx - TimeoutStalled xxx.xxx.xxx.xxx - TransferLog xxx.xxx.xxx.xxx - ExtendedLog xxx.xxx.xxx.xxx - ExtendedLog xxx.xxx.xxx.xxx - ExtendedLog xxx.xxx.xxx.xxx - DefaultRoot xxx.xxx.xxx.xxx - MaxLoginAttempts xxx.xxx.xxx.xxx - RequireValidShell xxx.xxx.xxx.xxx - CURRENT-CLIENTS xxx.xxx.xxx.xxx - USER xxx.xxx.xxx.xxx - USER ralph: Login successful. xxx.xxx.xxx.xxx - ralph chdir("/home/www/web2/html/fileadmin/kunden/dude"): Permission denied xxx.xxx.xxx.xxx - FTP session closed. Zitat # # Basic # ServerName "mein server" serverType standalone ServerAdmin meine@email.de # # Debug Level # emerg, alert, crit (empfohlen), error, warn. notice, info, debug # #SyslogLevel emerg #SystemLog /var/log/proftpd.system.log # # uncomment, if you want to hide the servers name: # ServerIdent on "mein server" DeferWelcome on DefaultServer on # # Display # DisplayLogin /messages/ftp.motd DisplayConnect /net/messages/ftp.pre DisplayFirstChdir index.txt HiddenStor off DirFakeUser on meinfake DirFakeGroup on meinfake DirFakeMode 0000 # Enable PAM for authentication... # AuthPAM on # Setting this directive to on will cause authentication to fail # if PAM authentication fails. The default setting, off, allows # other modules and directives such as AuthUserFile and friends # to authenticate users. # # AuthPAMAuthoritative on # This directive allows you to specify the PAM service name used # in authentication (default is "proftpd" on SuSE Linux). # You have to setup the service in the /etc/pam.d/<other_name>. # #AuthPAMConfig <other_name> # Port 21 is the standard FTP port. Port 9999 #------------------------mysql Modul: 4.x # # Zugangskontrolle # SQLAuthTypes Plaintext SQLAuthenticate users* SQLConnectInfo db@localhost user pass SQLDefaultGID 65534 SQLDefaultUID 65534 SQLMinUserGID 100 SQLMinUserUID 500 SQLUserInfo ftp username password uid gid homedir shell # # aktive SQL Kommandos, ab hier passiert etwas :-) # SQLLog PASS counter SQLNamedQuery counter UPDATE "letzter_zugriff=now(), count=count+1 WHERE username='%u'" ftp # xfer Log in mysql SQLLog RETR,STOR transfer1 SQLNamedQuery transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'c', NULL" xfer_stat SQLLOG ERR_RETR,ERR_STOR transfer2 SQLNamedQuery transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'i', NULL" xfer_stat #------------------------mysql # Port 21 is the standard FTP port. Port 9999 # disable listen on 0.0.0.0:21 - the port (and IP) should # be specified explicitly in each VirtualHost definition # #Port 0 # listen for each (additional) address explicitly that is # specified (via Bind and Port) in a VirtualHost definition # #SocketBindTight on # # FXP Unterstuetzung # AllowForeignAddress on # Umask 022 is a good standard umask to prevent new dirs # and files from being group and world writable. Umask 002 # Set the user and group that the server normally runs at. User nobody Group nogroup # Maximal Werte setzen MaxClientsPerHost 10 "Nicht mehr als %m Verbindungen" MaxClients 10 "Leider sind schon %m Clients verbunden" # RateReadBPS 5000 # RateReadFreeBytes 5000 # RateReadHardBPS on #Classes on #Class default limit 5 #Class internet limit 2 #Class local limit 3 #Class internet ip 0.0.0.0/0 #Class internet ip 192.168.99.99/24 #Class local ip 127.0.0.1/24 #Class local ip 192.168.0.0/24 # # Restart erlauben # AllowStoreRestart on AllowRetrieveRestart on # Normally, we want files to be overwriteable. <Directory /*> AllowOverwrite off HideNoAccess on <Limit READ> AllowAll </Limit> <Limit Write> # DenyAll AllowAll </Limit> </Directory> # It is a very good idea to allow only filenames containing normal # alphanumeric characters for uploads (and not shell code...) #PathAllowFilter "^[a-zA-Z0-9_.-]()'+$" #PathAllowFilter "^[a-zA-Z0-9 _.-]()'+$" # We don't want .ftpaccess or .htaccess files to be uploaded #PathDenyFilter "(\.ftp)|(\.ht)[a-z]+$" #PathDenyFilter "\.ftp[a-z]+$" # Do not allow to pass printf-Formats (security! see documentation!): #AllowFilter "^[a-zA-Z0-9@~ /,_.-]*$" #DenyFilter "%" # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # such as xinetd) MaxInstances 30 # Performance: skip DNS resolution when we process the logs... UseReverseDNS on # Turn off Ident lookups IdentLookups on # Set the maximum number of seconds a data connection is allowed # to "stall" before being aborted. TimeoutStalled 300 # Where do we put the pid files? ScoreboardFile /var/run/proftpd.scoreboard # # Logging options # TransferLog /var/log/proftpd.xferlog # Some logging formats # LogFormat default "%h %l %u %t \"%r\" %s %b" LogFormat auth "%v [%P] %h %t \"%r\" %s" LogFormat write "%h %l %u %t \"%r\" %s %b" # Log file/dir access ExtendedLog /var/log/proftpd.access_log WRITE,READ write # Record all logins ExtendedLog /var/log/proftpd.auth_log AUTH auth # Paranoia logging level.... ExtendedLog /var/log/proftpd.paranoid_log ALL default # # Do a chroot for web-users (i.e. public or www group), but # do not change root if the user is also in the users group... # DefaultRoot / !users # # Limit login attempts # MaxLoginAttempts 3 # # Users needs a valid shell # RequireValidShell off muss dir fake user ein real existierender user im system sein? also auf linux ebene? und muss ich die hier auch anpassen? SQLDefaultGID 65534 SQLDefaultUID 65534 SQLMinUserGID 100 SQLMinUserUID 500 Titel: mysql chroot funktioniert nicht... Beitrag von: stonki am 05. Februar 2004, 15:54:16 nimm a) mal die Defaultroot Direktive raus und dann schau Dir mal die Zeilen vom Debug log an:
ralph chdir("/home/www/web2/html/fileadmin/kunden/dude"): Permission denied Titel: mysql chroot funktioniert nicht... Beitrag von: scuba303 am 05. Februar 2004, 16:06:15 default root ist draussen, mit dem gleichen ergebnis.. :(
Titel: mysql chroot funktioniert nicht... Beitrag von: stonki am 05. Februar 2004, 16:30:21 Zitat von: "scuba303" default root ist draussen, mit dem gleichen ergebnis.. :( HAST DU DIR DIE (von mir gepostetete) DEBUG ZEILE ANGESCHAUT ! ? sonst: :root: :wink: Titel: mysql chroot funktioniert nicht... Beitrag von: scuba303 am 05. Februar 2004, 17:03:07 hi stonki,
steh ja etwas auf dem schlauch... also.. meinen user ralph gibt es nur in dem table, den ich für den proftpd mysql spass angelegt habe. deute jetzt mal dein root zugriff so, dass meine user ralph root rechte hat? also ziel meiner übung hier ist, dass ich später per typo3 einen frontend login machen kann, wo die kunden dateien uploaden können. wenn ich den login anlege, soll autmotisch in der db ein ftp user mit gleichen usernamen und passwort wie der login zum fe erstellt werden. daher wird mein homedir also im fileadmin/kunden liegen. ist das überhaupt so möglich, wie ich mir das hier vorstelle? nicht, dass ich voll auf dem holzweg bin... ;-) Titel: mysql chroot funktioniert nicht... Beitrag von: stonki am 05. Februar 2004, 17:06:26 Zitat von: "scuba303" hi stonki, steh ja etwas auf dem schlauch... also.. meinen user ralph gibt es nur in dem table, den ich für den proftpd mysql spass angelegt habe. deute jetzt mal dein root zugriff so, dass meine user ralph root rechte hat? also ziel meiner übung hier ist, dass ich später per typo3 einen frontend login machen kann, wo die kunden dateien uploaden können. wenn ich den login anlege, soll autmotisch in der db ein ftp user mit gleichen usernamen und passwort wie der login zum fe erstellt werden. daher wird mein homedir also im fileadmin/kunden liegen. ist das überhaupt so möglich, wie ich mir das hier vorstelle? nicht, dass ich voll auf dem holzweg bin... ;-) Hallo, AHH Typo3: http://www.stonki.de/Typo3.24.0.html :) Nein, das "ROOTZUGRIFF" meinte ich so, dass Du mir auch kurzzeitig mal root Zugriff geben kannst, damit ich mir das vorort anschaue. Mache ich oefters mal .. spart meist Zeit und Nerven. Und was Du Dir vorstellst sollte moeglich sein.... cu stonki Titel: mysql chroot funktioniert nicht... Beitrag von: scuba303 am 05. Februar 2004, 17:26:35 sie haben post.. ;-)
Titel: mysql chroot funktioniert nicht... Beitrag von: stonki am 06. Februar 2004, 13:19:54 so, um das Thema nun zu beenden und fuer das Archiv die Aufloesung zu bringen:
Das ganze hat nichts mit ProFTPD zu tun, sondern ist eine reine Linux (Unix) Angelenheit: Es muss darauf geachtet werden, das ein Verzeichnis auch fuer den User erreichbar ist. Dabei sind auch die Unterliegenden Verzeichnisse zu beachten. Ich erstelle mal einige Verzeichnisse test1 !--- test2 !---- test3 (alle gehoeren stonki.users, mit den Rechten 775) Code: stonki@database:~> cd test1/test2/test3/ stonki@database:~/test1/test2/test3> klappt problemlos. Nun aendere ich nur von test1 die rechte auf database:/home/stonki # ls -als | grep test1 0 drwxrwxr-x 3 stonki users 56 Feb 6 12:13 test1 database:/home/stonki # chown root.root test1 database:/home/stonki # chmod 700 test1 database:/home/stonki # ls -als | grep test1 0 drwx------ 3 root root 56 Feb 6 12:13 test1 Kann ich nun als User "stonki" noch immer das Verzeichnis test3 erreichen. Das gehoert ja noch immer mir... Selbst das Unterverzeichnis (test2) gehoert mir ja auch noch... Antwort: NEIN stonki@database:~> cd test1/test2/test3/ bash: cd: test1/test2/test3/: Permission denied stonki@database:~> Also das bitte beachten, wenn man mit Verzeichnissen arbeitet. cu stonki |