Dan Nanni 发布的文章

典型的数据文件通常关联着“元数据”,其包含这个文件的描述信息,表现为一系列属性-值的集合。元数据一般包括创建者名称、生成文件的工具、文件创建/修改时期、创建位置和编辑历史等等。几种流行的元数据标准有 EXIF(图片)、RDF(web资源)和DOI(数字文档)等。

虽然元数据在数据管理领域有它的优点,但事实上它会危害你的隐私。相机图片中的EXIF格式数据会泄露出可识别的个人信息,比如相机型号、拍摄相关的GPS坐标和用户偏爱的照片编辑软件等。在文档和电子表格中的元数据包含作者/所属单位信息和相关的编辑历史。不一定这么绝对,但诸如metagoofil一类的元数据收集工具在信息收集的过程中常最作为入侵测试的一部分被利用。

对那些想要从共享数据中擦除一切个人元数据的用户来说,有一些方法从数据文件中移除元数据。你可以使用已有的文档或图片编辑软件,通常有自带的元数据编辑功能。在这个教程里,我会介绍一种不错的、单独的元数据清理工具,其目标只有一个:匿名一切私有元数据

MAT(元数据匿名工具箱)是一款专业的元数据清理器,使用Python编写。它属于Tor旗下的项目,而且是Live 版的隐私增强操作系统 Trails 的标配应用。

与诸如exiftool等只能对有限种类的文件类型进行写入的工具相比,MAT支持从各种各样的文件中消除元数据:图片(png、jpg)、文档(odt、docx、pptx、xlsx和pdf)、归档文件(tar、tar.bz2)和音频(mp3、ogg、flac)等。

在Linux上安装MAT

在基于Debian的系统(Ubuntu或Linux Mint)上,已经打包好MAT,所以安装很直接:

$ sudo apt-get install mat

在Fedora上,并没有预先生成的MAT软件包,所以你需要从源码生成。这是我在Fedora上生成MAT的步骤(不成功的话,请查看教程底部):

$ sudo yum install python-devel intltool python-pdfrw perl-Image-ExifTool python-mutagen
$ sudo pip install hachoir-core hachoir-parser
$ wget https://mat.boum.org/files/mat-0.5.tar.xz
$ tar xf mat-0.5.tar.xz
$ cd mat-0.5
$ python setup.py install 

使用MAT-GUI匿名元数据

一旦安装好,通过GUI和命令行都可以使用MAT。输入这个命令启动MAT的GUI:

$ mat-gui

尝试清理一个包含如下内置元数据的实例文档文件(如private.odt)。

点击“添加”按钮来添加需要清理的文件到MAT中。一旦载入文件,点击“确认”按钮对所有隐藏的元数据信息进行扫描。

只要元数据被MAT检测到,“State”状态就会被标记成“Dirty”。双击文件可以查看检测到的元数据。

点击“清理”按钮来清除文件中的元数据。MAT会自动清空文件中的所有私有元数据字段。

清除后的状态中不包含任何私有可辨识的痕迹:

从命令行匿名元数据

$ mat -c .

正如前面提到的,另一种调用MAT的方式是从命令行,使用mat命令可达到。

为了检查任何敏感的元数据,先前往文件所在的目录,然后运行:

$ mat -c .

这样会扫描当前目录和其子目录下的所有文件,并报告它们的状态(已清理或未清理)。

你可以使用“-d”选项来查看检测到的真实元数据:

$ mat -d <input_file> 

如果不为mat命令提供任何选项,默认操作会移除文件的元数据。如果要在清理的过程中保留原始文件的备份,使用“-b”选项。下面命令会清除所有文件的元数据,并将原始文件存储为“*.bak”文件。

$ mat -b . 

查看所支持的文件类型,请运行:

$ mat -l 

故障排除

当前我在Fedora上使用编译版本的MAT遇到了下列问题。当我尝试在Fedora清除归档/文档文件的元数据时(如.gz、.odt、*.docx),MAT因为下列错误失败。如果你知道如何解决这个问题,请在评论里回复我。

  File "/usr/lib64/python2.7/zipfile.py", line 305, in __init__
    raise ValueError('ZIP does not support timestamps before 1980')
ValueError: ZIP does not support timestamps before 1980

总结

MAT是一款简单但非常好用的工具,用来预防从元数据中无意泄露私人数据。请注意如果有必要,文件内容也需要保护。MAT能做的是消除与文件相关的元数据,但并不会对文件本身进行任何操作。简而言之,MAT是一名救生员,因为它可以处理大多数常见的元数据移除,但不应该只指望它来保证你的隐私。[译者注:养成良好的隐私保护意识和习惯才是最好的方法]


via: http://xmodulo.com/2014/08/remove-file-metadata-linux.html

作者:Dan Nanni 译者:KayGuoWhu 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Linux命令行的强大在于其灵活及多样化,各个Linux命令都带有它自己专属的命令行选项和参数。混合并匹配这些命令,甚至还可以通过管道和重定向来联结不同的命令。理论上讲,你可以借助几个基本的命令来产生数以百计的使用案例。甚至对于浸淫多年的管理员而言,也难以完全使用它们。那正是命令行小抄成为我们救命稻草的一刻。

我知道联机手册页(man)仍然是我们的良师益友,但我们想通过我们能自行支配的快速参考卡让这一切更为高效和有目的性。最终极的小抄可能被自豪地挂在你的办公室里,也可能作为PDF文件隐秘地存储在你的硬盘上,或者甚至设置成了你的桌面背景图。

做为一个选择,也可以通过另外一个命令来访问你最爱的命令行小抄。那就是,使用cheat。这是一个命令行工具,它可以让你从命令行读取、创建或更新小抄。这个想法很简单,不过cheat经证明是十分有用的。本教程主要介绍Linux下cheat命令的使用方法。你不需要为cheat命令做个小抄了,它真的很简单。

安装Cheat到Linux

首先,如果你还没有Git,那么就安装一个吧:

$ sudo apt-get install git (Debian-based system)
$ sudo yum install git (RedHat-based system)

同时,安装Python包安装器pip

最后,使用下列命令来安装cheat。

$ sudo pip install docopt pygments
$ git clone https://github.com/chrisallenlane/cheat.git
$ cd cheat
$ sudo python setup.py install 

配置Cheat

cheat命令并不需要太多配置。

一个推荐的配置是启用命令行补全功能。那样,当你查询一个小抄时,就可以使用[TAB]键来自动补全你想要查看的命令名称了。以下操作可以启用bash下的自动补全功能。

$ wget https://github.com/chrisallenlane/cheat/raw/master/cheat/autocompletion/cheat.bash
$ sudo cp cheat.bash /etc/bash_completion.d/

他们也提供了用于其它shell的自动补全脚本,像zsh和fish也有。

另外一个要做的事是定义EDITOR环境变量。该变量应该指向创建或更新小抄时你想要用的文本编辑器。例如,如果你想要使用Vim编辑器,那就把下面的内容放进~/.bashrc。

export EDITOR=/usr/bin/vim

注销并重新登录进来,以激活自动补全功能并更新.bashrc。

Cheat基本用法

cheat命令一个很酷的事是,它自带有超过90个的常用Linux命令的内建小抄。查看可用的小抄列表:

$ cheat -l 

要访问某个指定命令的小抄,只要运行cheat命令,后面跟上该命令的名称:

$ cheat <command-name> 

你可以通过使用“-s”选项,在所有小抄中搜索包含有指定关键词的内容:

$ cheat -s <keyword> 

在许多情况下,小抄适用于某些人,而对另外一些人却没什么帮助。要想让内建的小抄更具个性化,cheat命令也允许你创建新的小抄,或者更新现存的那些。要这么做的话,cheat命令也会帮你在本地~/.cheat目录中保存一份小抄的副本。

