为 Linux 做一把 USB "钥匙"

2013-11-16  来源:本站原创  分类:编程  人气:1 

我曾经很早以前就在想,能不能将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 钥匙!

现在我们看看还有什么地方可以继续改进的……

我们注意到,无论我们是否连接了我们的钥匙,以后 sudo 的时候都会出现那些讨厌的提示,怎么办呢……?其实这完全也是可以解决的:打开 /etc/pamusb.conf 文件,我们发现这其实根本就是一个 XML 文件……在里面的 <defaults> 标签中间添加

1
<option name="quiet">true</option>

保存后就直接生效了~

除此之外,我们发现在这里,我们的钥匙和原来的密码之间是一个替代的关系,如果你希望利用这个钥匙附加上密码提高安全性的话,可以将上面在 /etc/pam.d/common-auth 里面加入的那行中的 sufficient 改成 required,如果你干脆就不想再用密码了,那就把密码的那些删掉,留下一个 required 的 pam_usb~

话说这还真是强大呐~不过用了这个以后,你这个USB钥匙也得要好好保管鸟~不过其实对我来说最爽的无外乎以后在众目睽睽之下不需要再手动输入密码啦~

参考资料

相关文章
  • 为 Linux 做一把 USB "钥匙" 2013-11-16

    我曾经很早以前就在想,能不能将U盘作为登入我系统的验证机制.当时的想法是,这样比较有趣~不过后来发现另外一个重要的用途就是,防止在众目睽睽之下输入密码-- 这个问题提出后,邮件列表里很快就有人告诉我,Linux 已经有一个现成的机制了,这就是 pam_usb.不过我在网上搜了半晌都没搜到相关的中文资料,前几天弄成了,就写出来供大家参考~ 其实来说,是很简单的.首先,当然,要准备一个U盘~(废话),然后安装 pam_usb.在 Ubuntu 下的话,源里就有,可以输入命令 1 sudo apt-g

  • Linux环境下USB的原理.驱动和配置 2013-05-09

    随着生活水平的提高,人们对USB设备的使用也越来越多,鉴于Linux在硬件配置上尚不能全部即插即用,因此关于Linux如何配置和使用,成为困扰我们的一大问题. 什么是USB? USB 是英文Universal Serial Bus的缩写,意为通用串行总线.USB最初是为了替代许多不同的低速总线(包括并行.串行和键盘连接)而设计的,它以单一类型的总线连接各种不同的类型的设备.USB的发展已经超越了这些低速的连接方式,它现在可以支持几乎所有可以连接到PC上的设备.最新的USB规范修订了理论上高达48

  • 为什么要用linux做服务器平台 2011-08-18

    用.Net,意外着你被捆绑在Windows平台上.不是.Net效率本身比Java,PHP差,语言其实差别很小,差距在于: 1. Windows Server授权费太贵,Linux免费,如果你有上千台服务器需要买上千台Windows授权...... 2. Windows不但贵,性能还远远不如Linux,注意这里说的是服务器端性能,跟桌面一点关系都没有 3. 许许多多无数的开源.高端服务器组件只有Linux/Unix版本,移植到Windows上的基本是半残品 4. 许许多多优化技术.高性能分布式缓存

  • 解决avrdude在linux下遭遇usb设备的访问权限问题 2010-11-06

    在ubuntu10.10下用avrdude下载,提示找不到设备.但使用lsusb可以发现下载线(usbasp),GOOGLE一翻,知道是权限问题,要么下载的时候使用sudo,要么写一个udev的rules文件,为了让我的CODEBLOCKS能用外部工具,也不想每次用个下载线都要转到特权模式,所以选择搞个udev的rules文件.下面是GOOGLE来的方法,适用了一下,avrdude可以正常下载了. 1. Create new rule for udev sudo gedit /etc/udev/

  • Linux社区牛人认为Ubuntu为害群之马 2014-02-10

    Greg Kroah-Hartman终于忍不住发飙了.他在最近的Linux Plumbers Conference 2008的主题演讲中,直言不讳的指责Ubuntu社区的背后公司Canonical,认为他们对Linux社区贡献微弱,特别是在内核方面几乎为零. 在他的演讲中,他指出,Ubuntu社区对内核的贡献非常少,在过去的5年中,仅仅提交了100个左右的内核补丁.而在此同时,Linux内核小组收到了差不多10万多个内核补丁提交,Ubuntu的贡献只是占到0.1%.远远落后于其他两个Linux发

  • 摆正心态做一个赚钱能手 2014-04-16

    现在剑网3很多童鞋都在说无钱可赚? 真的无钱可赚么?答案是否定的.赚钱只是看你勤劳与否了.天下没有让你白吃的宴席的. 其实现在赚钱的方法很多,而且比以前还要好赚钱,现在很多人都懒,不愿意自己去做东西,宁愿花钱去买,所以导致以前勤劳的商家是越来越富,懒人是越来越穷. 现在120的威望套装是很多PVP玩家的梦想,很多玩家前面没和谐阵营BOSS的时候去刷阵营威望,刷了好几个部件了,甚至有些玩家已经刷齐部件了,但是这只是少部分玩家,还有大多数的玩家都需求威望套,怎么办?他们会去做威望,恶人原来很多威望都

  • linux how to mount the disk U 2010-06-24

    Before hanging u disk, run the command cat / proc / partitions, see What are the system partition. After inserting u disk, run the command again and see what the extra partition (usually sda1, PS even in the virtual machine as downloading, so this is

  • Linux, mount the disk U 2010-06-25

    linux how to mount the disk U Before hanging u disk, run the command cat / proc / partitions, see What are the system partition. After inserting u disk, run the command again and see what the extra partition (usually sda1, PS even in the virtual mach

  • In Java applications to access USB devices 2010-07-11

    In this article by providing so Java applications can use the USB devices API dilute this process easier. Java platform has always been proud of its platform independence. While this independence has many advantages, but it also makes the interaction

  • Linux will learn the 60 commands 2010-10-16

    ==========[[[ Linux will learn the 60 commands ]]]========== Wandering: I do not find who the original author, but in any case, the original author of this article to extend my most sincere respect! Find online version of the layout is not very easy

  • 60 Linux commands will be 2011-05-29

    Linux provides a number of commands, use it to effectively accomplish a lot of work, such as disk operations, file access, directory operations, process management, file permissions settings. Therefore, the work can not be separated in the Linux syst

  • Storage devices in Linux are two representations 2010-12-12

    Author: North-South-North from: LinuxSir.Org http://www.linuxsir.org/main/?q=node/127 Abstract: The hard disk and hard disk partition in Linux is represented by the device, according to our argument is popular, is how to represent or describe the har

  • VM can not move the mouse under the Linux system 2011-04-05

    Environment: VMware 7 Virtual Systems: Linux 9 Mouse: USB mouse with scroll wheel Installation using VM virtual Linux 9, and successfully installed, start the virtual machine, visit the Linux system and found that the mouse will not move. The N on th

  • Linux服务器管理系统 wdcp 2011-11-07

    wdcp 网站 : http://www.wdlinux.cn/wdcp/ wdcp (WDlinux Control Panel) 是一套用PHP开发的Linux服务器管理系统,旨在易于使用和管理Linux服务器,可以在线通过网页管理服务器和虚拟主机.简单,方便,易操作.只有Linux版本,没有windows版本,让你方便地使用和管理Linux服务器,让不懂Linux的人也可以用Linux做服务器了.支持CentOS/RedHat版本 功能列表 包括网站管理,服务器管理两大功能 服务器管理 1

  • 只为好玩:这就是Linux之父的成功学 2014-01-23

    周末荐书栏目,借由我们的视角,发现一些你未曾注意到的好书. 你了解Linux之父林纳斯•托瓦兹(Linus Torvalds)吗?如果你和我一样,在大学课程或者其他地方见过这样一段语焉不详的文字:Linux是一款流行的操作系统,由芬兰大学生林纳斯在1991年发布.那么<只是为了好玩>这本书非常适合你. 整本书除了揭秘林纳斯究竟是怎么样成长为一个大神之外,还解决了我个人的一个困惑:为什么芬兰总是不紧不慢,不急不缓地交出一款款让互联网人为之倾倒的产品?无论是诺基亚,还是你手上经久不衰的部落战争(C

  • 教你如何搭建一个安全的Linux服务器教程 2014-04-05

    在当前很多php程序都使用了linux服务器,因为php在linux下运行效果更佳,很多大网站采用了linux服务器 要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置.在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,但是这些配置文件大都可以通过配置命令linuxconf (其中网络部分的配置可以通过netconf命令来实现).下面介绍基本的 TCP/IP网络配置文件. * /et

  • Linux命令free详解 2014-04-23

    前段时间有个项目的用C写的,性能测试时发现内存泄露问题.关于怎么观察内存使用问题,free是很好用的一个命令. bash-3.00$ free total used free shared buffers cached Mem: 1572988 1509260 63728 0 62800 277888 -/+ buffers/cache: 1168572 404416 Swap: 2096472 16628 2079844 Mem:表示物理内存统计 -/+ buffers/cached:表示物理

  • Linux文件系统的桌面应用 2015-01-22

    本文中要介绍一个所谓的"Linux 文件系统的守护神",这是指一个能实时地观察 Linux 文件系统的变化情况的程序模块.能够实时的观察文件系统的变化情况,并做出及时的适当的反应,这对于应用 Linux 做桌面计算机系统来说,是十分的有趣,也是十分的重要的.本文还要介绍 Linux 文件系统的异步 I/O 的扩展.同样,这对于 Linux 系统的桌面应用也是关键的. 1.Linux 文件系统的守护神 传统的 Linux 文件系统呈现给用户程序的界面,确实是十分的干净利落.用户程序可以打

  • Linux网络服务器配置基础 2015-03-28

    要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置.在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,但是这些配置文件大都可以通过配置命令linuxconf(其中网络部分的配置可以通过netconf命令来实现)命令来实现.下面介绍基本的 TCP/IP网络配置文件. * /etc/conf.modules 文件 该配置文件定义了各种需要在启动时加载的模块的参数信息.这里主要着重讨论关于

  • Linux网络服务器配置入门(一) 2015-04-21

    要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置.在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,但是这些配置文件大都可以通过配置命令linuxconf(其中网络部分的配置可以通过netconf命令来实现)命令来实现.下面介绍基本的 TCP/IP网络配置文件. * /etc/conf.modules 文件 该配置文件定义了各种需要在启动时加载的模块的参数信息.这里主要着重讨论关于