Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk11 min

How to Fix “530 Login Incorrect” Errors in vsftpd on Linux

A vsftpd 530 Login incorrect reply can mean a PAM policy, locked account, invalid shell, or user-list rule—not just a bad password. Follow a log-first sequence to isolate each gate and fix chroot errors safely.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A vsftpd 530 Login incorrect response does not prove that the password is wrong. It means the server rejected authentication or an account-access policy. For a local Linux account, start by confirming local_enable=YES, then inspect the PAM service, account state, shell, and user-list rules while watching the logs. Treat chroot errors as a separate filesystem-isolation problem, not as a password problem.

What the 530 response actually tells you

FTP clients such as FileZilla usually show only the server’s final reply. The text 530 Login incorrect can be produced after a bad password, but it can also represent a disabled account, an expired account, a shell policy failure, a PAM rule, or a user-list decision. That is why repeatedly changing a known-good password often accomplishes nothing.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The useful question is not “Is the password right?” but “Which authentication gate rejected this login?” vsftpd evaluates several gates in sequence:

  • The daemon must be running and reading the configuration file you edited.
  • The selected authentication source must be enabled. Local Linux users need local_enable=YES.
  • The PAM service named by pam_service_name must exist and permit the account.
  • The Linux account must exist, be usable, and satisfy password, expiry, lock, and shell policies.
  • User-list settings can allow or deny a name before password verification.

Chroot settings are checked separately. A bad jail layout normally produces a different 500 OOPS refusal, although users often encounter it during the same troubleshooting session.

#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter | 4Pack Type C Female to A Male Cable Converter for Apple Duo 17 16 15 14 Plus,iWatch Watch 12 11 10,iPad 9 8 Air,Airpods 5 4
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

Start with a controlled five-minute triage

Use one test account and make one change at a time. This prevents a password reset, a PAM edit, and a chroot change from hiding the real cause.

  1. Confirm the service state. Run systemctl status vsftpd. A stopped or repeatedly crashing daemon must be fixed before credentials can work.
  2. Identify the active configuration. Check the service definition and your distribution’s documented path. The usual file is /etc/vsftpd.conf, but packaging can select another location. Editing an unused file has no effect.
  3. Reproduce one login. Attempt one connection with the exact Linux username, then immediately inspect the service and authentication logs.
  4. Classify the failure. A 530 points to authentication or access policy. A 500 message about a writable chroot points to jail permissions instead. A connection timeout or refusal is a service, firewall, DNS, or network issue rather than a credential verdict.
  5. Change only the gate indicated by evidence. Reload or restart vsftpd as appropriate, repeat the same test, and compare the new log entry with the previous one.

Do not begin by enabling every permissive option. A broad configuration change can make the login appear to work while weakening isolation or allowing accounts that should remain blocked.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Verify vsftpd is reading the settings you expect

Check the daemon and service definition

Run:

systemctl status vsftpd
systemctl cat vsftpd

The second command helps reveal the startup command, including a configuration-file argument or an alternate path. Confirm that the file you edit is the one the service starts with. If the service is managed under a distribution-specific unit name, use that unit consistently for status, reload, restart, and journalctl.

Enable local-user authentication

For accounts from the local Linux user database, the configuration must contain:

local_enable=YES

The Debian vsftpd manual states that this setting “must be enable[d] for any non-anonymous login to work, including virtual users.” In practical terms, a valid local password cannot succeed when local logins are disabled. Put the directive once in the active configuration, save it, and restart or reload the daemon according to your service-management practice.

Do not confuse login permission with upload permission

write_enable=YES controls operations that modify the server, such as uploads, renames, and directory creation. It is not required merely to authenticate a local user. Leave it disabled for a read-only service; enable it only when the use case needs writes and then apply filesystem permissions deliberately. Turning it on will not repair a 530 caused by PAM, a locked account, or a user-list rule.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Sale
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter | USB C Dongle with 90W Max Power Delivery, 3×5Gbps USB A Data Ports, for MacBook, Dell, and More (Charger Not Included)
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

Inspect PAM before changing passwords again

vsftpd delegates much of local authentication and account checking to Pluggable Authentication Modules (PAM). The service name is selected by pam_service_name. A typical configuration points to a file named vsftpd, which distributions commonly install as /etc/pam.d/vsftpd, but the configured name is authoritative.

Confirm the service name and file

Find the directive in the active vsftpd configuration:

grep -E '^[[:space:]]*pam_service_name' /etc/vsftpd.conf

Then inspect the corresponding PAM file. If the directive names ftp-auth, for example, inspect /etc/pam.d/ftp-auth rather than assuming the filename is vsftpd. A misspelled service name, a missing file, or a module that is not installed can cause every username and password pair to receive the same client-facing 530.

Read the PAM stack as a policy, not as a password prompt

