====== 快速开始 ======
在开始之前,如果你正在使用老版本的pam_usb那么请确保随后的升级指令。
===== 安装 ====
==== Gentoo Linux ====
Pam_usb 0.4.1在Gentoo上当前是keyword masked (~arch),所以你在安装它之前要进行unmask操作。
pam_usb 0.4.1 is currently keyword masked (~arch) on Gentoo, so you'll have to
unmask it before installing:
# echo "sys-auth/pam_usb" >> /etc/portage/package.keywords
# emerge -av ">=sys-auth/pam_usb-0.4.1"
==== Debian GNU/Linux ====
pam_usb is available on Debian testing (lenny) and unstable (sid).
# apt-get install libpam-usb pamusb-tools
==== 从源代码安装 ====
*步骤1:下载最新的发行版本
*步骤2:解压这个发行稳定版本。
$ tar -zxvf pam_usb-.tar.gz
$ cd pam_usb-
确保你已经安装了需要的依赖模块
pam_usb依赖libxml2, PAM, HAL 和 pmount。pam_usb的工具(pamusb-agent,pamusb-conf)依赖python python-celementtree 和 python-gobject。
*步骤2:编译和安装
$ make
# make install
==== Installing from Subversion ====
如果你想使用开发的版本,你能通过subversion得到源代码
$ svn co https:pamusb.svn.sourceforge.net/svnroot/pamusb/trunk/pam_usb
===== Setting up =====
==== 设备和用户 ====
* 一旦你连接你的USB设备到计算机,使用pamusb-conf来添加它到配置文件中:
# pamusb-conf --add-device MyDevice
请选者你想添加的设备。
*使用“SanDisk Corp. Cruzer Titanium (SNDKXXXXXXXXXXXXXXXX)" (only option)
【注意:SanDisk Corp. Cruzer Titanium (SNDKXXXXXXXXXXXXXXXX)是要添加的USB设备的硬件信息,那我们怎样得到?是通过pamusb-conf返回的信息得到?】
你希望使用哪个卷来存储数据?
*使用"/dev/sda1 (UUID: <6F6B-42FC>)" (only option)
Name : MyDevice
Vendor : SanDisk Corp.
Model : Cruzer Titanium
Serial : SNDKXXXXXXXXXXXXXXXX
Volume UUID : 6F6B-42FC (/dev/sda1)
Save to /etc/pamusb.conf ?
[Y/n] y
Done.
注意MyDevice可以是任意的你喜欢的名字。同时,你能添加你想要的许多设备。
* 用户
现在我们已经添加了设备,我们得对需要进行认证的用户进行配置。
# pamusb-conf --add-user root
你希望使用哪个设备来进行认证?
* 使用"MyDevice" (only option)
User : root
Device : MyDevice
Save to /etc/pamusb.conf ?
[Y/n] y
Done.
你如果想使用pam_usb通过(比如pamusb-conf --add-user MyUsername)为每个其他的用户名,那么重复这个步骤
*为了检查任何事情是否成功完成,我们将使用pamusb-check 工具,它将模拟一个认证事件。
# pamusb-check root
* Authentication request for user "root" (pamusb-check)
* Device "MyDevice" is connected (good).
* Performing one time pad verification...
* Verification match, updating one time pads...
* Access granted.
==== PAM 模块 ====
PAM模块pam_usb.so被用在应用序通过使用你的USB设备而不是通过提示你输入密码的方式对你进行认证。如果设备认证出现错误的话默认的基于密码的认证方式将被用来作为后备方案。
* 依赖你所使用的操作系统,你必须告诉PAM使用pam_usb.so来作为默认的认证方式。这将在/etc/pam.d/下有一个被命名为common-auth (Gentoo)的文件。如果你没有这些文件,你必须要编写每个你想使用的(比如 /etc/pam.d/su, /etc/pam.d/gdm 等等).pam.d服务文件。
*把下面的行放在/etc/pam.d/common-auth 或 /etc/pam.d/system-auth文件中:
auth required pam_unix.so nullok_secure
* 同时改变它像下面的的那样:
auth sufficient pam_usb.so
auth required pam_unix.so nullok_secure
* 你现在就能通过使用你的USB设备来对在pamusb.conf里面配置过的用户进行认证:
scox $ su
* pam_usb v.SVN
* Authentication request for user "root" (su)
* Device "MyDevice" is connected (good).
* Performing one time pad verification...
* Verification match, updating one time pads...
* Access granted.
* 试着对不同的应用程序进行认证(?)。pam_usb.so可以和任意的使用xscreensaver和其他的应用程序一起很好的工作。
==== 代理 ====
pam_usb代理(pamusb-agent)允许你当发生锁定和解锁事件的时候自动执行某个命令。这些事件当你插入或取出你的认证设备的时候发生。
为配置这些命令,你要编辑pam_usb的配置文件(/etc/pamusb.conf)和添加代理条目道你的用户节中。
比如,你可以当你取出设备的时候自动运行你的screensaver,并且当你插入你的设备的时候就使他们变得无效。
* GNOME (gnome-screensaver):
MyDevice
gnome-screensaver-command --lock
gnome-screensaver-command --deactivate
* KDE (kscreensaver):
MyDevice
dcop kdesktop KScreensaverIface lock
dcop kdesktop KScreensaverIface quit
你也能够通过添加额外的<代理>条目来执行更多的命令。
$ pamusb-agent
pamusb-agent[18329]: pamusb-agent up and running.
pamusb-agent[18329]: Watching device "MyDevice" for user "scox"
pamusb-agent[18329]: Device "MyDevice" has been removed, locking down user
"scox"...
pamusb-agent[18329]: Running "gnome-screensaver-command --lock"
pamusb-agent[18329]: Locked.
pamusb-agent[18329]: Device "MyDevice" has been inserted. Performing
verification...
pamusb-agent[18329]: Executing "/usr/bin/pamusb-check --quiet
--config=/etc/pamusb.conf --service=pamusb-agent scox"
pamusb-agent[18329]: Authentication succeeded. Unlocking user "scox"...
pamusb-agent[18329]: Running "gnome-screensaver-command --deactivate"
pamusb-agent[18329]: Unlocked.
依赖你的桌面环境,你的添加pamusb-agent到autostarted应用程序列表中以至于它可以自动的运行。
* GNOME:
- Open System -> Preferences -> Sessions
- Select Startup Programs and press Add
- Enter pamusb-agent and press OK
- Press Close
* KDE:
- cd ~/.kde/Autostart
- ln -s /usr/bin/pamusb-agent pamusb-agent
===== Troubleshooting =====
==== 日志分析====
pam_usb.so和pamusb-agent都使用syslog facility来 log 认证中的尝试。
这将对GUI-driven 应用程序(GDM)比如非常有用,在这里你没有必要看console的输出。
消息通过使用AUTH facility 被logged,他们通常被写入/var/log/auth.log 但是也要依赖你所使用的操作系统而有所不同。
# tail -f /var/log/auth.log
pamusb-agent[25429]: Device "sandisk" has been inserted. Performing
verification...
pamusb-agent[25429]: Executing "/usr/bin/pamusb-check --quiet
--config=/etc/pamusb.conf --service=pamusb-agent scox"
pam_usb[25485]: Authentication request for user "scox" (pamusb-agent)
pam_usb[25485]: Device "sandisk" is connected (good).
pam_usb[25485]: Access granted.
pamusb-agent[25429]: Authentication succeeded. Unlocking user "scox"...
pamusb-agent[25429]: Unlocked.
==== Enabling debug ====
使debug消息enable,将会帮助你找到错误是什么。
为了使他们enable,编辑/etc/pamusb.conf同时看下面的选项:
如果你想,你能为一个指定的用户或设备或服务 eanble debug 消息,
比如,如果你想为sudo服务eanble debug 消息,你要按照以下方式操作:
===== 已经工作 – 下部如何 ? =====
* 看一看配置文档
====== 配置 ======
配置通过pamusb-conf工具来完成,并在[[quickstart]]节中进行解释。多数的用户没有必要通过人工方式来改变pamusb.conf,但是你想改变一些默认的设置,这个文档将解释pamusb.conf配置文件的语法。
===== 介绍 =====
* 这个配置文件以XML的格式进行存储同时被分为4节:
- 默认的选项,被每个设备,用户和服务同时共享
- 设备描述和设置
- 用户描述和设置
- 服务描述和设置
* 语法是按下面的格式描述:
* 配置文件的位置
默认, pam_usb.so 和它的工具将查看存放在/etc/pasmusb.conf配置文件,但是你能通过使用-c的选项来告诉它使用一个不同威尔文件:
# /etc/pam.d/common-auth
auth sufficient pam_usb.so -c /some/other/path.conf
auth required pam_unix.so nullok_secure
你也可以使用-c选项来调用 pam_usb的工具比如,当调用pamusb-agent:
pamusb-agent -c /some/other/path.conf
===== 选项 =====
^ 名字 ^ 类型 ^ 默认值 ^ 描述 ^
| enable | Boolean | true | Enable pam_usb |
| debug | Boolean | false | Enable debug messages |
| quiet | Boolean | false | 安静模式(no verbose output) |
| color_log | Boolean | true | Enable colored output |
| one_time_pad | Boolean | true | Enable the use of one time pads |
| probe_timeout | Time | 10s | 等待卷标被侦测道的等待的时间|
| pad_expiration | Time | 1h | pads再次产生之间的时间间隔|
| hostname | String | 计算机的主机名字 | 计算机名字。通过计算机使用相同的设备必须是唯一的|
| system_pad_directory | String | .pamusb | 和用户home相关的路径被来存储一个 time pads|
| device_pad_directory | String | .pamusb |和设备相关的路径被来存储一个 time pads|
* 举例:
【可以看出节中的选项设置可以覆盖默认的选项设置,当然只对这节起作用】
===== 设备 =====
^ 名字 ^ 类型 ^ 描述 ^举例 ^
| id | Attribute | Arbitrary device name |MyDevice |
| vendor | Element | device's vendor name |SanDisk Corp. |
| model | Element | device's model name |Cruzer Titanium |
| serial | Element | serial number of the device |SNDKXXXXXXXXXXXXXXXX |
| volume_uuid | Element | UUID of the device's volume used to store pads |6F6B-42FC |
* 举例:
SanDisk Corp.
Cruzer Titanium
SNDKXXXXXXXXXXXXXXXX
6F6B-42FC
===== 用户 =====
^ 名字 ^ 类型 ^ 描述 ^举例 ^
| id | Attribute | Login of the user | root |
| device | Element | id of the device associated to the user |MyDevice |
| agent | Element | Agent commands, for use with pamusb-agent | Seebelow |
* 举例:
MyDevice
gnome-screensaver-command --lock
beep-media-player --pause
gnome-screensaver-command --deactivate
===== 服务 =====
^ 名字 ^ 类型 ^ 描述 ^ 举例 ^
| id | Attribute | Name of the service | su |
===== 完整例子 =====
This example demonstrates how to write a pam_usb configuration file and how to
combine and override options.
-->
-->
SanDisk Corp.
Cruzer Titanium
SNDKXXXXXXXXXXXXXXXX
6F6B-42FC
MyDevice
MyDevice
gnome-screensaver-command --lock
gnome-screensaver-command --deactivate
三、相关链接
官方网址: