ProFTP; Ordner für FTP freigeben

Fireball22

Registered User
Hallo,

ich würde gerne einen Ordner wie folgt für den FTP-Zugang freigeben.
FTP-Zugang auf diesen Ordner: /home/shoutcast

Mein bisheriges Vorgehen:
- useradd -d /home/shoutcast shoutcast
- chown -R shoutcast /home/shoutcast
- passwd shoutcast

Leider verweigert mir mein FTP-Programm bis jetzt aber immer den Zugriff, wegen falschen Zugangsdaten.

Code:
Host ftp.xxxxxxxxxxx wird gesucht...
Verbinden mit xxxxxxxx:21
Verbunden mit xxxxxxxxxx:21 in 0.093750 s, Warten auf Server-Antwort
220 ProFTPD 1.3.0 Server (ProFTPD) [xxxxxxxxxxxx]
Host type (1): Automatisch
USER shoutcast
331 Password required for shoutcast.
PASS (hidden)
530 Login incorrect.

Was hab ich falsch gemacht?

MfG
Michael
 
Die Antwort findest Du vermutlich in den Log-Files. Die Angaben, die Du im FTP-Client gesehen hast, sind absichtlich sehr sparsam, damit Einbrecher nicht an evtl. wertvolle Informationen gelangen können. In den Log-Files sollte deutlich mehr stehen!

Viele Grüße,
LinuxAdmin
 
Vielen Dank für deine Antwort!

Ich habe mich gerade mal nach der Error-Log umgeschaut, aber finde dort nirgends eine für ProFTP.
Ich habe bei Suse mal gesehen, dass er die dort auch in die /var/log/messages schreibt, aber da ändert sich leider auch nichts.

Wo finde ich denn die eigentliche Log dafür?

MfG
Michael
 
So, okay, dass ist die Config:

Code:
#
# To have more informations about Proftpd configuration
# look at : http://www.proftpd.org/
#

# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName                      "ProFTPD"
#ServerType                     standalone
ServerType                      inetd
DefaultServer                   on
<Global>
DefaultRoot     ~               psacln
AllowOverwrite on
AllowRetrieveRestart on
AllowStoreRestart on
</Global>
DefaultTransferMode     binary
UseFtpUsers                     on

# Port 21 is the standard FTP port.
Port                            21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           022

# 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

#Following part of this config file were generate by PSA automatically
#Any changes in this part will be overwritten by next manipulation
#with Anonymous FTP feature in PSA control panel.

#Include directive should point to place where FTP Virtual Hosts configurations
#preserved

ScoreboardFile /var/run/proftpd_scoreboard

# Primary log file mest be outside of system logrotate province

TransferLog /opt/psa/var/log/xferlog

#Change default group for new files and directories in vhosts dir to psacln

<Directory /var/www/vhosts>
        GroupOwner      psacln
</Directory>

# Enable PAM authentication
AuthPAM on
AuthPAMConfig proftpd

IdentLookups off
UseReverseDNS off

AuthGroupFile   /etc/group

Include /etc/proftpd.include

MfG
Michael

Nachtrag:

Diese Meldung habe ich gerade in der deamon.log gefunden:

Code:
Nov  1 23:28:30 hxxxxx in.proftpd[22084]: connect from xxxxxxxxx (xxxxxxxxxx)
Nov  1 23:28:30 hxxxxxx proftpd[22084]: hxxxxxx.serverkompetenz.net (xxxxxxxxx[xxxxxxxxxx]) - FTP session opened.
Nov  1 23:28:31 hxxxxxx proftpd[22084]: hxxxxxx.serverkompetenz.net (xxxxxxxxxxxx[xxxxxxxxxx]) - PAM(shoutcast): Authentication failure.

Mehr sagt die Meldung leider gar nicht aus, also dass die Zugangsdaten falsch sind. Aber das kann gar nicht sein, es ist genau das Passwort, welches ich per passwd festgelegt habe und der Username als FTP-Login.
 
Last edited by a moderator:
Aufn ersten Blick sehe ich nur das du Plesk installiert hast,
dass ProFTPd net Standalone sondern inetd läuft und dass ne FTP Gruppe chrooted ist.

Vielleicht muss dein FTP Benutzer in der Gruppe pascln oder so sein, damit du Zugriff per FTP hast.
 
Ja genau, das ist alles soweit richtig!

Ich habe jetzt gerade mal eben dem Ordner /home/shoutcast komplett der Gruppe pascln zugewiesen, nur leider funktioniert es immer noch nicht.

MfG
Michael
 
Die Authentifizierung über das PAM-Modul scheint nicht zu funktionieren.
Du kannst ja mal von Darren Tucker's Miscellaneous Patches den pam-test-harness (ziemlich weit unten) runterladen und kompilieren (Anleitung steht in der Datei) und das ganze dann mit
Code:
./pam-test-harness -u shoutcast -s ftpd
aufrufen. Der Test könnte Dir einen Hinweis darauf geben, an welcher Stelle es scheitert (Achtung: Das Passwort wird im Klartext ausgegeben...).

Ansonsten wäre es interessant die PAM-Konfiguration für den ftpd zu sehen (/etc/pam.d/ftpd -- je nach Distribution kann das auch wo anders liegen... Falls es das Verzeichnis gibt aber nicht die Datei "ftpd" wird "other" verwendet).

Viele Grüße,
LinuxAdmin
 
Vielen Dank für deine Hilfe!

Ich habe mal eben versucht das Programm auf meinem Server zum laufen zu bekommen, nur leider komme ich da nur bis zum Programmstart. Möchte ich das Programm starten (nachdem ich es bereits kompiliert habe), dann bekomme ich eine Reihe von Syntax-Fehlern.

Aber ich kann auf jeden Fall mal den Inhalt der proftpd in dem /etc/pam.d posten:

Code:
# Standard behaviour for ftpd(8).
auth    required        pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

# Note: vsftpd handles anonymous logins on its own.  Do not enable
# pam_ftp.so.

# Standard blurb.
@include common-account
@include common-session

@include common-auth
auth    required        pam_shells.so

other:

Code:
#
# /etc/pam.d/other - specify the PAM fallback behaviour
#
# Note that this file is used for any unspecified service; for example
#if /etc/pam.d/cron  specifies no session modules but cron calls
#pam_open_session, the session module out of /etc/pam.d/other is
#used.  If you really want nothing to happen then use pam_permit.so or
#pam_deny.so as appropriate.

# We fall back to the system default in /etc/pam.d/common-*
#

@include common-auth
@include common-account
@include common-password
@include common-session

(Ich hoffe ich hab das richtige gepostet, hab den Satz leider nicht ganz richtig verstanden. ;) )

MfG
Michael
 
Hm, komisch -- vermutlich ist da beim Kompilieren was schief gelaufen. Falls das Problem sich nicht anderwärtig lösen lässt, solltest Du nochmal versuchen den PAM-Testharness zum Laufen zu bekommen.

In der PAM-Configdatei, die Du gepostet hast, steht drin, dass der Benutzer nicht in /etc/ftpusers stehen darf und dass der Account eine gültige shell zugewiesen bekommen haben muss, die also in /etc/shells eingetragen ist. Das solltest Du mal überprüfen.
Die restlichen Bedingungen stehen in der Datei common-auth, deren Inhalt Du bisher hier nicht gepostet hast. Wenn Du Dich aber via putty als der Benutzer einloggen kannst, sollte der Inhalt aber in Ordnung sein.

Also, überprüfe als erstes mal die shell (im Zweifelsfall kannst Du die entsprechende Zeile aus /etc/passwd und den Inhalt von /etc/shells hier posten). Falls das nicht schon zum Erfolg führt, poste mal die Schritte, die Du zum Kompilieren des Testharness gemacht hast und das Ergebnis eines Programmstarts.

Viele Grüße,
LinuxAdmin
 
Vielen Dank nochmals für deine Hilfe!

So, ich hab jetzt mal eben die Shell für shoutcast gecheckt und da ist eig. eine gültige eintragen:

Code:
hxxxxx:~# finger shoutcast
Login: shoutcast                        Name:
Directory: /home/shoutcast/             Shell: /bin/sh
Never logged in.
No mail.
No Plan.

Ich hab mich vorhin auch mal mit "su shoutcast" angemeldet: Hat alles ohne Probleme geklappt.

In der /etc/ftpusers steht shoutcast nicht drin, soweit düfte auch alles okay sein.

Das ist jetzt mal die common-auth:

Code:
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
# traditional Unix authentication mechanisms.
#
auth [new_authtok_reqd=1 success=1 default=ignore] pam_unix.so nullok_secure
auth required pam_plesk.so try_first_pass
auth required pam_permit.so

Das ist jetzt mal der Inhalt der /etc/shells:

Code:
# /etc/shells: valid login shells
/bin/ash
/bin/bash
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/zsh
/bin/sash
/bin/zsh
/usr/bin/esh
/bin/dash
/bin/rbash
/usr/bin/screen
/opt/psa/bin/chrootsh
/bin/false

Und das ist der entsprechende Ausschnitt aus der passwd:

Code:
shoutcast:x:10009:2525::/home/shoutcast/:

Und den harness-Test habe ich mit "gcc filename.c" kompiliert.
Ich hoffe dass war der richtige Schritt?

MfG
Michael
 
"finger" scheint als default-Shell /bin/sh anzugeben... In dem Ausschnitt von /etc/passwd steht allerdings im letzten Feld (nach dem ':') nichts -- daher fällt wohl auch der PAM-Shell-Test durch.
Du musst also entweder die Datei /etc/passwd editieren und nach dem Doppelpunkt /bin/bash eintragen, oder besser das Programm "chsh" (s. [man]chsh[/man]) verwenden, um dem Benutzer eine gültige Shell zuzuweisen.

Viele Grüße,
LinuxAdmin

PS: In der Anleitung steht eigentlich Folgendes:
* Compile with:
* gcc pam-test-harness.c -o pam-test-harness -lpam
Wenn Du die Option '-o' weg lässt, wird nicht eine ausführbare Datei mit dem Namen 'pam-test-harness' erzeugt, sondern eine mit dem Namen 'a.out' (falls Du das '-lpam' auch weggelassen hast, wurde gar keine Datei erzeugt, sondern Fehlermeldungen ausgegeben...). Dementsprechend musst Du den Test dann eben mit
Code:
./a.out -u shoutcast -s ftpd
starten (oder statt 'ftpd' ein anderes PAM-Modul, das Du testen willst).
 
Vielen Dank für deine Hilfe!

Genau dass war es!
Ich hab jetzt grad eben eine Standart-Shell mit "chsh shoutcast" eingetragen und jetzt läuft alles perfekt! =)

Endlich funktioniert der FTP-Zugriff! =)

Und jetzt läuft auch der Test!

Vielen Dank nochmals für deine Hilfe, hätte das alleine wirklich nicht hinbekommen!

MfG
Michael
 
Back
Top