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,或者说是要修改那个配置文件,这里我不知道,有高手知道的话,麻烦指点。