How to Create a Password Protected ZIP File in Linux

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/ 
Create Password Protected Zip File
Create Password Protected Zip File

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/ 
Create Password Protect Zip Archive
Create Password Protect Zip Archive

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 
Decrypt ZIP Archive
Decrypt ZIP Archive

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.

💡 Want to Level Up Your Linux Skills?

Check out Pro.Tecmint.com for ad-free reading, exclusive guides, downloadable resources, and certification prep (RHCSA, RHCE, LFCS) - all with lifetime access.

Aaron Kili
Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

26 Comments

Leave a Reply
  1. The example:

     # zip -e ccat-command.zip ccat-1.1.0/ 

    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:

     # zip -e -r ccat-command.zip ccat-1.1.0/ or # zip -er ccat-command.zip ccat-1.1.0/ 

    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.

    Reply
  2. It doesn’t work under cygwin, windows opens up the zip file without asking for a password. No protection whatsoever.

    Reply
  3. 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)

    Reply
    • @Prabhat,

      In our case, the same command worked perfectly on Ubuntu distro, may be some options differ in different Linux distros…

      Reply
  4. It doesn’t work option -e with your written method. Right syntax is:

     # zip -e ccat-command.zip ccat-1.1.0/* 

    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.

    Reply
      • 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:

         $ zip -e -r ccat-command.zip ccat-1.1.0/ 

        Do not work under root user! Without "#".

        Sorry for my false warning before!
        Thank you for your article!

        Reply

Got Something to Say? Join the Discussion...