Jakie są ustawienia, aby naprawić błąd vsftpd „500 OOPS: nie można zmienić katalogu”?


14

Moje pytanie brzmi: jakie ustawienia muszę zmienić i / lub polecenia, aby uruchomić, aby umożliwić mi zalogowanie się do systemu vsftpd?

Otrzymuję ten błąd, gdy loguję się przy użyciu ftp zamiast sftp:

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

Działa to podczas logowania przy użyciu sftp@, ale mój serwer znajduje się za zaporą ogniową i muszę być w stanie zalogować się przy użyciu ftp oraz sftp.

Patrzyłem na kilka postów na temat błędu „OOPS”, ale jak dotąd nie udało mi się zalogować.

Oto kilka informacji o moim systemie i ustawieniach:

Używam CentOS 6.4.

iptables i ip6tables są zatrzymywane i wyłączane.

Mój katalog domowy jest chroniony 700, a próbowałem 750, aby zobaczyć, czy to miało znaczenie. To nie mialo miejsca.

Oto aktywne linie w /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

Mojego loginu nie ma na liście_użytkowników.


Nawet ja napotkałem ten sam problem ..> Spróbuj zmienić dostęp na 775, zadziałało to dla mnie.

Jeśli problem nadal występuje, nawet jeśli wyłączyłeś selinux, sprawdź ponownie uprawnienia swojego katalogu. Czy twój użytkownik ftp naprawdę ma prawa do tego folderu? lub Czy jakikolwiek bit setgid jest ustawiony na rodzic tego folderu? Bit „a” w folderze nadrzędnym może powodować problem, jeśli spróbujesz utworzyć nowy folder poniżej.
Chatchai Mao,

Odpowiedzi:


10

Uruchom to jedno polecenie, nie musisz restartować żadnej usługi i serwera:

# setenforce 0

Aby sprawdzić status SELinuksa:

# getenforce

lub

edytuj plik, /etc/sysconfig/selinuxaby dołączyć

SELINUX=disabled

Może to wymagać ponownego uruchomienia komputera.


3
Interesujące jest to, że półtora roku temu zagłosowałem na mniej więcej taką samą odpowiedź.
octopusgrabbus

7

Chociaż wyłączenie SELinux przez SELINUX=disabledrozwiązuje problem, nie byłoby to wskazane. Możesz umożliwić użytkownikowi ftp dostęp do jego katalogu domowego, konfigurując wartość logiczną SELinux ftp_home_dir, uruchamiając następującą komendę:

setsebool -P ftp_home_dir=1

Czy konieczne są znaczniki wsteczne, czy też wynikowe formatowanie kodu / poleceń w linii i blokach?
Anthon

Nie, backticks nie są konieczne.
suprjami

powinna to być najlepsza odpowiedź na rozwiązanie problemu, aby uniknąć obniżenia poziomu bezpieczeństwa całego systemu bez SELinuksa.
Tomofumi,

Boolean ftp_home_dir nie jest zdefiniowany?
Exlord

3

zawsze możesz zezwolić demonowi FTP na pełny dostęp do wszystkich plików poprzez uruchomienie

setsebool -P allow_ftpd_full_access 1

2

Wyłączyłem selinux, wykonując te instrukcje tutaj . Mogłem się zalogować, nie używając sftp.

Aby wyłączyć na stałe, edytowałem /etc/selinux/configi ustawiałem

SELINUX=disabled

Po ponownym uruchomieniu mogłem zalogować się normalnie.


2
Wyłączenie SELinuksa jest krokiem rozwiązywania problemów służącym ustaleniu, czy przyczyną jest problem, a nie ostatecznym rozwiązaniem. Po ustaleniu, że przyczyną jest SELinux, powinieneś sprawdzić swoje odmowy AVC i ustalić, które wartości logiczne należy zmienić, lub stworzyć niestandardową politykę za pomocą narzędzi SELinux. Trwałe wyłączenie SELinux nie jest dobrym pomysłem.
suprjami

0

Prawdopodobnie użytkownik nie ma uprawnień do wykonywania swojego folderu domowego. Wykonać:

chmod +x /home/user

lub,

chmod 700 /home/user

0

Mam nadzieję, że to może pomóc.

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

1
Witamy na stronie i dziękuję za Twój wkład. Czy mógłbyś dodać więcej wyjaśnień, w jaki sposób (tj. Za pomocą jakiego mechanizmu) Twoja odpowiedź rozwiązuje pierwotny problem? Może to dać innym w obliczu podobnego problemu lepszy wgląd w to, dlaczego mają ten problem w pierwszej kolejności.
AdminBee

-1

Uruchamianie setenforce 0jako sugerowana inna odpowiedź nie działało dla mnie.

Następujące polecenie rozwiązało problem:

chmod -R 755 /home/dbadmin

(Wcześniej katalog / home / dbadmin miał 700 uprawnień).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.