要使用cheat的编辑功能,首先确保EDITOR环境变量设置为你默认编辑器所在位置的完整路径。然后,复制(不可编辑)内建小抄到~/.cheat目录。你可以通过下面的命令找到内建小抄所在的位置。一旦你找到了它们的位置,只不过是将它们拷贝到~/.cheat目录。

$ cheat -d 

/usr/lib/python2.6/site-packages/cheat/cheatsheets

$ cp /usr/lib/python2.6/site-packages/cheat/cheatsheets/* ~/.cheat

现在,你可以使用“-e”选项来创建或更新一个小抄了:

$ cheat -e openssl 

正如你所能想象的,cheat的编辑功能十分有用,可以帮助你剪裁本地小抄库以满足你的需要。如果你深信知识分享,贡献你的小抄到cheat命令的官方Git仓库中,你会更加受欢迎,这样大家都能从中受益。


via: http://xmodulo.com/2014/07/access-linux-command-cheat-sheets-command-line.html

作者:Dan Nanni 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

近来很多知名企业都出现了密码泄露,业内对多重认证的呼声也越来越高。在这种多重认证的系统中,用户需要通过两种不同的认证程序:提供他们知道的信息(如 用户名/密码),再借助其他工具提供用户所不知道的信息(如用手机生成的一次性密码)。这种组合方式常叫做双因子认证或者两阶段验证。

为了鼓励广泛采用双因子认证的方式,Google 公司发布了 Google 身份验证器 Google Authenticator ,一款开源的,可基于开放规则(如 HMAP/ 基于时间)生成一次性密码的软件。这是一款跨平台软件,可运行在 Linux、 AndroidiOS。Google 公司同时也支持插件式鉴别模块PAM (pluggable authentication module),使其能和其他也适用 PAM 进行验证的工具(如 OpenSSH)协同工作。

在本教程中,我们将叙述集成 OpenSSH 和 Google 提供的身份验证器实现如何为 SSH 服务设置双因子认证。我将使用一款 Android 设备来生成一次性密码,本教程中需要两样武器:

(1) 一台运行着 OpenSSH 服务的 Linux 终端,

(2) 一台安卓设备。

在 Linux 系统中安装 Google 身份验证器

第一步需要在运行着 OpenSSH 服务的 Linux 主机上安装 Google 身份验证器。按照如下步骤安装 Google 身份验证器及其PAM模块。

用安装包安装 Google 身份验证器

如果你不想自己构建 Google 身份验证器,在几个 Linux 发行版上有已经编译好的安装包。安装包里面包含 Google 身份验证器 二进制程序和 PAM 模块。

在 Ubuntu 上安装 Google 身份验证器:

$ sudo apt-get install libpam-google-authenticator

在 Fedora 上安装 Google 身份验证器:

$ sudo yum install google-authenticator

在 CentOS 上安装 Google 身份验证器 ,需要首先启用 EPEL 软件库,然后运行如下命令(LCTT 译注:EPEL 库中可能已经删除了该软件包,请使用源代码编译方式安装):

$ sudo yum install google-authenticator

如果不想使用已经编译好的安装包,或者你的 Linux 发行版不在此列,可以自行编译:

在 Linux 上编译 Google 身份验证器

首先,安装构建 Google 身份验证器所需的软件包。

在 Debian、 Ubuntu 或 Linux Mint 上:

$ sudo apt-get install wget make gcc libpam0g-dev

在 CentOS、 Fedora 或 RHEL上:

$ sudo yum install wget make gcc pam-devel

然后下载 Google 身份验证器的源代码,并按如下命令编译(已经从 Google Code 迁移到了 Github)。

$ wget https://github.com/google/google-authenticator/archive/master.zip
$ unzip master.zip
$ cd google-authenticator-master/libpam
$ ./bootstrap.sh
$ ./configure
$ make

如果构建成功,你会在目录中看到 pam_google_authenticator.sogoogle-authenticator 两个文件。

最后,将 Google 身份验证器安装到合适位置。默认会安装到 /usr/local/lib/security 下,根据你的系统不同,你可能需要将其符号链接到 pam 库的位置(比如 CentOS 7 会在 /usr/lib64/security)。

$ sudo make install

排错

当编译 Google 身份验证器时出现如下错误:

fatal error: security/pam_appl.h: No such file or directory

要修复这个问题,请安装如下依赖包。

在 Debian、 Ubuntu 或 Linux Mint 上:

$ sudo apt-get install libpam0g-dev

在 CentOS、 Fedora 或 RHEL 上:

$ sudo yum install pam-devel

当 Google 身份验证器安装好后,你需要在 Linux 主机上创建验证密钥,并且在安卓设备上注册,注意这项配置操作是一次性的。我们将详细叙述如何完成这些操作:

生成验证密钥

在 Linux 主机上运行 Google 身份验证器:

$ google-authenticator 

你将看到一个二维码,它使用如下图形表示我们数字形态的密钥。一会我们要用到它在安卓设备上完成配置。

Google 身份验证器会问一些问题,如果你不确定,就回答 Y。这个应急备用验证码(图中 emergency scratch codes)可以在你由于丢失了绑定的安卓设备的情况下(所以不能得到生成的一次性密码)恢复访问。最好将应急备用验证码妥善保存。

在安卓设备上运行 Google 身份验证器

我们需要在安卓设备上安装 Google 身份验证器应用才能完成双因子认证,到 Google Play 下载并安装一个。在安卓设备上运行 Google 身份验证器,找到下图所示中的配置菜单。

你可以选择“Scan a barcode” 或者“Enter provided key”选项。“Scan a barcode”允许你扫描二维码来完成密钥的输入,在此可能需要先安装扫描软件 Barcode Scanner 应用。如果选择“Enter provided key”选项,你可以使用键盘输入验证密钥,如下图所示:

无论采用上述两种选项的任何方式,一旦成功,你将看到注册成功提示和一次性密码,如下图所示:

为 SSH 服务器用 Google 身份验证器

最终我们需要修改两个文件来完成集成 Google 身份验证器和 OpenSSH 服务这临门一脚。

首先,修改 PAM 配置文件,命令和需添加的内容如下:

$ sudo vi /etc/pam.d/sshd 

auth required pam_google_authenticator.so

然后打开 SSH 配置文件,找到参数 ChallengeResponseAuthentication,并启用它。

$ sudo vi /etc/ssh/sshd_config 

ChallengeResponseAuthentication yes

最后,重启 SSH 服务。

在 Ubuntu、 Debian 和 Linux Mint 上:

$ sudo service ssh restart 

在 Fedora (或 CentOS/RHEL 7)上:

$ sudo systemctl restart sshd 

在 CentOS 6.x或 RHEL 6.x 上:

$ sudo service sshd restart 

不要退出当前的 ssh 链接,大多数 Linux 发行版重启 ssh 服务并不会中断当前已经建立的 ssh 连接。另外开个窗口去重新连接 ssh 服务,如果遇到问题,还可以在原来的 ssh 连接下修改和恢复。

验证双因子认证

在绑定的安卓设备上运行 Google 身份验证器,获得一个一次性验证码,该验证码 30 秒内有效,一旦过期,将重新生成一个新的验证码。

现在和往常一样,使用 SSH 登录终端

$ ssh user@ssh_server 

当提示你输入验证码的时候,输入我们刚获得的验证码。验证成功后,再输入 SSH 的登录密码。

双因子认证通过在用户密码前新增一层来有效的保护我们脆弱的用户密码。你可以使用 Google 身份验证器来保护我们其他的密码,如 Google 账户、GitHub、WordPress.com、Dropbox.com、Outlook.com等等。是否使用这项技术,取决于我们自己,但采用双因子认证已经是行业的大趋势了。


via: http://xmodulo.com/2014/07/two-factor-authentication-ssh-login-linux.html

译者:nd0104 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

【编者注】:本文译文完成之后不久,OneDrive 就成了中国人的昨日黄花了。编者想了想,还是发出来罢,仅以此文纪念我们逝去的这个、那个、以及这些和那些。也许若干年后我们回忆起来,我们曾经有过那么多那些,而当时却挑三拣四,没有珍惜,如果再给我一次机会……


OneDrive(以前称为SkyDrive)是微软的一个广受欢迎的云存储产品。目前OneDrive为每一个新注册用户提供7GB免费存储空间。正如你所想,OneDrive与微软其他软件产品很好地集成。微软还提供了一个独立的OneDrive客户端,它会自动备份照相机拍摄的图片和视频到OneDrive。但你猜怎么着。该客户端可用于除Linux的各大PC/移动平台。

“OneDrive在任何设备,任何时间”?哦,不,这还不行。

不过不要失望。开源社区已经已经拿出了解决方案。 Boilermaker写的onedrive-d可以完成这项工作。作为监测守护进程运行,onedrive-D可自动将本地文件夹同步到OneDrive云存储。

I在本教程中,我将介绍如何在Linux上使用onedrive-d同步微软OneDrive

在linux上安装onedrive-d

虽然onedrive-d最初是为Ubuntu/ Debian开发的,但它仍然支持CentOS/ Fedora/ RHEL。

安装就像输入下面的命令一样容易。

$ git clone https://github.com/xybu92/onedrive-d.git
$ cd onedrive-d
$ ./inst install

第一次配置

安装之后,你需要进行一次性配置来授予onedrive-d对您OneDrive账户的读/写权限。

首先,创建将用于对远程OneDrive账户同步的本地文件夹。

$ mkdir ~/onedrive

接着运行下面的命令开启一次性配置。

$ onedrive-d

它接着会弹出如下onedrive-d的设置窗口。在“Location”选项中,选择你之前创建的本地文件夹。在“Authentication”选项中,你会看见“You have not authenticated OneDrive-d yet”(“你还没有授权OneDrive-d”)的信息。现在点击"Connect to OneDrive.com"按钮。

它会弹出一个新窗口来要求你登录OneDrivecom。

登录OneDrive.com之后,你会被要求授权onedrive-d访问。选择“Yes”。

回到先前的设置窗口,你会看到之前的状态已经变成了You have connected to OneDrive.com"(“你已经连接到了OneDrive.com”)。点击“OK”完成。

与OneDrive同步一个本地文件夹

这里有两种方法来使用onedrice-d将本地文件夹与OneDrive存储同步。

一种是“手动使用命令行来同步OneDrive”。就是当你需要与你的OneDrive账户同步时运行如下命令:

$ onedrive-d

onedrive-d接着将扫描本地文件夹与OneDrive帐户的内容并使两者同步。这意味着要么上传一个在本地文件夹新添加的文件,或者从远程OneDrive帐户下载最新发现的文件。如果你从本地文件夹删除任何文件,相应的文件将自动在与OneDrive帐户同步后被删除。反之亦然。

一旦同步完成,你可以使用Ctrl-C中断onedirve-d的前台进程。

另一种方法是将onedrive-d作为一个始终运行的守护进程在开机时自动启动。在这种情况下,后台守护进程会同时监视本地文件夹和OneDrive账户,以使它们保持同步。要做到这一点,只需将onedrive-D加入到你桌面的自动启动程序列表中就行了。

当onedrive-D作为守护进程在后台运行时,你会在桌面状态栏中看到OneDrive图标,如下图所示。每当同步更新被触发,你就会看到一个桌面通知。

要注意的是:根据作者所言,onedrive-d仍在积极开发中。这并不能用于任何形式的生产环境。如果您遇到任何bug,请随时提交一份bug报告。你的贡献,笔者将不胜感激。


via: http://xmodulo.com/2014/06/sync-microsoft-onedrive-linux.html

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出