免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 780 | 回复: 0
打印 上一主题 下一主题

设置RedHat Linux控制台 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-14 10:41 |只看该作者 |倒序浏览

   当普通用户(非根用户)在本地登录到计算机上,他们被授予两类特殊权限:

  • 他们可以运行某些通常无法运行的程序

  • 他们可以访问某些通常无法访问的文件(通常是用来访问磁盘、光盘等的特殊设备文件)
       由于单个计算机有多个控制台,多位用户可以在同一时间内在计算机上登录,其中之一必定在访问这些文件的角逐中“获胜”。第一个在控制台登录的用户完全拥有那些文件。一旦第一个用户退出,下一个登录的用户就会拥有这些文件。
       与之相反,每个在控制台登录的用户都被允许运行通常只限于根用户的程序来完成任务。如果 X 在运行,这些行动可以被包括在图形化用户界面的菜单内。在该发行版本中,可从控制台访问的程序包括 halt、poweroff、和 reboot。
    禁止使用[Ctrl]-[Alt]-[Del]来关机
       按照默认设置,/etc/inittab 文件指定你的系统在控制台使用 [Ctrl]-[Alt]-[Del] 键组合时会关闭并重启系统。如果你想完全禁用这项能力,你需要把 /etc/inittab 文件中下面一行变成注释,方法是在行前加一个井号(#):
    ca::ctrlaltdel:/sbin/shutdown -t3 -r now
       另外,你可能只是想授予个别非根用户从控制台使用 [Ctrl]-[Alt]-[Del] 来重启系统的权利。你可以通过下面的步骤来把该特权仅限定给某些用户使用:

  • 在上面显示的 /etc/inittab 的那一行中添加 -a 选项,如下所示:
    ca::ctrlaltdel:/sbin/shutdown -a -t3 -r now
    -a 标志通知 shutdown 命令去寻找 /etc/shutdown.allow 文件。

  • 在 /etc 目录中创建一个叫做 shutdown.allow 的文件。shutdown.allow 文件应该列出允许使用 [Ctrl]-[Alt]-[Del] 来关闭系统的用户名。 /etc/shutdown.allow 文件使用列表格式,每行列出一名用户,如下所示:
    stephen
    jack
    sophie
       根据以上 shutdown.allow 文件的例子,stephen、jack、和 sophie 被允许使用 [Ctrl]-[Alt]-[Del] 来从控制台关闭系统。当这个键组合被使用时,/etc/inittab 中的 shutdown -a 就会查看 /etc/shutdown.allow 中列出的用户(或根用户)是否在虚拟控制台上登录了。如果登录者是其中之一,系统关闭就会继续;否则,系统控制台上就会显示出错误消息。
       关于 shutdown.allow 的详细信息,请参阅 shutdown 的说明书(man)页。
    禁用控制台程序访问
       为了禁用用户对控制台程序的访问,你应该以根用户身份运行下面的命令:
    rm -f /etc/security/console.apps/*
       在控制台没有被保护的环境下(BIOS 和引导装载程序的口令没有被设置;[Ctrl]-[Alt]-[Delete] 键组合没有被禁用;电源和重设开关没有被禁用等等),你可能不想允许任何用户在控制台上运行这些默认可以从控制台上使用的命令:poweroff、halt、和 reboot。
       要取消这些能力,以根用户身份运行下面的命令:
    rm -f /etc/security/console.apps/poweroff
    rm -f /etc/security/console.apps/halt
    rm -f /etc/security/console.apps/reboot
    禁用所有控制台访问
       PAM pam_console.so 模块管理控制台文件的权限和验证。如果你想禁用所有的控制台访问,包括程序和文件的访问,把所有 /etc/pam.d 目录中引用 pam_console.so 的句子都改为注释。以根用户使用下面的脚本就可以达到这一目的:
    cd /etc/pam.d
    for i in * ; do
    sed '/[^#].*pam_console.so/s/^/#/'  foo && mv foo $i
    done
    定义控制台
        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 文件的最后一段寻找与以下类似的句子:
    0660  0660 root.floppy
    0600   0640 root
    0600   0600 root.disk
       然后,添加和以下类似的一行:
    0600  0600 root
       当你在控制台登录后,你就会被给予 /dev/scanner 设备的所有权,其权限是 0600(仅可被你读写)。当你退出后,该设备就会被根用户所有,权限依旧是 0600(现在将只能被根用户读写)。
    为其它应用程序启用控制台访问
       如果你想使其它应用程序能被控制台用户访问,你要采取的步骤就会多一些。
       首先,只有驻留在 /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 配置文件必须包括以下几行:
    auth sufficient /lib/security/pam_timestamp.so
    session optional /lib/security/pam_timestamp.so
       第一个以 auth 开头的行应该在任何 auth sufficient 行之后,以 session 开头的行应该在所有 session optional 行之后。



    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/7816/showart_127846.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP