RHEL5 制作USBKEY登陆系统



他的官方站点:http://pamusb.org/
关于这个软件的详细信息可以去这个站点查看。


linux可以使用usbkey来登录系统,要实现这种功能,要使用pam_usb这个软件
首先当然是下载这个软件:
http://ncu.dl.sourceforge.net/sourceforge/pamusb/pam_usb-0.4.2.tar.gz

查看软件包里面的./pam_usb-0.4.2/doc/QUICKSTART文件,可以知道
pam_usb依赖于:libxml2, PAM, HAL and pmount        ## 前面三个说的都是devel包

[root@station203 pam_usb-0.4.2]# rpm -qa | grep devel | grep -E "hal|libxml|pam"
libxml2-devel-2.6.26-2.1.2
hal-devel-0.5.8.1-25.el5
pam-devel-0.99.6.2-3.26.el5
[root@station203 pam_usb-0.4.2]# rpm -qa | grep pmount
pmount-0.9.13-1.el5


pam_usb's tools (pamusb-agent,pamusb-conf)依赖于:python, python-celementtree and python-gobject.
注意:RHEL5中python-celementtree的名字叫:python-elementtree-1.2.6-5
    python-gobject的名字叫:pygobject2-2.12.1-5.el5


RHEL5的ISO中是不带有pmount,所以要另外下载。地址如下:
ftp://ftp.univie.ac.at/systems/linux/fedora/epel/5/i386/pmount-0.9.13-1.el5.i386.rpm


[root@station203 ~]# rpm -ivh pmount-0.9.13-1.el5.i386.rpm
warning: pmount-0.9.13-1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing...                ########################################### [100%]
   1:pmount                 ########################################### [100%]

[root@station203 ~]# tar zxvf  pam_usb-0.4.2.tar.gz

[root@station203 pam_usb-0.4.2]# make
[root@station203 pam_usb-0.4.2]# make install

现在pam_usb已经安装好了。
[root@station203 pam_usb-0.4.2]# ls /lib/security/ | grep usb
pam_usb.so
## 已经可以看到pam_usb.so模块了

[root@station203 pam_usb-0.4.2]# ls /usr/bin/ | grep pamusb
pamusb-agent
pamusb-check
pamusb-conf
## 并且pamusb的三个工具命令也有了。


现在可以修改登陆验证的过程了。用pam验证。
[root@station203 pam_usb-0.4.2]# cd /etc/pam.d/
[root@station203 pam.d]# vim system-auth
## 在auth        sufficient    pam_unix.so nullok try_first_pass这行的上面添加一行:
auth    sufficient      pam_usb.so        
## 使用pam_usb.so验证登陆,可以加-c 后面指定配置文件,默认是在/etc下面


好,现在可以制作usbkey了。
把准备好的u盘设备接好。
[root@station203 pam.d]# pamusb-conf --add-device usbkey
Please select the device you wish to add.
* Using "USB2.0 Flash Disk (USB2.0_Flash_Disk_1000000000000859)" (only option)

Which volume would you like to use for storing data ?
* Using "/dev/sdb1 (UUID: 58E6-7979)" (only option)

Name            : usbkey
Vendor          : USB2.0
Model           : Flash Disk
Serial          : USB2.0_Flash_Disk_1000000000000859
UUID            : 58E6-7979

Save to /etc/pamusb.conf ?
[Y/n] y
Done.
## 添加一个设备,名字叫usbkey,我随便取的。pamusb-conf会自动扫描u盘设备,并添加。

## 然后添加用户,我添加root用户,当然,你也可以添加其他的用户。
[root@station203 pam.d]# pamusb-conf --add-user root
Which device would you like to use for authentication ?
* Using "usbkey" (only option)

User            : root
Device          : usbkey

Save to /etc/pamusb.conf ?
[Y/n] y
Done.


[root@station203 pam.d]# pamusb-check root
* Authentication request for user "root" (pamusb-check)
* Remote authentication request: 192.168.1.110
* Access denied.
## 测试下,失败了。。。。。:(

没有关系,我这里是用的虚拟机,远程上去做的试验,现在到虚拟机的本地去测试。效果如下:图1


开始的时候,插入usbkey,输入root,然后pamusb验证没有通过,结果要求输入密码,假如密码正确,也可以登陆,但是我故意输错。因为我知道为什么会这样。


在刚才实验的远程终端上,使用下面命令:
[root@station203 pam.d]# setenforce 0
## 把selinux改成默许模式
## 所以说,用pamusb验证需要关掉selinux,具体关掉的方法如下:
修改grub.conf文件,在你用的kernel启动项后面加上 selinux=0,就可以了。

再到虚拟机本地测试,就出现图片下面部分的。输入root,直接的验证通过,,不需要密码,登陆成功。

在远程测试:
[root@station203 pam.d]# pamusb-check root
* Authentication request for user "root" (pamusb-check)
* Remote authentication request: 192.168.1.110
* Access denied.

## 失败,具体的我也不确定,但是我觉得应该是:
这个pamusb是通过pam的功能来验证的,是用户在使用login程序登陆的时候才起作用,但是远程的时候是用ssh程序,所以不能用

pamusb,或者说是要修改那个配置文件,这里我不知道,有高手知道的话,麻烦指点。