上午去测试一个加密卡设备权限会发生变化的问题,其实这个问题和我的声卡情况相似。我一般都采用不同用户登录我的系统。
系统启动时默认会把我的声卡设备权限设置为0666,但是使用的过程中权限会发生变化,变成缺省的0600,导致普通用户不能使用声卡。
查了一些资料,得知这些设备的权限设置与文件/etc/security/console.perms文件有关,因此这里贴出我找到的有关该文件的一些说明:
pam_console.so 模块使用 /etc/security/console.perms
文件来判定系统控制台上用户的权限。
该文件的语法非常灵活;你可以编辑该文件以便 不再应用这些指示。
然而,默认文件中有一行看起来如下:
tty[0-9][0-9] * :[0-9] .[0-9] :[0-9]
当用户登录后,他们会被连接到某种有名称的终端,要么是名称类似 :0 或 mymachine.example.com:1.0 的 X
服务器,要么是类似 /dev/ttyS0 或 /dev/pts/2 的设备。默认设置中,本地虚拟控制台和本地 X
服务器被定义为本地,但是如果你想把和你相邻的位于端口 /dev/ttyS1 上的串线终端也当作本地,你可以把上面一行改为:
tty[0-9][0-9] * :[0-9] .[0-9] :[0-9] /dev/ttyS1
使文件可从控制台访问
/etc/security/console.perms 文件中的某段包含以下几行:
/dev/fd[0-1] * /dev/floppy/ */mnt/floppy *
/dev/dsp */dev/audio */dev/midi * /dev/mixer */dev/sequencer
/dev/sound/ */dev/beep
/dev/cdrom */dev/cdroms/ */dev/cdwriter */mnt/cdrom *
如果有必要,你可以在这段里加入你自己编写的句子。请确定你添加的句中所指代的是正确的设备。譬如,你可以添加以下这一行:
/dev/scanner/dev/usb/scanner *
(当然,请确定 /dev/scanner 的确是你的扫描仪设备,而不是你的硬盘驱动器。)
这是第一步。第二步是定义如何处置那些文件。在/etc/security/console.perms 文件的最后一段寻找与以下类似的句子:
06600660 root.floppy 06000640 root 06000600 root.disk
然后,添加和以下类似的一行:
0600 0600 root
当你在控制台登录后,你就会被给予 /dev/scanner 设备的所有权,其权限是
0600(仅可被你读写)。当你注销后,该设备就会被根用户所有,权限依旧是 0600(现在将只能被根用户读写)。
24.6. 为其它应用程序启用控制台访问
如果你想使其它应用程序能被控制台用户访问,你要采取的步骤就会多一些。
首先, 只有 驻留在 /sbin 或 /usr/sbin 中的应用程序才能在控制台上访问,因此你想运行的程序也必须被保存在那两个目录中。满足了上面的条件后,执行下面的步骤:
创建一个从你的应用程序(如以下例子中的 foo )到
/usr/bin/consolehelper的链接:
cd /usr/bin ln -s consolehelper foo创建文件
/etc/security/console.apps/foo:
touch /etc/security/console.apps/foo在
/etc/pam.d/目录中为 foo 服务创建一个 PAM 配置文件。做到它的简单方法是使用 halt 服务的 PAM 配置文件的副本,如果你想改变行为的话,修改该文件:
cp /etc/pam.d/halt /etc/pam.d/foo
现在,当你运行 /usr/bin/ foo 时,它就会 调用 consolehelper ,该命令会借助 /usr/sbin/userhelper 来验证用户。要验证用户, consolehelper 会询问用户的口令(若 /etc/pam.d/ foo 是 /etc/pam.d/halt 文件的副本的话,否则,它 会仅执行在 /etc/pam.d/ foo 中的命令),然后使用根权限来运行 /usr/sbin/ foo 。
在 PAM 配置文件中,应用程序可以被配置使用 pam_timestamp
模块来记住(缓存)一次成功的尝试。当应用程序被启动并提供了正确的验证后(根口令),一个时间戳文件就会被创建。按照默认设置,成功验证会被缓存五分钟。在这段时期内,在同一会话中运行的其它配置使用
pam _timestamp 的应用程序会自动为该用户验证 — 用户不必再输入根口令。
该模块被包括在 pam 软件包中。要启用这项功能, etc/pam.d/ 中的 PAM 配置文件必须包括以下几行:
authsufficient/lib/security/pam_timestamp.so
sessionoptional/lib/security/pam_timestamp.so
第一个以 auth 开头的行应该在任何 auth sufficient 行之后,以 session 开头的行应该在所有 session optional 行之后。
如果配置使用 pam_timestamp 的从面板上的 「主菜单」 按钮启动的应用程序被成功地验证,
图标就会显示在面板的通知区域(若你运行的是 GNOME 桌面环境)。验证过期后(默认为五分钟),该图标就会消失。
用户可以通过点击图标并选择忘记验证选项来忘记缓存验证。
如果由于某种原因,控制台访问对你不适用,你需要给非根用户提供到系统软盘驱动器的访问,这可以通过使用 floppy 组群来达到。使用你选定的工具把用户添加到 floppy 组群就可以了。这里向你提供了一个如何使用 gpasswd 来把用户 fred 添加到 floppy 组群的例子:
[root@bigdog root] # gpasswd -a fred floppy
Adding user fred to group floppy
现在,用户 fred 就可以通过控制台访问系统的软盘驱动器了。