Mit welchen Einstellungen kann der vsftpd-Fehler "500 OOPS: Verzeichnis kann nicht geändert werden" korrigiert werden?


13

Meine Frage ist, welche Einstellungen ich ändern und / oder welche Befehle ausführen muss, damit ich mich bei meinem vsftpd-System anmelden kann.

Ich erhalte diesen Fehler, wenn ich mich mit ftp anstelle von sftp anmelde:

Name (localhost:dbadmin): dbadmin
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/dbadmin
Login failed.
ftp> 

Dies funktioniert, wenn Sie sich mit sftp@anmelden, aber mein Server befindet sich hinter einer Firewall, und ich muss mich sowohl mit FTP als auch mit SFTP anmelden können.

Ich habe mir einige Posts über den "OOPS" -Fehler angesehen, hatte aber bisher kein Glück beim Anmelden.

Hier einige Informationen zu meinem System und meinen Einstellungen:

Ich verwende CentOS 6.4.

iptables und ip6tables werden gestoppt und deaktiviert.

Mein Home-Verzeichnis ist 700 geschützt, und ich habe 750 versucht, nur um zu sehen, ob das einen Unterschied macht. Es hat nicht.

Hier sind die aktiven Zeilen in /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

Mein Anmeldename befindet sich nicht in der Benutzerliste.


Sogar ich hatte das gleiche Problem.> Versuchen Sie, den Zugriff auf 775 zu ändern, es hat bei mir funktioniert.

Falls das Problem weiterhin auftritt, obwohl Sie Selinux deaktiviert haben, überprüfen Sie die Berechtigungen Ihres Verzeichnisses erneut. Hat Ihr FTP-Benutzer wirklich Rechte in diesem Ordner? oder Ist ein setgid-Bit am übergeordneten Element dieses Ordners gesetzt? Ein 's'-Bit im übergeordneten Ordner kann ein Problem verursachen, wenn Sie versuchen, einen neuen Ordner darunter zu erstellen.
Chatchai Mao

Antworten:


10

Führen Sie diesen einen Befehl aus, ohne dass ein Dienst und ein Server neu gestartet werden müssen:

# setenforce 0

So überprüfen Sie den SELinux-Status:

# getenforce

oder

bearbeiten Sie die Datei /etc/sysconfig/selinuxschließen

SELINUX=disabled

Dies erfordert einen Neustart.


3
Es ist interessant, dass ich vor anderthalb Jahren eine Drive-by-Down-Abstimmung für fast die gleiche Antwort erhalten habe.
Octopusgrabbus

7

Obwohl das Deaktivieren von SELinux durch SELINUX=disableddas Problem löst, ist dies nicht ratsam. Sie können dem FTP-Benutzer den Zugriff auf sein Ausgangsverzeichnis ermöglichen, ftp_home_dirindem Sie den booleschen Wert von SELinux konfigurieren, indem Sie den folgenden Befehl ausführen:

setsebool -P ftp_home_dir=1

Sind die Back Ticks notwendig oder das Ergebnis der Inline- und Blockformatierung von Code / Befehlen?
Anthon

Nein, die Backticks sind nicht erforderlich.
Suprjami

Dies sollte die beste Antwort sein, um das Problem zu lösen und zu vermeiden, dass die Sicherheitsstufe des gesamten Systems ohne SELinux gesenkt wird.
Tomofumi

Boolean ftp_home_dir ist nicht definiert?
Exlord

3

Sie können dem FTP-Daemon jederzeit den vollständigen Zugriff auf alle Dateien gewähren, indem Sie ihn ausführen

setsebool -P allow_ftpd_full_access 1

2

Ich habe Selinux deaktiviert, indem ich diese Anweisungen hier befolgt habe . Ich konnte mich ohne SFTP anmelden.

Um dauerhaft zu deaktivieren, habe ich bearbeitet /etc/selinux/configund eingestellt

SELINUX=disabled

Nach dem Neustart konnte ich mich normal anmelden.


2
Das Deaktivieren von SELinux ist ein Schritt zur Fehlerbehebung, um festzustellen, ob SELinux die Ursache des Problems ist, und keine endgültige Lösung. Sobald Sie festgestellt haben, dass SELinux die Ursache ist, sollten Sie in Ihren AVC-Ablehnungen nachsehen, welchen Booleschen Wert Sie ändern müssen, oder eine benutzerdefinierte Richtlinie mit den SELinux-Tools erstellen. Das dauerhafte Deaktivieren von SELinux ist keine gute Idee.
Suprjami

0

Wahrscheinlich hat der Benutzer keine Ausführungsberechtigungen für seinen Home-Ordner. Ausführen:

chmod +x /home/user

oder,

chmod 700 /home/user

0

Hoffe das könnte helfen.

local_root=/var/www/ftp/$USER
user_sub_token=$USER

1
Willkommen auf der Website und vielen Dank für Ihren Beitrag. Würde es Ihnen etwas ausmachen, weitere Erklärungen hinzuzufügen, wie (dh durch welchen Mechanismus) Ihre Antwort das ursprüngliche Problem löst? Dies könnte anderen, die mit einem ähnlichen Problem konfrontiert sind, mehr Einblick geben, warum sie dieses Problem überhaupt haben.
AdminBee

-1

Laufen setenforce 0wie eine andere Antwort vorgeschlagen hat bei mir nicht funktioniert.

Der folgende Befehl hat das Problem gelöst:

chmod -R 755 /home/dbadmin

(Bisher hatte das Verzeichnis / home / dbadmin 700 Berechtigungen.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.