肖茨在他的书中写道,shell实际上是当我们谈论命令行时所谈论的东西。shell基本上一个程序,它将你敲击键盘的动作传递给计算机;它也是某种形式的翻译器,将你所讲的东西翻译给计算机听。在这世界上活着的shell真是五花八门,但是活得最好的要数bash了,它在GNU/Linux中随处可见。我们也叫它Bourne Again Shell,这是一个精巧的双关语,因为自从Bourne先生创造了它的祖先sh后,Brian Fox又把它重写成为一个自由的sh替代品。啊哈!GUN人和他们的幽默,真的很精明。:)
如我前面提到的,要加密有很多可选的方式方法。加密磁盘分区最通用的一种方法是 LUKS(Linux Unified Key Setup) 系统。一个使用 LUKS 格式化分区的 USB 驱动盘可以被大多数系统自动识别到。实际上,如果你使用的是像 Ubuntu 桌面这样的桌面环境系统的话,加密 USB 驱动盘其实就是在格式化过程中简单的勾选上一个复选框而已。虽然这是加密 USB 盘最容易让人接受的方式,但我还是想演示如何在命令行下进行加密,因为这种方式可以让你明白在加密的后面具体发生了什么。
步骤 1: 识别您的 USB 驱动盘。
在您插入 USB 驱动盘后,如果在终端输入 dmesg 命令,将会显示出所有的系统信息,包括刚插入的 USB 驱动盘的设备名字。 确保设备标识是正确的,因为后面要进行的操作会破坏驱动盘上的所有数据。您也不想一不小心就格式化掉正常的磁盘吧。(虽然不用提醒,但我还是要说,确保您的 USB 驱动盘已经没有你想保留的数据,因为这是一个破坏性的过程。)
步骤 2: 对 USB 驱动盘进行分区。
假设,在您的系统上 USB 驱动盘是 /dev/sdb 这个设备,您需要在这个驱动上创建一个单分区(LCTT译注:设备是sdb,其上可以有多个分区,分别叫sdb1、sdb2等等)。我们使用 fdisk 命令。下面是 fdisk 必须的交互操作。一般地,用 o 命令来创建一个新的空分区,然后用 w 命令来保存设置。然后重新运行 fdisk 命令,并用 n 命令来创建一个新的主分区,接下来保持默认的以使用整个设备空间:
# sudo fdisk /dev/sdb
Command (m for help): o
Building a new DOS disklabel with disk identifier 0x1234567.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Command (m for help): w
The partition table has been altered!
# sudo fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4, default 1): 1
Using default value 1
First sector (2048-1016522, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1016522, default 1016522):
Using default value 1016522
Command (m for help): w
The partition table has been altered!
# cryptsetup luksFormat /dev/sdb1
WARNING!
========
This will overwrite data on /dev/sdb1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
# mkfs.vfat /dev/mapper/my_crypto_disk -n my_crypto_disk
mkfs.vfat 3.0.9 (31 Jan 2010)
现在磁盘的功能完备了,可以像其它磁盘一样正常挂载使用了。实际上,如果你使用的是现代的图形用户界面系统的话,只要你把 USB 驱动盘一插入计算机,将会提示您输入密码,然后就自动挂载上了。退出的时候跟普通盘一样,里面存储的数据会被加密,直到下次输入密码。在命令行里使用 cryptsetup 卸载以及重加密驱动盘也是很简单的:
# cryptsetup luksClose my_crypto_disk
这仅仅只是冰山一角
写这篇文章,我的目的是希望剥开加密后面的秘密。加密和解密单个文件很简单,要加密整个 USB 驱动盘也不是太困难(如果使用的是图形用户界面工具就更容易了)。对于大多数系统的发布版本来说,在安装过程中就可以对整个 home 目录进行加密。加密是对您的整个 home 目录起作用,然而有些问题就需要特别处理了。例如,您没登陆时就运行的任务在大多数情况下是不会访问您的 home 目录的,但如果您有调度任务需要访问 home 目录的话,应该进行修改,让其访问系统中其它目录的数据。我觉得在安全和便利之中平衡的中庸之道还是加密 USB 驱动盘,然后在上面存储个人资料。
我必须警告您,一但您考虑到安全的问题,就会想要把任何东西都加密起来。这不是什么坏的事情,但是像要对 home 目录加密这种情况,是会碰到一些问题的。如果您使用不同系统的话,跨平台访问也是个大问题。像这种情况,我强烈建议您使用 TrueCrypt。在前期的文章片段里我提到过 TrueCrypt,它是一款开源的,跨平台的加密系统软件。可以对文件、文件夹、分区等等进行加密,同时可以在任何系统中访问加密的数据。像 Windows、Mac 及 Linux 客户端都可以使用。社区也有大力的支持。(LCTT译注:悲惨的是,棱镜门事件之后,TrueCrypt的作者已经放弃了该产品,并且强烈建议大家也不要使用,具体可以参考本站的一些相关消息。所以痛失TrueCrypt之后,我们还有哪些替代品?)
"********************************************************
" 一般性配置 *
"********************************************************
"关闭vim一致性原则
set nocompatible
"显示行号
set number
"设置在编辑过程中右下角显示光标的行列信息
set ruler
"在状态栏显示正在输入的命令
set showcmd
"设置历史记录条数
set history=1000
"设置取消备份 禁止临时文件的生成
set nobackup
set noswapfile
"设置匹配模式
set showmatch
"设置C/C++方式自动对齐
set autoindent
set cindent
"开启语法高亮功能
syntax enable
syntax on
"指定配色方案为256色
set t_Co=256
"设置搜索时忽略大小写
set ignorecase
"配置backspace的工作方式
set backspace=indent,eol,start
"设置在vim中可以使用鼠标
set mouse=a
"设置tab宽度
set tabstop=4
"设置自动对齐空格数
set shiftwidth=4
"设置退格键时可以删除4个空格
set smarttab
set softtabstop=4
"将tab键自动转换为空格
set expandtab
"设置编码方式
set encoding=utf-8
"自动判断编码时 依次尝试以下编码
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
"检测文件类型
filetype on
"针对不同的文件采取不同的缩进方式
filetype indent on
"允许插件
filetype plugin on
"启动智能补全
filetype plugin indent on
"*********************************************************
" vundle 配置 *
"*********************************************************
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" let Vundle manage Vundle
Bundle 'gmarik/vundle'
" My Bundles here:
Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
Bundle 'tpope/vim-rails.git'
Bundle 'taglist.vim'
Bundle 'The-NERD-tree'
Bundle 'Syntastic'
Bundle 'L9'
Bundle 'FuzzyFinder'
Bundle 'Lokaltog/vim-powerline'
Bundle 'Valloric/YouCompleteMe'
"*****************************************************
" taglist配置 *
"*****************************************************
"不显示"press F1 to display help"
let Tlist_Compact_Format=1
"窗口在左侧显示
let Tlist_Use_Right_Window=1
"只显示当前文件的tags
let Tlist_Show_One_File=1
"高亮显示
let Tlist_Auto_Highlight_tag=1
"随文件自动更新
let Tlist_Auto_Update=1
"设置宽度
let Tlist_WinWidth=30
"taglist窗口是最后一个窗口,则退出vim
let Tlist_Exit_OnlyWindow=1
"单击跳转
let Tlist_Use_SingClick=1
"打开关闭快捷键
nnoremap :TlistToggle
"********************************************************
" NERD_Tree 配置 *
"********************************************************
"显示增强
let NERDChristmasTree=1
"自动调整焦点
let NERDTreeAutoCenter=1
"鼠标模式:目录单击,文件双击
let NERDTreeMouseMode=2
"打开文件后自动关闭
let NERDTreeQuitOnOpen=1
"显示文件
let NERDTreeShowFiles=1
"显示隐藏文件
let NERDTreeShowHidden=1
"高亮显示当前文件或目录
let NERDTreeHightCursorline=1
"显示行号
let NERDTreeShowLineNumbers=1
"窗口位置
let NERDTreeWinPos='left'
"窗口宽度
let NERDTreeWinSize=31
"不显示'Bookmarks' label 'Press ? for help'
let NERDTreeMinimalUI=1
"快捷键
nnoremap :NERDTreeToggle
"*****************************************************
" YouCompleteMe配置 *
"*****************************************************
"leader映射为逗号“,”
let mapleader = ","
"配置默认的ycm_extra_conf.py
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
"按,jd 会跳转到定义
nnoremap jd :YcmCompleter GoToDefinitionElseDeclaration
"打开vim时不再询问是否加载ycm_extra_conf.py配置
let g:ycm_confirm_extra_conf=0
"使用ctags生成的tags文件
let g:ycm_collect_identifiers_from_tag_files = 1
"*****************************************************
" Syntastic配置 *
"*****************************************************
let g:Syntastic_check_on_open=1
$ 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”完成。
- [x] @mentions, #refs, [links](), **formatting**, and tags are supported
- [x] list syntax is required (any unordered or ordered list supported)
- [x] this is a complete item
- [ ] this is an incomplete item
$ sudo sfdisk -l -uM
Disk /dev/sda: 60801 cylinders, 255 heads, 63 sectors/track
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End MiB #blocks Id System
/dev/sda1 * 0+ 71680- 71681- 73400953+ 7 HPFS/NTFS/exFAT
/dev/sda2 71680+ 476938 405259- 414984520+ f W95 Ext'd (LBA)
/dev/sda3 0 - 0 0 0 Empty
/dev/sda4 0 - 0 0 0 Empty
/dev/sda5 71680+ 171686- 100007- 102406311 7 HPFS/NTFS/exFAT
/dev/sda6 171686+ 271693- 100007- 102406311 83 Linux
/dev/sda7 271694 273645 1952 1998848 82 Linux swap / Solaris
/dev/sda8 273647 476938 203292 208171008 83 Linux
Disk /dev/sdb: 1020 cylinders, 125 heads, 62 sectors/track
Warning: The partition table looks like it was made
for C/H/S=*/54/9 (instead of 1020/125/62).
For this listing I'll assume that geometry.
Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End MiB #blocks Id System
/dev/sdb1 * 1 3860 3860 3952640 b W95 FAT32
start: (c,h,s) expected (4,11,6) found (0,32,33)
end: (c,h,s) expected (1023,53,9) found (492,53,9)
/dev/sdb2 0 - 0 0 0 Empty
/dev/sdb3 0 - 0 0 0 Empty
/dev/sdb4 0 - 0 0 0 Empty
gpg (GnuPG) 1.4.14; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) Y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) "
Real name: ravisaive
Email address: tecmint.com@gmail.com
Comment: tecmint
You selected this USER-ID:
"Ravi Saive (tecmint) "
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
+++++
gpg: key 2EB446DD marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 2048R/2EB446DD 2014-06-24
Key fingerprint = D222 B1C9 342E 5911 02B1 9147 3BD6 7918 2EB4 46DD
uid Ravi Saive (tecmint)
sub 2048R/7EF2F750 2014-06-24
Created directory "/var/www/apt/db"
Exporting Trusty...
Created directory "/var/www/apt/dists"
Created directory "/var/www/apt/dists/Trusty"
Created directory "/var/www/apt/dists/Trusty/universe"
Created directory "/var/www/apt/dists/Trusty/universe/binary-i386"
FF5097B479C8220C ravisaive (tecmint) needs a passphrase
Please enter passphrase:
Successfully created '/var/www/apt/dists/Trusty/Release.gpg.new'
FF5097B479C8220C ravisaive (tecmint) needs a passphrase
Please enter passphrase:
Successfully created '/var/www/apt/dists/Trusty/InRelease.new'
/home/ravisaive/packages.deb : component guessed as 'universe'
Created directory "./pool"
Created directory "./pool/universe"
Created directory "./pool/universe/o"
Created directory "./pool/universe/o/ojuba-personal-lock"
Exporting indices...
FF5097B479C8220C ravisaive (tecmint) needs a passphrase
Please enter passphrase:
Successfully created './dists/Trusty/Release.gpg.new'
FF5097B479C8220C ravisaive (tecmint) needs a passphrase
Please enter passphrase:
Successfully created './dists/Trusty/InRelease.new'
Red Hat Enterprise Linux 7.0 是 Red Hat 的下一代操作系统完整套件,旨在用于关键任务企业级计算以及顶级企业级软件和硬件零售商认证。
存储
LIO 内核目标子系统
Red Hat Enterprise Linux 7.0 使用 LIO 内核目标子系统,它是块存储的标准开源 SCSI 目标,可用于以下存储介质:FcoE、iSCSI、iSER(Mellanox InfiniBand)和 SRP(Mellanox InfiniBand)。Red Hat Enterpise Linux 6 使用 SCSI 目标守护进程 tgtd 为 iSCSI 目标提供支持,同时在以太网光纤通道(FCoE)中只使用 fcoe-target-utils 软件包提供的 Linux 内核目标 LIO。targetcli shell 提供 LIO Linux SCSI 目标的常规管理平台。
快速块设备为较慢的块设备提供缓存
Red Hat Enterprise Linux 7.0 中引进让快速块设备作为较慢块设备的缓存的功能作为技术预览。这个功能可让 PCIe SSD 设备作为直接附加存储(DAS)或者存储局域网(SAN)存储的缓存使用,以便提高文件系统性能。
LVM 缓存
Red Hat Enterprise Linux 7.0 引进了 LVM 缓存作为技术预览。这个功能可让用户创建逻辑卷,使用一个小的快速设备作为较大的慢速设备的缓存。有关生成缓存逻辑卷的详情请参考 lvm(8) manual page。注:在缓存逻辑卷中尚不能使用下列命令:
pvmove:跳过所有缓存逻辑卷,
lvresize, lvreduce, lvextend:目前无法重新定义缓存逻辑卷大小,
vgsplit:当有缓存逻辑卷存在时不能分割卷组。
使用 libStorageMgmt API 进行存储阵列管理
Red Hat Enterprise Linux 7.0 引进了存储阵列管理作为技术预览。libStorageMgmt 是独立于存储阵列的应用程序编程界面(API)。它提供稳定且持久的 API,可让开发人员以编程方式管理不同的存储阵列,并利用所提供的硬件加速功能。系统管理员还可以将其作为手动管理存储的工具使用,同时使用附带的命令行界面(CLI)自动化存储管理任务。
LSI Synchro 支持
Red Hat Enterprise Linux 7.0 包含 megaraid_sas 驱动程序中代码用于启用 LSI Syncro CS 高可用直接附加组件(HA-DAS)适配器。尽管在以前启用的适配器中完全支持 megaraid_sas 驱动程序,但在 Syncro CS 中使用这个驱动程序仍处于技术预览阶段。对这个适配器的支持将直接由 LSI、您的系统集成商或者系统销售商提供。我们鼓励在 Red Hat Enterprise Linux 7.0 中部署 Syncro CS 的用户为 Red Hat 和 LSI 提供反馈意见。有关 LSI Syncro CS 解决方案的详情请参考http://www.lsi.com/products/shared-das/pages/default.aspx。
LVM 应用程序编程界面
Red Hat Enterprise Linux 7.0 提供新的 LVM 应用程序编程界面(API)作为技术预览。使用这个 API 可查询并控制 LVM 的具体方面。
DIF/DIX 支持
DIF/DIX 是 SCSI 标准的新版本,同时在 Red Hat Enterprise Linux 7.0 中也是技术预览。DIF/DIX 将通常使用的 512 字节磁盘块大小从 512 字节增大到 520 字节,添加了数据完整性字段(DIF)。DIF 在发生写入操作时为主机总线适配器(HBA)计算的数据库保存 checksum 值。该存储设备在收到 checksum 后确认,并同时保存该数据和 checksum。相反,当发生读取操作时,可在收到 HBA 后由该存储设备检查 checksum。详情请参考启用了 DIF/DIX 的块设备一节,网址《存储管理指南》。
支持平行 NFS
平行 NFS(pNFS)是 NFS v4.1 标准的一部分,可让客户端直接且平行访问存储设备。pNFS 架构可为一些常规负载提高 NFS 服务器的可延伸性及性能。pNFS 定义了三种不同的存储协议或者布局:文件、对象和块。Red Hat Enterprise Linux 7.0 客户端全面支持文件布局,但块布局和对象布局只能作为技术预览使用。pNFS 的详情请参考 http://www.pnfs.com/。
文件系统
支持 XFS 文件系统
目前使用 Anaconda 安装的 Red Hat Enterprise Linux 7.0 中使用的默认文件系统是 XFS,它替换了在 Red Hat Enterprise Linux 6 中使用的第四代扩展的文件系统(ext4)。ext4 和 Btrfs(B-Tree)文件系统可作为 XFS 的备选。XFS 是高度可扩展、高性能文件系统,最初由 Silicon Graphics, Inc 设计,目的是为了支持高达 16 艾字节(约 1600万TB)的文件系统,多达 8 艾字节(约 800万TB)以及包含数千万条目的目录结构。XFS 支持元数据日志,它可加快崩溃的恢复。XFS 文件系统还可在挂载且活跃的情况下进行清理碎片和扩展操作。有关 ext4 和 XFS 间常规任务所使用命令的不同请参考《安装指南》中的参考表格。
支持 IBM System z 中的 libhugetlbfs
目前支持 IBM System z 架构中的 libhugetlbfs 库。该库允许 C 和 C++ 程序中的大页面透明开发。应用程序及中间件程序可从其性能优点或者大页面中受益而无需进行更改或者重新编译。
Red Hat Enterprise Linux 7.0 中的新硬件事件报告机制,也称 HERM 的目标是统一来自不同源的出错数据集合,并采用连续时间线和单一位置向用户控件报告出错事件。Red Hat Enterprise Linux 7.0 中的 HERM 引进了新的用户空间守护进程 rasdaemon,它可捕获并处理所有来自内核追踪架构的可依赖性、可用性及可服务性(RAS)出错事件,并记录它们。Red Hat Enterprise Linux 7.0 中的 HERM 还提供报告那些错误的工具,并可探测不同类型的错误,比如 burst 和 sparse 错误。
全面 DynTick 支持
nohz_full 引导参数将最初的无缝内核功能延伸到额外的情况,比如可以停止 tick 的时候,可以使用 per-cpu nr_running=1 设置的时候。即在 CPU 的运行队列中只有一个可运行的任务。
将内核模块列入黑名单
Red Hat Enterprise Linux 7.0 提供 modprobe 程序可让用户在安装时将内核模块放入黑名单。要禁用自动载入一个模块,请运行以下命令:
modprobe.blacklist=module
动态内核补丁
Red Hat Enterprise Linux 7.0 引进了 kpatch,一个动态内核补丁管理程序作为技术预览。用户可使用 kpatch 管理二进制补丁集合,它可在不重启的情况下动态为内核打补丁。
Emulex ocrdma 驱动程序
Emulex ocrdma 驱动程序在 Red Hat Enterprise Linux 7.0 中是作为技术预览提供。该驱动程序为具体的 Emulex 适配器提供远程直接内存访问(RDMA)功能。
dm-era 目标
Red Hat Enterprise Linux 7.0 引进了 dm-era 设备映射器目标作为技术预览。dm-era 可跟踪在用户定义的时间段(即“era”)内写入的块。每个 era 目标事务可将当前 era 单调地增加到 32 位计数器。这个目标允许备份软件追踪自上次备份后有变化的块。它还允许在返回经销商快照后部分失效的缓存内容恢复缓存一致性。dm-era 目标主要与 dm-cache 目标配对。
在命令行中切换目录是最常用的操作,不过很少有比一遍又一遍重复“cd ls cd ls cd ls ……”更令人沮丧的事情了。如果你不是百分百确定你想要进入的下一个目录的名字,那么你不得不使用ls来确认,然后使用cd来进入你想要进的那一个。所幸的是,现在大量的终端和shell语言提供了强大的自动补全功能来处理该问题。但是,你仍然需要一直疯狂地敲击TAB键来干这事。如果你和我一样懒惰,你一定会对autojump感到惊喜。