python运行控制台会话_Linux控制台访问、APP启用控制台访问(PAM)

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

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

他们可以访问某些通常无法访问的文件(通常是用来访问磁盘、光盘等的特殊设备文件)

由于单个计算机有多个控制台,多位用户可以在同一时间内在计算机上本地登录,其中之一必定在访问这些文件的角逐中“获胜”。第一个在控制台登录的用户完全拥有那些文件。一旦第一个用户注销,下一个登录的用户就会拥有这些文件。

与之相反, 每个 在控制台登录的用户都被允许运行通常只限于根用户的程序来完成任务。如果

X 在运行,这些行动可以被包括在图形化用户界面的菜单内。在该发行版本中,可从控制台访问的程序包括

halt 、 poweroff 、和 reboot 。

24.1.禁用通过Ctrl-Alt-Del关机

按照默认设置, /etc/inittab 文件指定你的系统可在控制台使用

[Ctrl] - [Alt] - [Del] 键组合来关闭并重启系统。如果你想完全禁用这项能力,你需要把

/etc/inittab 文件中下面一行变成注释,方法是在句前加一个井号( # ):

ca::ctrlaltdel:/sbin/shutdown-t3-rnow

另外,你可能只是想授予个别非根用户从控制台使用 [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 中列出的用户(或根用户)是否在虚拟控制台上登录了。如果登录者是其中之一,系统关闭就会继续;否则,系统控制台上就会显示出错误消息。

24.2.禁用控制台程序访问

为了禁用用户对控制台程序的访问,你应该以根用户身份运行下面的命令:

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

24.3.禁用所有控制台访问

PAM

pam_console.so 模块管理控制台文件的权限和验证。如果你想禁用所有的控制台访问,包括程序和文件的访问,把所有

/etc/pam.d 目录中引用 pam_console.so 的句子都改为注释。以根用户使用下面的脚本就可以达到这一目的:

cd /etc/pam.d

for i in * ; do

sed '/[^#].*pam_console.so/s/^/#/' < $i > foo && mv foo

$i

done

24.4.定义控制台

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

24.5.使文件可从控制台访问

/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 文件的最后一段寻找与以下类似的句子:

06600660root.floppy

06000640root

06000600root.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 :

cat /etc/security/console.apps/foo

FALLBACK=true

PROGRAM=/usr/share/system-config-date/system-config-date.py

. config-util

在 /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 的从面板上的「主菜单」按钮启动的应用程序被成功地验证,

用户可以通过点击图标并选择忘记验证选项来忘记缓存验证。

24.7. floppy组群

如果由于某种原因,控制台访问对你不适用,你需要给非根用户提供到系统软盘驱动器的访问,这可以通过使用 floppy 组群来达到。使用你选定的工具把用户添加到 floppy 组群就可以了。这里向你提供了一个如何使用

gpasswd 来把用户 fred 添加到

floppy 组群的例子:

[root@bigdog root]#gpasswd -a fred floppy

Adding user fred to group floppy

[root@bigdog root]#

现在,用户 fred 就可以通过控制台访问系统的软盘驱动器了。

原文路径:http://school.21tx.com/2005/03/13/20356.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值