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
python运行控制台会话_Linux控制台访问、APP启用控制台访问(PAM)相关推荐
- python运行调出控制台_python控制台怎么打开
如何使用Python交互式控制台 进入互动控制台 可以从任何安装了Python的本地计算机或服务器访问Python交互式控制台. 您通常希望使用的命令输入Python的默认版本的Python交互式控制 ...
- 计算机无法连接到远程计算机上的另一个控制台会话,原因是您正在运行一个控制台会话
说明 其实解决办法挺简单的,大部分出现这种情况的应该电脑上都装有VMware虚拟机软件. 这是由于两个虚拟网卡的冲突引起的. 原因 这是电脑中两个虚拟网卡,解决的关键就在于这两个网卡的配置. 应该是两 ...
- 《机器学习系统设计:Python语言实现》一2.2 IPython控制台
.本节书摘来自华章出版社<机器学习系统设计:Python语言实现>一书中的第2章,第2.2节,作者 [美] 戴维·朱利安(David Julian),更多章节内容可以访问云栖社区" ...
- WCF服务以控制台程序为宿主时的跨域访问问题(附源码)
前几天研究SilverLight时碰到了这个问题,本以为很轻松的试验结果很不顺利,查了很多资料才解决了这个问题,在此把解决问题的方法写出来,也方便其它朋友借鉴. 问题是这样产生了,我在测试Silver ...
- Windows7 连接Windows Server服务器时提示:计算机无法连接到远程计算机上的另一个控制台会话。...
问题: 使用windows 7远程连接windows 2008 系统时,提示" 计算机无法连接到远程计算机上的另一个控制台会话,原因是您正在运行一个控制台会话" 解决方法: 1.将 ...
- 在Ubuntu服务器上打开第二个控制台会话
Ubuntu Server has the native ability to run multiple console sessions from the server console prompt ...
- Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用
Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用 系列文章:https://www.cnblogs.com/alunchen/p/10121379 ...
- 计算机无法连接到远程计算机上的另一个控制台会话
计算机无法连接到远程计算机上的另一个控制台会话 原因是 ip地址错了, 控制自己了.
- Appium使用Python运行appium测试的实例
Appium使用Python运行appium测试的实例 一. Appium之介绍 https://testerhome.com/topics/8038 详情参考-- https://testerho ...
最新文章
- AI的使用场景破冰开拓商业服务
- numpy 创建加一行_Python数据分析快速入门--NumPy amp; Pandas
- Spring-AOP @AspectJ进阶之增强织入的顺序
- 《啊哈!算法》笔记_Day01
- 直播这把“火”,还能烧多久?
- 破解百度翻译页面api参数加密
- Windows Mobile 数独游戏及全部源码
- 【资源下载】921页《用Python3带你从小白入门机器学习实战》教程手册
- easyPR源码解析之chars_identify.h
- 如何更换清华源_树莓派中国软件源
- mooon编译系统介绍(可复用Makefile)
- Arduino十大滤波算法程序大全(精编无错版)
- html登陆不刷新flask,Flask Button运行Python而不刷新页面?
- sendmail配置
- NWT失败反省:买个流量卡汝也看不顺眼,业务搞了几个?
- python物理模拟.pdf_用Python物理建模的第一本书终于来啦
- 三、pgAdmin 4 布局设置
- python sl4a_SL4A - 随风飘落的雨滴 - 博客园
- 一个神奇的测试_被套住就要说真话!《神奇女侠》的作者真的发明过测谎仪
- 实用 Windows 软件系列分享(七)