Look for account and authentication modules, directory-service modules, and explicit deny rules. A PAM stack can reject an account after the password itself has been verified. It can also apply restrictions based on group membership, access times, directory-service status, or account expiration. Do not delete modules simply because their messages are unfamiliar; first determine what policy each line enforces and whether the module is available on the system.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Watch PAM and vsftpd while reproducing the failure

In one terminal, follow the service journal:

journalctl -u vsftpd -f

In another, watch the authentication log used by your distribution. Common locations include a system authentication log or the journal, but the exact file varies. Make one login attempt and correlate the timestamp, username, PAM module, and resulting status. Messages such as “account locked,” “authentication failure,” or “user unknown” distinguish different repairs even when FileZilla displays the same 530.

Validate the Linux account itself

Prove that the name resolves to an account

Check the account through the system’s configured name service:

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter | 85W Max PD, 2 USB 3.0 & 1 USBC Data Ports, SD/TF Card Reader, for Laptops/Mac and Other Type C Devices (Charger Not Included)
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
getent passwd username

This is preferable to looking only at /etc/passwd when the host uses a directory service. If no record is returned, vsftpd cannot authenticate that name as a local account. Check spelling, capitalization, and whether the client is sending an unintended domain-qualified name.

Check lock and expiry state

Inspect password status and account aging:

passwd -S username
chage -l username

Look for a locked password, an account-expiration date in the past, a password that has expired, or an inactivity limit that has elapsed. Unlock or extend the account only when that matches your access policy. If the account should remain disabled, the 530 is the expected result rather than a defect to bypass.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Verify the login shell policy

Retrieve the shell recorded for the account:

getent passwd username

The final field is the login shell. With shell checking enabled, vsftpd can require that shell to appear in /etc/shells. Accounts assigned /usr/sbin/nologin or another shell absent from that file may therefore be rejected even with a correct password. Compare the value carefully:

cat /etc/shells

Do not add an arbitrary shell globally just to make FTP work. A shell list is an account-access control. If the account is intended to be FTP-only, choose a policy that permits the required service while preventing unintended interactive access, and document the decision.

Reset a password only when the evidence calls for it

If logs show a genuine password failure and the account is otherwise permitted, set a new password through your normal administrative process and test once. A reset cannot fix a denied PAM account, a user-list exclusion, or a shell mismatch, so it should not be the first response to every 530.

Understand user-list rules and their reversed meanings

User-list settings are a frequent explanation for a known-good password being rejected. First find these directives in the active configuration:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray | Data transfer & Fast charging for MacBook, iPhone 17/16/15, iPad, Samsung Galaxy, Apple Watch
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
userlist_enable=YES
userlist_file=/path/to/file
userlist_deny=YES

If userlist_enable=YES, vsftpd reads the file named by userlist_file. The commonly used default is /etc/vsftpd.user_list, but use the configured path rather than assuming the default.

When userlist_deny=YES

Names in the file are denied. Depending on the configuration, the rejection can happen before vsftpd asks PAM to verify the password, so the client still sees a generic 530. Remove a name only when the account is meant to be allowed, and preserve the file’s ownership and permissions.

When userlist_deny=NO

The interpretation reverses: only names in the file are accepted. A user with a valid password but no entry is rejected. This allow-list model is often safer for a small service, but it requires an explicit entry for every permitted account.

Inspect both switches together

Never reason from userlist_enable alone. Read userlist_deny and the actual file contents together, including whitespace and spelling. After changing a list, reproduce one login and inspect the log to confirm that the request reached PAM rather than being stopped by the list.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Separate chroot failures from authentication failures

Chroot directives control filesystem isolation after login and have security consequences:

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/path/to/chroot-list

When chroot_local_user=YES, local users are, by default, placed in a chroot jail rooted at their home directory. The Debian-manual warning is explicit: this has security implications, particularly for users with upload permission or shell access.

Best Value
Sale
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display | 85W Max PD, 1 Powered USB-C 5Gbps & 2 Powered USB-A 3.0 5Gbps Data Ports, for MacBook Pro, MacBook Air, Dell and More (Black)
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Understand the list interaction

chroot_list_enable changes how chroot_list_file is interpreted in combination with chroot_local_user. Depending on the pair of settings, listed users can be the exceptions who are jailed or the exceptions who are not jailed. Read both directives and the list together; changing one without the other can jail the opposite group from the one you intended.

Fix a writable jail root safely

A common post-authentication error is:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Use a non-writable directory as the jail root and place a writable child directory inside it. For example, the user’s jailed root can be owned by root and set non-writable, while an incoming subdirectory receives upload permissions. This layout preserves the boundary between the directory that defines the jail and the directory where files may be created.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

allow_writeable_chroot=YES can suppress the refusal, but it is a deliberate security trade-off, not a universal repair. Enable it only after assessing who can upload, what process owns the jail, and whether a non-writable-root layout is feasible.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Use logs to identify the failing gate

Follow the system journal

journalctl -u vsftpd -f

Keep this running while making one login attempt. Stop following it only after the request’s timestamp and username have appeared. If the daemon logs a configuration parse error during restart, fix that before interpreting authentication messages.

Check the configured vsftpd log

When file logging is enabled, inspect /var/log/vsftpd.log or the path specified by the logging directives in your configuration. The file can show connection, command, and transfer context that is not obvious in the service journal.

Temporarily increase protocol detail

Enable protocol logging only for the shortest period needed to capture a reproducible failure. It can reveal the sequence of USER and PASS commands and the exact server reply, but it may expose usernames and operational details in logs. Disable it after diagnosis and protect any logs retained for auditing.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Interpret the evidence

  • No journal entry: the request may not be reaching this daemon, or the client may be connecting to a different host or service.
  • User-list message before PAM activity: resolve the list and deny/allow interpretation.
  • PAM authentication or account message: repair the named module, account state, directory-service policy, or shell condition.
  • Successful authentication followed by a 500 chroot refusal: fix the jail ownership and layout instead of changing credentials.

Choose settings according to the service you are building

Decision Option or model What it changes Evidence to verify
Authentication source Local Linux accounts Uses the host’s account database and PAM; requires local_enable=YES. getent passwd, PAM journal entries, and account-aging output.
Authentication source PAM-backed directory service PAM can apply directory, group, lock, and account policies beyond a local password. The selected PAM file and its module-specific log message.
Authentication source Virtual users Uses a virtual-user design rather than ordinary local shell accounts; the PAM service still determines policy. The configured PAM stack and the virtual-user backend’s account record.
Access control Deny list With userlist_deny=YES, names in the enabled list are refused. The configured list path, its contents, and the deny setting.
Access control Allow list With userlist_deny=NO, only names in the enabled list are accepted. Confirm every intended account is listed and observe a PAM attempt for one of them.
Filesystem isolation No local-user chroot Users are not jailed by the local-user chroot settings. The effective chroot directives and the user’s resulting path.
Filesystem isolation Chrooted local users Users are placed in a jail, with exceptions controlled by the chroot-list combination. Jail ownership, list semantics, and any post-authentication 500 error.
Write requirement Read-only service Leaves write_enable=NO when uploads and modifications are unnecessary. Successful login without write operations and filesystem permissions that remain non-writable.
Write requirement Upload-enabled service Uses write_enable=YES plus carefully scoped directory permissions. A writable child directory, a non-writable jail root where applicable, and a controlled upload test.

Why FileZilla may make the diagnosis look simpler than it is

FileZilla reports the server’s FTP reply, not the internal PAM decision. Verify that the client is using the intended host, port, protocol, username, and saved password, then perform one fresh login while watching the server logs. A stale saved credential can cause a real password failure, but changing client fields repeatedly will not overcome a server-side list, shell, lock, or PAM policy.

Keep transport troubleshooting separate from authentication troubleshooting. A 530 received after the server accepts the connection is different from a timeout, a refused TCP connection, or a TLS negotiation failure. Once the server logs show a user-list or PAM rejection, focus on that policy rather than passive-mode or transfer-directory settings.

A disciplined repair workflow

  1. Back up the active configuration before editing it, and record the original values of authentication, user-list, chroot, and write directives.
  2. Confirm the service unit and configuration path with systemctl status vsftpd and systemctl cat vsftpd.
  3. Set or verify local_enable=YES when the target is a local Linux account.
  4. Resolve pam_service_name to the correct file and read that PAM stack for account and authentication restrictions.
  5. Check the account with getent passwd, passwd -S, chage -l, and /etc/shells.
  6. Evaluate user-list behavior by reading both userlist_enable and userlist_deny, then inspecting the configured file.
  7. Reproduce one login under journalctl -u vsftpd -f and the system authentication log.
  8. Only after authentication succeeds, address chroot and write permissions. Make the jail root non-writable where possible and give write access to a child directory.
  9. Retest with a single account, then remove temporary protocol logging and keep only the least-permissive settings required by the service.

Final verification checklist

  • The running service is the one whose configuration you edited.
  • local_enable=YES is present for local or virtual-user logins.
  • The PAM service named by pam_service_name exists and has the intended modules.
  • The account resolves, is not locked or expired, and has a shell allowed by the host’s policy.
  • User-list enablement, file path, and deny/allow interpretation agree with the intended access model.
  • Logs show the login reaching the expected authentication gate.
  • Chroot ownership and writable directories are correct, with no unnecessary allow_writeable_chroot=YES.
  • Write access is enabled only when required and is tested in the intended directory.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.