ZIP is a very popular compression and file packaging utility for Unix-like operating systems as well as Windows. While perusing through the zip man page, I discovered some useful options for protecting zip archives.
Read Also: How to Password Protect a Vim File in Linux
In this post, I will show you how to create a password protected zip file on the terminal in Linux. This will help you learn a practical way of encrypting and decrypting contents of zip archive files.
First install zip utility in your Linux distribution using the package manger as shown.
$ sudo yum install zip [On CentOS/RHEL] $ sudo dnf install zip [On Fedora 22+] $ sudo apt install zip [On Debian/Ubuntu]
How to Create Password Protected ZIP in Linux
Once installed, you can use the zip command with -p
flag to create a password protected zip archive called ccat-command.zip from the directory of files called ccat-1.1.0 as follows.
$ zip -p pass123 ccat-command.zip ccat-1.1.0/
However, the above method is absolutely insecure, because here the password is provided as clear-text on the command line. Secondly, it will also be stored in the history file (e.g ~.bash_history for bash), meaning another user with access to your account (more especially root user) will easily see the password.
Therefore, try to always use the -e
flag, it shows a prompt allowing you to enter a hidden password as shown.
$ zip -e ccat-command.zip ccat-1.1.0/
How to Unzip Password Protected ZIP in Linux
To unzip and decrypt the content of the archive file called ccat-command.zip, use the unzip program and provide the password you entered above.
$ unzip ccat-command.zip
That’s It! In this post, I described how to create a password protected zip file on the terminal in Linux. If you have any queries, or other useful related tip/tricks to share, use the comment form below ping us.
The example:
Does not work on a folder, as it only compresses the folder and not its content. Indeed, in the output of the example we can get a hint of this fact based on the “(stored 0%)”, which means that the archive is compressed down to 0%, i.e., no actual content.
To compress a folder and its content, encrypted, we need to add -r:
will work. We will notice it because we get a comprehensive output and a statement of how much deflation applied to each and every file.
This worked by me in Ubuntu:
zip --encrypt 2022-12-02_backup.zip -r folder_to_backup
.Be good!
@Jirka,
Thanks for sharing the tip, hope it will help other Linux users…
It is not worked! work this:
zip -P asdasdas archive.zip asdasdas
.Like others have said, needs to be recursive or a wildcard in the example you give.
It doesn’t work under cygwin, windows opens up the zip file without asking for a password. No protection whatsoever.
how to delete the existing password which we gave by zip
-e
command.Hello Aaron,
I thought it would be helpful to mention
zip --help
since there are different flags for the different versions & distros, but I believe--help
is universal.For instance, my system / zip gives me
-e
for encryption and~20
other flags, but not-p
or-P
so I know not to bother with them.Thanks for the article & excuse to play with something new. 8)
@TODD
True,
zip --help
gives more information on options.On Fedora 30, was necessary to:
@Bob
Many thanks for sharing.
Same under Debian 10
it should be
this wasted my 30 mins
@Prabhat,
In our case, the same command worked perfectly on Ubuntu distro, may be some options differ in different Linux distros…
Password option is uppercase P, not lowercase as shown above.
@dlchambers
Okay, many thanks for mentioning. We’ll correct in the article.
you did not changed yet..
@dlchambers,
Corrected the option in the article….
It doesn’t work option
-e
with your written method. Right syntax is:Do not forget about
"*"
at the end of line! Without"*"
zip makes an archive including all files and folder above ccat-1.1.0 folder.@Werner_Holt
Many thanks for this useful info, we will put this into consideration.
Something strange, maybe I caught the bug yesterday. Now, it is working! But only when the folder ccat-1.1.0 doesn’t include other folder inside. If it has folders with files and so on, you must use option
-r
(“recursive”).This way:
Do not work under root user! Without
"#"
.Sorry for my false warning before!
Thank you for your article!
Sorry for my English)). Of course “caught”, not “catched”!
Doesn’t work…
@Anon
Have you tried out both methods, explained in the article?
cheers!
I suggest the use of 7zip :)
@max
Thanks for the suggestion, we will check it out.