如何用VIM和SHELL在Linux下打造一个安全日记系统

我有写日记的习惯,曾经还开发过简单的web程序,用来保存我的日记。但那样的程序太复杂了,自己一个人用,维护系统很累。于是我就想到了linux里的vim。

一、设计目标

  1. 日记要足够安全,文件要加密,一般人找不到日记系统。
  2. 操作简单,方便使用。

二、核心思路

用vim的加密方式写日记。同时把日记系统隐藏的深一点。

三、具体步骤

1.  把日记文件隐藏。在U盘中安装一套最简单的linux系统,是否有图形界面无所谓,因为我们只用到vim(或者vi),设置好linux系统密码。现在windows可以安装WSL了,也就是在windows安装一个linux子系统,用起来跟真linux差不多,不方便用U盘装系统的,也可以使用WSL来做。但WSL的文件系统和windows是共通的,如果你的日记文件没加密,安全性就不高。

2. 三道密码。默认情况下是以普通用户登录linux的,需要一个密码。但不要在这个账户下协作。用普通用户登录后,执行su,进入root用户,这时还需要输入一道密码。进入root用户后,再进入特定的日记目录,使用vim -x 加密方式编写日记,还需要输入第三道密码。这样日记被打开的可能性就非常小了。

3. 加密方式写日记。vim的-x参数可以用加密方式保存文件。在创建文件时加上-x参数,进入时vim会让你输入两次密码,然后就可以进去写日记了,日记的保存和退出都是vim的基础操作,不说了。

4. 为了方便,又写了一个脚本,一个命令快速进入当天的日记。下面是脚本内容。

#! /bin/bash
#获取现在的年月日
c_year=$(date "+%Y")
c_month=$(date "+%m")
c_day=$(date "+%d")

#判断年,月的目录是否存在
if [ ! -d $c_year ]; then
    mkdir -p $c_year"/"$c_month
else
    if [ ! -d $c_year"/"$c_month ]; then
        mkdir -p $c_year"/"$c_month
    fi
fi

#判断当天的日记文件是否存在
if [ -f $c_year"/"$c_month"/"$c_day ]; then
    #文件存在,直接用vim打开,输入密码后,编辑查看
    vim $c_year"/"$c_month"/"$c_day     
else
    #文件不存在,使用 -x 参数 设定采用加密方式保存
    vim -x $c_year"/"$c_month"/"$c_day   
fi

把上面的脚本复制到一个文本文件中,起个名保存,我叫treehole,意思是树洞。然后再给这个文件可执行权限   [kbd]chmod +x treehole[/kbd]。

 

5. 现在就可以执行这个文件开始写日记了,命令是:[kbd]./treehole[/kbd]。因为他会自动生成一些文件和文件夹,最好把这个treehole文件放入一个目录中,这样以后好管理些。

6. 日记的查看:当天日记,直接执行./treehole文件就行。过去的日记可以用vim打开。

4 关于vim的加密系统设定

默认情况下,vim的加密算法是pkzip,这是一种相对简单的加密算法,破解难度不大,建议选择其他加密算法,具体可通过vim的配置文件来设定。

vim /etc/vim/vimrc

在打开的文件末尾增加如下内容

set cm=blowfish2

如果要检查加密方式,可以在进入vim后,在命令模式下输入:set cm?来查看。

本日记系统的优缺点

  1. 如果密码输入错误,文档仍会被打开,会显示乱码,但此时任何修改都会对整个文档造成影响,以后就不能正常打开了。so,要注意备份日记,防止有意无意的损坏。
  2. 找到日记系统路径很长,不易被发现。当然这也是缺点,因为时间一长,自己也可能忘了这些日记存在哪。
  3. 每个文件都要单独设置密码,比较麻烦,如果哪个密码忘了,那个日记也就over了。