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.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

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.

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

19 Responses

  1. Namesh says:

    how to delete the existing password which we gave by zip -e command.

  2. Todd says:

    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)

  3. Bob Example says:

    On Fedora 30, was necessary to:

    # zip -P password -r zipfile.zip directory/
    
  4. Prabhat says:
    $ zip -e ccat-command.zip ccat-1.1.0/     is incorrect
    

    it should be

    $ zip -er ccat-command.zip ccat-1.1.0/
    

    this wasted my 30 mins

    • Ravi Saive says:

      @Prabhat,

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

  5. dlchambers says:

    Password option is uppercase P, not lowercase as shown above.

  6. Werner_Holt says:

    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.

    • Aaron Kili says:

      @Werner_Holt

      Many thanks for this useful info, we will put this into consideration.

      • Werner_Holt says:

        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!

  7. Anon says:

    Doesn’t work…

  8. max says:

    cheers!

    I suggest the use of 7zip :)

Leave a Reply to Richard Limanowski Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.