我想在Ubuntu 10.04上使用tar命令创建一些tar.gz(可能还有tar.bz2)文件。

我想用密码保护文件。

是执行此命令的命令(我已经用Google搜索过,但未发现任何内容显示如何使用密码创建和提取压缩文件)。

任何人都知道如何执行此操作?

评论

另请参阅向Ubuntu询问此问题的答案。

#1 楼

您必须将unix理念应用到此任务:每个任务使用一个工具。

解压缩是targzipbzip2的工作,crypto是gpgopenssl的工作:

加密

 % tar cz folder_to_encrypt | \
      openssl enc -aes-256-cbc -e > out.tar.gz.enc


解密

 % openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz


或使用gpg

openssl-variant使用对称加密,您必须将使用的“密码”(也称为“密钥”)告知接收方。 gpg-variant结合使用了对称加密和非对称加密,您使用接收方的密钥(这意味着您不必告诉任何涉及到任何人的密码)来创建会话密钥并使用该密钥对内容进行加密。

如果使用zip(或7z)路由:本质上与openssl-variant相同,则必须告知接收方有关密码。

评论


对于任何想知道如何使用openssl解密文件的人:openssl aes-256-cbc -d -in out.tar.gz.enc -outcrypted.tar.gz

–ndbroadbent
13年1月28日在22:03

@ nathan.f77该命令还显示了如何在不将其传送到openssl的情况下执行操作。 openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc

–基思笑脸
2014年3月6日23:48

@KeithSmiley,如果您有大量的档案并且没有很多空间(例如可能在VPS上),则可以节省空间。

–安德鲁(Andrew Savinykh)
2014年6月2日23:15

我似乎无法在Mac上运行它。无论如何,这有什么不同吗?

– eleijonmarck
16 Dec 20'在20:46

@eleijonmarck提供以下部分“由于而无法使用” ...

– akira
16年12月21日在8:34

#2 楼

如果您只打算用密码保护文件,则可以通过命令行使用zip实用工具

zip -e <file_name>.zip <list_of_files>


-e要求zip实用工具对
中提到的文件进行加密/>
工作示例:

$ touch file_{0,1}.txt # creates blank files file_0 & file_1    
$ zip -e file.zip file_* # ask zip to encrypt
$ ENTER PASSWORD:
$ VERIFY PASSWORD:
$ ls file*


评论


Zip文件加密绝对不安全。

–克里斯托弗·艾夫斯(Kristopher Ives)
2014年5月2日在6:55

您可以详细说明@KristopherIves的不安全性吗?

–tscizzle
16年6月2日在22:26

@tscizzle unix-ag.uni-kl.de/~conrad/krypto/pkcrack/pkcrack-readme.html

–克里斯托弗·艾夫斯(Kristopher Ives)
16年4月4日在2:09

@KristopherIves它需要“另一个ZIP归档文件,其中至少包含来自加密归档文件的未加密格式的文件之一”。

–于富兰
16 Dec 30 '20:36

“您只需要知道一部分明文(至少13个字节)”。与要求使用整个未加密文件(这已经很糟糕)相比,它更容易受到攻击。另外,zip加密不能抵抗暴力攻击(例如,使用开膛手杰克)。没有人应该将其用于任何严重的事情。

–EM0
17年7月24日在15:41

#3 楼

这是几种方法。需要注意的一件事是,如果要使用单独的压缩和加密工具,则应始终在加密之前进行压缩,因为加密的数据本质上是不可压缩的。

这些示例压缩并加密一个名为clear_text

使用gpg

默认情况下,gpg将在加密之前压缩输入文件,-c表示使用带密码的对称加密。输出文件将是clear_text.gpg。使用gpg的一个好处是使用标准的OpenPGP格式,因此任何支持OpenPGP的加密软件都可以解密它。

使用mcrypt

$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress


-z选项会压缩。默认情况下,这会输出一个名为clear_text.gz.nc的文件。

使用bcrypt

$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress


bcrypt在默认加密之前进行压缩,-r选项是为了避免在执行过程中删除输入文件。默认情况下,输出文件名为clear_text.bfe

使用gzipaespipe

$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress


aespipe听起来像是一个需要输入的程序在stdin上并在stdout上输出AES加密数据。它不支持压缩,因此您可以先通过gzip传递输入。由于输出转到stdout,因此您必须将其重定向到使用您自己选择的名称的文件。可能不是最有效的方式来完成您要问的内容,但是aespipe是一种多功能工具,因此我认为值得一提。

#4 楼

您可以使用7zip创建受密码保护的存档。您可以通过以下方式在命令行(或脚本)中指定密码:

7z a -p<password> <someprotectedfile>.7z file1.txt file2.txt

7zip也可以从STDIN中读取,如下所示:

cat <somefile> | 7z a -si -p<password> <someprotectedfile>.7z

如果必须使用zip文件,则可能需要使用-t<type>参数(例如-tzip)。

评论


我选择这个作为答案,因为它是唯一回答问题的人。问题不是如何加密消息,而是如何对存档进行密码保护。这就是我要做的。 (Gmail阻止了我的服务器备份,因为它确定附件中存在某些不安全的内容,我只需要添加密码即可。它不必一定很安全。)

–追随
16-09-23在16:56

#5 楼

tar,gzip或bzip2都不支持密码保护。请使用压缩格式(例如zip),或使用其他工具(例如GnuPG)对其进行加密。

评论


啊,这解释了为什么我在网上找不到任何东西。我想我会去拉链。

–非晶
2010年7月12日在13:01

Gah !,我正在尝试使用passwors递归压缩目录,并且它仅创建名称为foobar的zip文件作为其中的(空)目录。这是我正在使用的命令:zip -e foobar.zip foobar。 foob​​ar是当前目录中的非空文件夹

–非晶
2010年7月12日在13:22

就像那个人说的那样,-r。

–伊格纳西奥·巴斯克斯(Ignacio Vazquez-Abrams)
2010年7月12日在13:24

#6 楼

使用以下内容创建:

tar czvf - directory | gpg --symmetric --cipher-algo aes256 -o passwordprotectedarchive.tar.gz.gpg


它会要求您输入密码。

解密: />

#7 楼

使用zipunzip

牢记受密码保护的zip文件的安全性问题,下面介绍了如何使用zip加密目录和文件:
zip -r --encrypt archive.zip a_directory a_file

提示输入密码。
要解密文件,可以使用unzip
unzip archive.zip

请参阅此答案以使用bsdtar加密和解密档案。