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
-ecommand.Hello Aaron,
I thought it would be helpful to mention
zip --helpsince there are different flags for the different versions & distros, but I believe--helpis universal.For instance, my system / zip gives me
-efor encryption and~20other flags, but not-por-Pso I know not to bother with them.Thanks for the article & excuse to play with something new. 8)
@TODD
True,
zip --helpgives 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
-ewith 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.