ffsend: Secure File Share From The Command Line (Firefox Send Client)
ffsend is a command line Firefox Send client that's currently in alpha, available for Linux, macOS and Windows (with only macOS and Linux binaries being available right now).
With ffsend you can easily and securely share files from the command line, by making use of a Send, a Firefox test pilot project.
Firefox Send is a file sharing experiment by Mozilla, which allows sending encrypted files to other users. 'Send' can be installed on your own server, or you can use the Mozilla-hosted send.firefox.com. The latter officially supports files up to 1 GB (but I could upload a 2GB file, as mentioned by the ffsend description), with each link expiring after a configurable download count (defaulting to 1 download) or 24 hours, while also deleting all the files from the Send server. Read more about the Send Firefox Test Pilot.
ffsend can both upload and download files, while the remote host can use either ffsend or a simple web browser (that doesn't have to be Firefox) to download the file.
One could always use the
send.firefox.com
web interface to upload and download files, but ffsend is intended for usage in scripts, without interaction. You can also use it for a quick file upload or download that doesn't require opening a web browser.While ffsend uses client-side encryption, ensuring that all files are encrypted before they are uploaded to the remote host, anyone with the link can download the file, so make sure you don't share it with unauthorized people. That's because the encryption secret, which is used to decrypt the file when downloading it, is included in the share URL.
An extra level of protection is available - you can password protect the file by appending
--password
when uploading a file using ffsend, or by setting the password after a file was uploaded, by using ffsend password URL -p YOUR-PASSWORD
.ffsend features:
- Upload and download files and directories. For directories, ffsend will offer to archive the contents before uploading it.
- Can be used with send.firefox.com (this is the default) or with your own Send host
- Client side encryption
- Configurable download limits (allows the file to be downloaded between 1 and 20 times)
- Password protection
- Built-in archiving and extracting
- History tracking of files for easy management
- Inspect or delete shared files
Downloading and using ffsend
While ffsend supports Linux, macOS and Windows, there are only macOS and Linux binaries for download right now. For Debian, Ubuntu, Linux Mint and other DEB-based Linux distributions, all you have to do is download and install the ffsend DEB package.
On other Linux distributions, like Fedora, etc., you can download the generic binary. For 64bit (most users), download the ffsend binary ending in
-linux-x64.tar.gz
, extract it and install it somewhere in your $PATH
, like /usr/local/bin
. Let's say you've extracted the .tar.gz
in the current folder - in this case you can install the ffsend binary in /usr/local/bin
using this command:sudo install ffsend /usr/local/bin/
Now you can upload a file like this:
ffsend upload <file.ext>
Replace
file.ext
with the file you want to upload.Want to download a file using ffsend? It's just as easy:
ffsend download <URL>
ffsend defaults to allowing 1 download per shared file, after which the file is deleted from the servers. To change this, use
--downloads NN
(where NN
is a number from 1 to 20) when uploading a file:ffsend upload --downloads <NN> <file.ext>
You can also change the number of allowed downloads for already uploaded files. To be able to do this, you must know the URL of the file you want to modify. You can see all shared URLs using:
ffsend history
Here's how the output looks like:
$ ffsend history
# LINK EXPIRY
1 https://send.firefox.com/download/e84e67e23c/#DYyvhlM9h1x1TAC9lJNUbw 23h59m
2 https://send.firefox.com/download/c7fa183352/#j90VHhSrcpx_2Xlb-LGeXg 5h20m
3 https://send.firefox.com/download/65716755f4/#wQaXbCgC2HOXvLrJVFc-Lw 4h58m
4 https://send.firefox.com/download/4fbd102676/#LocbOt6LEs-sQFG6CKPeLw 4h54m
5 https://send.firefox.com/download/fbe2a90d5b/#fJJ8NKsoJq0RRTRMSD3cVQ 3h6m
As you can see, command only lists the URLs and their expiry times, but not the file names. You can use the
info
command for more detailed information on an URL, like this:ffsend info <URL>
Here's with output:
$ ffsend info https://send.firefox.com/download/4fbd102676/#LocbOt6LEs-sQFG6CKPeLw
ID: 4fbd102676
Name: Fedora-Workstation-Live-x86_64-29-1.2.iso
Size: 1.80 GiB (1931477008 B)
MIME: application/octet-stream
Downloads: 0 of 1
Expiry: 4h53m (17613s)
Once you know the URL, you can change the allowed number of downloads until the link expires, by using this command:
ffsend parameters --download-limit <NN> <URL>
NN
being the number of allowed downloads before the link expires (between 1 and 20), and URL
the Send URL.Fore more on ffsend, see its README and check out
ffsend --help
.