How to use the command smbclient (with examples)
- Linux
- December 25, 2023
Smbclient is an FTP-like client used to access SMB/CIFS resources on servers. It allows users to interact with file shares, download/upload files, and perform various operations on SMB/CIFS servers. In this article, we will explore several use cases of the smbclient command and provide examples for each.
Use case 1: Connect to a share
Code:
smbclient //server/share
Motivation: The motivation for connecting to a share is to access the files and directories stored on the server. By connecting to a share, users can view, modify, and transfer files to and from the server.
Explanation:
smbclient
: The command to start the smbclient utility.//server/share
: The URL of the server and the share name to which you want to connect.
Example output:
Enter WORKGROUP\username's password:
Domain=[WORKGROUP] OS=[Windows Server 2012 R2 9600] Server=[Windows Server 2012 R2 6.3]
smb: \>
Use case 2: Connect with a different username
Code:
smbclient //server/share --user username
Motivation: The motivation for connecting with a different username is to authenticate as a different user and gain access to resources that are restricted to specific users.
Explanation:
--user username
: Specifies the username to use for authentication.
Example output:
Enter WORKGROUP\username's password:
Domain=[WORKGROUP] OS=[Windows Server 2012 R2 9600] Server=[Windows Server 2012 R2 6.3]
smb: \>
Use case 3: Connect with a different workgroup
Code:
smbclient //server/share --workgroup domain --user username
Motivation: The motivation for connecting with a different workgroup is when the server is part of a different workgroup, and you need to specify the appropriate workgroup to authenticate and access the resources.
Explanation:
--workgroup domain
: Specifies the workgroup/domain name to which the server belongs.--user username
: Specifies the username to use for authentication.
Example output:
Enter DOMAIN\username's password:
Domain=[DOMAIN] OS=[Windows Server 2016 Datacenter 14393] Server=[Windows Server 2016 Datacenter 6.3]
smb: \>
Use case 4: Connect with a username and password
Code:
smbclient //server/share --user username%password
Motivation: The motivation for connecting with a username and password is to authenticate using a specific password associated with the username. This is useful when multiple users share the same username but have different passwords.
Explanation:
--user username%password
: Specifies both the username and password for authentication.
Example output:
Domain=[WORKGROUP] OS=[Windows Server 2012 R2 9600] Server=[Windows Server 2012 R2 6.3]
smb: \>
Use case 5: Download a file from the server
Code:
smbclient //server/share --directory path/to/directory --command "get file.txt"
Motivation: The motivation for downloading a file from the server is to retrieve a specific file to the local machine for examination, editing, or further processing.
Explanation:
--directory path/to/directory
: Specifies the directory path on the server where the file is located.--command "get file.txt"
: Executes the command to download the specified file.
Example output:
Domain=[WORKGROUP] OS=[Windows Server 2012 R2 9600] Server=[Windows Server 2012 R2 6.3]
smb: \> get file.txt
getting file.txt as file.txt (0.0 KiloBytes/sec) (size 475 bytes)
Use case 6: Upload a file to the server
Code:
smbclient //server/share --directory path/to/directory --command "put file.txt"
Motivation: The motivation for uploading a file to the server is to transfer a local file to a specific directory on the server, making it accessible to others.
Explanation:
--directory path/to/directory
: Specifies the directory path on the server where the file should be uploaded to.--command "put file.txt"
: Executes the command to upload the specified file.
Example output:
Domain=[WORKGROUP] OS=[Windows Server 2012 R2 9600] Server=[Windows Server 2012 R2 6.3]
smb: \> put file.txt
putting file.txt as \path\to\directory\file.txt (0.0 KiloBytes/sec) (size 475 bytes)
Use case 7: List the shares from a server anonymously
Code:
smbclient --list=server --no-pass
Motivation: The motivation for listing the shares from a server anonymously is to explore the available shares on a server without requiring authentication.
Explanation:
--list=server
: Specifies the server from which you want to list the available shares.--no-pass
: Performs the listing anonymously without requiring a password.
Example output:
Sharename Type Comment
--------- ---- -------
share1 Disk Share 1
share2 Disk Share 2
IPC$ IPC Remote IPC
Conclusion:
In this article, we have explored various use cases of the smbclient command. We learned how to connect to a share, specify a different username and workgroup, download/upload files, and list available shares. Understanding these use cases will help you effectively utilize the smbclient command and interact with SMB/CIFS resources on servers.