7.6. 配置可插拔认证模块

可插拔认证模块 系统可以用来给通过控制台登录的用户赋予特殊权限。它被用来使控制台用户可以挂载像软盘这样的设备;通常他们需要成为超级用户才能挂载磁盘。

PAM 配置文件/etc/security/console.perms包含<console>变量。对于 Red Hat Linux 7.1<console>是正则表达式

图 7-9。默认<console>console.perms指的是连接的键盘和屏幕

<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9]

在文件后面<console>用户被授予使用一些设备的权限。这是通过在登录和注销时更改设备权限来完成的。

图 7-10。默认设备列表在console.perms

<console>  0660 <floppy>     0660 root.floppy
<console>  0600 <sound>      0600 root
<console>  0600 <cdrom>      0660 root.disk
<console>  0600 <pilot>      0660 root.uucp
<console>  0600 <jaz>        0660 root.disk
<console>  0600 <zip>        0660 root.disk
<console>  0600 <ls120>      0660 root.disk
<console>  0600 <scanner>    0600 root
<console>  0600 <camera>     0600 root
<console>  0600 <memstick>   0600 root
<console>  0600 <flash>      0600 root
<console>  0600 <fb>         0600 root
<console>  0600 <kbd>        0600 root
<console>  0600 <joystick>   0600 root
<console>  0600 <v4l>        0600 root
<console>  0700 <gpm>        0700 root
<console>  0600 <mainboard>  0600 root
<console>  0600 <rio500>     0600 root

上面列出了两种类型的设备:一种是连接附加键盘和显示器的人员所需的设备,另一种是允许方便访问设备的设备。配置文件未能区分 第 1.3 节 中提到的逻辑控制台和物理控制台。修改配置文件是为了创建这种区分。

图 7-11。设备在console.perms连接附加键盘和屏幕所需

<console>  0600 <fb>         0600 root
<console>  0600 <kbd>        0600 root
<console>  0600 <joystick>   0600 root
<console>  0600 <v4l>        0600 root
<console>  0700 <gpm>        0700 root

剩余的设备应该被修改为仅允许从串行控制台连接的人员控制。例如,我们不希望在托管地点的非特权用户挂载软盘。为串行控制台定义一个新的控制台类型,例如<sconsole>.

图 7-12。添加<sconsole>console.perms以指代串行控制台

<sconsole>=ttyS0

现在修改剩余的条目从<console><sconsole>.

图 7-13。剩余设备在console.perms修改为指代串行控制台

<sconsole>  0660 <floppy>     0660 root.floppy
<sconsole>  0600 <sound>      0600 root
<sconsole>  0600 <cdrom>      0660 root.disk
<sconsole>  0600 <pilot>      0660 root.uucp
<sconsole>  0600 <jaz>        0660 root.disk
<sconsole>  0600 <zip>        0660 root.disk
<sconsole>  0600 <ls120>      0660 root.disk
<sconsole>  0600 <scanner>    0600 root
<sconsole>  0600 <camera>     0600 root
<sconsole>  0600 <memstick>   0600 root
<sconsole>  0600 <flash>      0600 root
<sconsole>  0600 <mainboard>  0600 root
<sconsole>  0600 <rio500>     0600 root