SMB Stopped Working After a curl Upgrade? 8.23 Removed Support

After a curl upgrade, the script that pulled reports from a network share fails on its smb:// URL. Is there a build option to bring it back, and what replaces it?

SMB Stopped Working After a curl Upgrade? 8.23 Removed Support
TLDR
  • curl 8.23.0 removes transfers over both smb:// and smbs://.
  • Check the command-line tool and the libcurl loaded by your application separately.
  • A dedicated SMB client can take over share downloads.

Check for removal before changing build flags

If an upgrade leaves an SMB URL unsupported, check the curl version first. curl 8.23.0, released October 14, removes SMB support. Advice about enabling it in an older build no longer addresses this version.

The libcurl protocol option documentation explicitly records the removal of both SMB and SMBS in 8.23.0. Setting an allowlist to ALL cannot restore the implementation: the option selects among protocols the library already supports.

Check both the executable and the application's library

For a shell command, inspect the version and Protocols: output:

curl --version

This option identifies curl, its linked libcurl and supported protocols. It does not establish what a separate application loads. A PHP extension or another program may use a different library; the C API's curl_version_info() exposes that library's version and protocols list.

Older failures also need context. SMB became opt-in in 8.20.0, so a pre-8.23 build could already lack it. That build-dependent absence and the removal in 8.23 have different remedies.

Connect to the share, then retrieve the file

Samba's smbclient supports file transfers to and from SMB servers. With the client installed, an example connection to a share called reports on fileserver, using account alice, is:

smbclient '//fileserver/reports' -U alice

Enter the password when prompted. To download a file from the share root under a different local name, enter:

get report.csv report-copy.csv
exit

The first get argument names the remote file; the second names the local copy. Substitute your own server, share, account and file names. An unattended job also needs an authentication method that does not wait for an interactive prompt.

Old curl SMB support only covered SMB1

curl's earlier implementation supported SMB1, not SMB2 or SMB3. Its official advisory describes SMB1 as insecure and commonly disabled on servers. An old curl binary advertising SMB therefore was not enough to establish compatibility with a modern share.

smbclient defaults to its highest available SMB3 version as the protocol ceiling. Server and client settings still determine the connection. After moving the transfer, verify the share path, authentication and downloaded file. The practical change is choosing a client that still implements the required protocol.