2

Comments

我曾经很早以前就在想,能不能将U盘作为登入我系统的验证机制。当时的想法是,这样比较有趣~不过后来发现另外一个重要的用途就是,防止在众目睽睽之下输入密码……

这个问题提出后,邮件列表里很快就有人告诉我,Linux 已经有一个现成的机制了,这就是 pam_usb。不过我在网上搜了半晌都没搜到相关的中文资料,前几天弄成了,就写出来供大家参考~

其实来说,是很简单的。首先,当然,要准备一个U盘~(废话),然后安装 pam_usb。在 Ubuntu 下的话,源里就有,可以输入命令

1
sudo apt-get install pamusb-tools

直接安装。当然如果你连终端也懒得打开,可以直接点击这里:安装 pamusb-tools。当然,在后面的步骤中你终归还是要打开终端的,所以还是先开了吧~这个东西目前暂时还没什么图形界面的样子(当然做一个相信也不难)。

另外,Fedora 源里有 pam_usb 包,Arch Linux 似乎在 AUR 里有,在 Gentoo 中似乎是被默认屏蔽的,可以通过下面指令安装:

1
2
echo "sys-auth/pam_usb" >> /etc/portage/package.keywords
emerge -av ">=sys-auth/pam_usb-0.4.1"

其他的发行版也可以直接从他们的项目主页下载源码包编译安装~

安装好了以后,首先插入你作为钥匙的U盘,然后在终端中运行

1
sudo pamusb-conf --add-device MyUSBDevice

其中的 MyUSBDevice 可以任意修改,只是一个标识符而已。接下来根据提示操作即可。如果你的电脑此时连接着超过一个U盘、移动硬盘,或者某个U盘、移动硬盘包含超过一个分区(就像我给U盘分了2个区),就会提示选择安装到哪里。设置完确认保存到配置文件即可。

下面添加认证用户,下面的命令是添加我为认证用户的:

1
sudo pamusb-conf --add-user upsuper

原教程里面写的是添加 root 我认为是没有必要的,添加 sudoer 应该是已经足够了的。这条命令几乎不问什么问题,直接就完成了……这样以后在使用这把钥匙的时候就可以不需要输入相应用户的密码了。

最后最重要的一步,是编辑认证系统的配置文件。打开 /etc/pam.d/common-auth (对于 Gentoo 来说是 /etc/pam.d/system-auth),将下面这行插入到所有条目的前面:

1
auth    sufficient      pam_usb.so

现在你的 USB 钥匙已经可以用了!现在,另外再打开一个终端,随便 sudo 点什么,然后你应该不会再看到输入密码的画面,取而代之的是下面的东西:

1
2
3
4
5
* pam_usb v0.4.2
* Authentication request for user "upsuper" (sudo)
* Device "MyUSBDevice" is connected (good).
* Performing one time pad verification...
* Access granted.

然后运行成功了!不仅 sudo 可以验证,包括 gksu 和登入框等等都已经可以使用这把钥匙直接略过不需要输入密码了。

现在你已经成功的制作了一个属于自己的 USB 钥匙!
Read the rest of this entry »

< ,, >
3

Comments

每当感觉到系统卡的时候,最好的方法无外乎进入 tty,登入,打开一个 top 监视。可是每次到了需要的时候才去开,打开的效率自然不敢恭维。于是便想,每次开机的时候,记起来就跑到 tty 下面去先开起来。不过这件事情总归是麻烦的,于是才有了现在的方案。

既然 tty 那么多,那我们就把他利用一下吧~让他开机自动在某个 tty 里面启动 top 无疑最方便了~
Read the rest of this entry »

< ,, >
1

Comments

昨天把 grub 升级成了 grub2,然后用原来的 grub 引导一次成功后,我就用 upgrade-from-grub-legacy 升级到了 grub2。当时貌似没有提示什么错误,不过今天启动的时候却不能启动。出现了 grub 提示错误。

囧了,这样看貌似 grub2 没被写进 MBR……

然后拿出装有 SystemRescueCd 的急救U盘,然后我发现那里面有 grub2-install,非常高兴!不过运行了 grub2-install /dev/sda 后提示没有找到 /boot/grub

接着我把磁盘挂载到了 /mnt/root,用 chroot /mnt/root bash,进去以后用 grub-install 也没用……囧

最后我查了一下 grub2-install 的用法,最后运行 grub2-install –root-directory=/mnt/root /dev/sda 终于成功了!

用 grub2 的启动画面还是挺不错的嘛~嗯嗯~

< ,, >
0

Comments

有人想问为什么要移除 CNNIC 的证书吗?因为我不信任 CNNIC,就是这样。

网上流传的版本大多是关于 Windows 下的,偶然找到一个 Debian 的,正好抄过来。

首先,执行

1
sudo dpkg-reconfigure ca-certificates

第一个界面直接确定,然后找到 mozilla/Entrust.net_Secure_Server_CA.crt 一列取消它的选择,最后确定。如下图:

 

然后,如果你是用 Firefox,就要进入 编辑/首选项/高级/加密,点击“查看证书”,在证书机构里面找到 Entrust.net,将其子项全部删除(特别是 CNNIC 那一项!),接着可以试一下访问 ENUM 实验平台,如果不出意外,已经不能访问了。

如果你是是用 Opera,打开 工具/首选项/高级/安全性,点击“管理证书”,在“证书颁发机构”里选择 CNNIC ROOT,点击查看,去掉“允许连接到是用此证书的网络”前的钩,重启 Opera,如果不出意外 Opera 也不能访问上面那个地址了。

至于 Chromium,似乎本来就没有加,我直接访问是访问不了的。如果遇到可以访问的,可以参考 LinuxCertManagement – chromium 进行处理。
Read the rest of this entry »

< ,,,,,, >
3

Comments

之前的版本犯了一个重大的错误!我错了……没有经过认真的实验就贴出来……

正文开始前,先看一个式子:

1
x != x

大家觉得,这个东西的返回可能为 true 么?事实上是可能的,只要这个 x 是 NaN,并且这个 C 编译器符合 IEEE 754 的标准。

所谓 NaN,即 Not A Number,不是一个数。这是 IEEE 754 国际浮点数运算标准当中规定的一个特殊值,这个值由于不是一个数,所以有很多奇怪的特性,比如上面这个不等于其本身。

虽然有这么个东西,而且是国际标准,不过我们也知道,这世界上总有那么些公司是不喜欢理会国际标准的,邪恶的 M$ 就是其中之一。而 Visual C++ 6.0 的 C 编译器也就“有幸”成为了少有的不能完全兼容 IEEE 754 的编译器之一。

至此,我们发现一个问题:邪恶的 M$ 的东西中,总是最垃圾的流传的最广,IE6 如此,VC6 也是如此。另外,在此声明一下,这里讲的全部是 C,不是 C++,在 C++ 中另外有一些比较符合标准的方式同时被各个编译器兼容。

OK,回归正题,既然 VC6 的编译器是个渣,可我们有的时候还是不得不让自己的代码与之兼容,于是就有了各种解决办法。
Read the rest of this entry »

< ,,,,,, >

两小段 C 的宏

0

Comments

很久没写 blog 了……大学生活可比高中忙碌多了,哪个混蛋骗我说大学轻松来着……学的东西又难,作业又多,还有学生会活动……啊,我多想回到一中……

最近忙着帮同学写大项目,用 C。话说,对于让没学过编程的人学 C 实在是一件很残酷的事情,即使我现在写仍然觉得很可怕……不过写着写着,觉得 C 实在是一个很神奇的语言,指针和宏是如此的优美~

下面贴两个我在写那项目的时候用到的宏:
Read the rest of this entry »

< , >
1

Comments

又想弄 LaTeX 了,OpenOffice.org 和 M$ Office 果然还是有点差距的,还不如用 LaTeX……不是据说还有一个“几乎可视化”的 LaTeX 编辑器?

不过摆弄 LaTeX 果然还是不容易……真想不通,LaTeX 发展了这么长时间,为何不把这弄简单一点呢,就像 Linux 这样……
Read the rest of this entry »

< , >
1

Comments

由于我的上网本和家里的台机分居两地,为了省去同步书签的麻烦,就用了那个很有名的插件 Xmarks。可前一段听说 Xmarks 也被墙了,于是点开了 Xmarks,发现果然,最后一次同步是10月18日的事。(由于我平日都是关闭状态栏的)

今天在网上找到一个方法,虽然说目前只是临时方案,不过或许可以撑很长一段时间,因为依我看来,目前的封禁程度已经达到了墙的目的了,而且也已经从单纯域名劫持和关键词过滤发展到对部分 IP 做了封禁处理了……
Read the rest of this entry »

< ,, >
7

Comments

我一直在使用 wp-codebox 这个代码高亮插件。这个代码高亮插件似乎很久没有更新了,而且作者的网站也不能访问了(被墙了?),不知道是不是停止维护了?虽然在插件主页上显示这个插件仅支持到 2.5.1,我这个 2.8+ 的 WordPress 也并没有提示不兼容……虽然这个插件似乎对 SEO 有影响,而且可能停止维护,不过我暂时不打算更换插件,大不了我自己维护自己的版本……

今天就修改了一下……因为昨天发的那文章很多用这个来显示高亮代码,而且最后一个长代码我还使用了自动收缩。可是自动收缩没效果!下载栏也没有显示。今天查一下,发现是插件的功能栏被我关了……启用以后觉得很难看,很厚,而且和我的蓝色主题很不搭调,于是就决定自己修改了。

先是改了 CSS,把那功能栏调好看了些。然后开始改 main.php,把后面失效的帮助链接给删掉了。然后我让代码小等于5行,又不提供文件下载的代码段自动隐藏功能栏,而对于大于70行的代码,如果没有显示声明展开则自动收缩。最后,觉得那个收缩很卡,就让他直接消失好了……查了下插件用的 jQuery,新版本改进了执行效率,而且没有改变插件里面用的那些函数的特性,就直接下下来更新了……

这里把我修改后的插件也贴出来供大家参考吧:wp-codebox-upsuper.tar.lzma (577.8 KB)

顺便说一声,配的也是最新版的 GeSHi,虽然只更新了一个小小版本……

< ,,,,, >
2

Comments

据部分人称,百度Hi打开网页都是直接使用IE而非默认浏览器,当然我这里做不了实验……Javran 以为是因为他用的 Chrome 是百度竞争对手开发的而不支持,便托他在百度里面工作的朋友去问了下开发者,结果据说开发者说是直接调用 iexplore.exe 打开网页的 _-b

今天高中时候的贴吧上有一个人在试用了 Chrome 后称“现在终于发现IE有多么LJ了”,然后就提出了同样的问题。于是我就稍微研究了一下~

拿 eXeScope 打开 BaiduHi.exe 文件(eXeScope 是可以完美 wine 出来的~),没有发现与 iexplore.exe 有关的字符串,有点失望。再看看目录里面如此多的 dll 文件,用 eXeScope 一个一个开过去,发现对于那里的 dll 文件 eXeScope 似乎只能看到版本信息……然后突然想到,我们可以直接去找文件中有没有 iexplore.exe 这个字符串~因为在 Linux 下,这一工作变得格外简单:

1
find -type f -print0 | xargs -0 grep --binary-files=binary -l iexplore.exe

一条命令便足矣,对 Bash 稍有了解的人一定能完全理解这句话的含义~

下面它输出了两个文件:ImEngine.dll 和 Basement.dll。用 IE 打开很可能就固化在这两个文件里面!用 MadEdit 打开这两个文件,果真发现了 iexplorer.exe。不过不敢乱改,改了也没法实验(印象中百度Hi不能被完美 wine 出来),于是接下去的实验就作罢了。

可是又有人报告百度Hi可以调用疼逊TT打开,我就真不知道是怎么回事了 _-b

< ,,, >