UNIX让普通用户具备关机权限的操作方法
在UNIX系统中赋予普通用户安全的关机权限
在UNIX系统里,关机操作通常被划归为超级用户的核心权限之一,这很好理解,毕竟这关系到整个系统的生死。不过,在实际的运维场景中,我们常常会遇到一个矛盾的需求:既希望普通用户能执行关机操作(比如在公共机房的终端机旁),又必须严格限制他们获得任何其他超级权限。这该怎么实现呢?
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
一个巧妙且经典的思路是,创建一个“专用”的关机用户。这个用户的终极使命就是执行关机,除此之外啥也干不了。实现方法的核心,在于修改该用户的登录Shell(sh),将其指向一个我们自定义、有严格逻辑控制的关机程序。下面,我们就来看看具体的操作步骤。
步骤一:创建专用用户并修改配置
首先,像创建普通用户一样,在系统中新建一个名为 halt 的用户。为了简化登录过程,可以将其设置为无需密码。接下来,才是关键操作:用vi编辑器打开 /etc/passwd 文件,找到halt用户对应的那一行,将其修改为如下内容:
halt:x:0:1:/etc:/etc/halt
这行配置信息大有玄机:它让halt用户拥有了超级用户身份(UID为0),但其主目录被设定为/etc,更关键的是,其登录Shell被指定为/etc/halt——这正是我们要编写的自定义关机程序。
步骤二:编写智能关机脚本
现在,我们需要创建这个核心的 /etc/halt 可执行文件。它的任务不仅仅是执行关机,还要具备安全检查能力,防止在仍有其他用户在线时误操作。脚本内容如下:
HALT_TERMINAL=`tty`
case "$HALT_TERMINAL"
in
/dev/tty0[1-9]|/dev/tty1[012])
w -h | fgrep -v halt > /dev/null
if [ $? = 0 ]
then
clear
echo "\n\n\n\n\n\n"
setcolor red black
echo " [ 普通用户关机程序 ] ** 警告** "
setcolor yellow black
echo "以下用户未退出系统无法自动关机。请选择关机方式:\n"
echo " 注册用户注册终端号"
w -h | fgrep -v halt | awk '{print " " $1 " " $2}'
echo " \n\n "
echo " 1: 中断关机程序。"
echo " 2: 系统强行关闭计算机。(可能会造成数据丢失)\n\n"
while true
do
echo -n " 请选择:"
read select
if test "$select"= 1
then
setcolor white black
clear
exit 1
else
if test "$select"=2
then
setcolor white black
/etc/haltsys
fi
fi
done
else
cd /usr/tmp
rm -f *
cd
/etc/haltsys
fi
echo "\n\n 普通用户关机程序不能在终端上运行!!"
esac
exit
这个脚本做了几件重要的事:首先,它通过tty命令判断调用来源,限制了该程序只能在特定的虚拟终端上运行(如tty01到tty12),这本身就是一道安全护栏。其次,在执行关机前,它会用w -h命令检查系统内是否还有其他登录用户(排除自己)。
如果发现有其他用户在线,脚本不会蛮干,而是会清晰列出在线用户信息,并给出两个选择:要么放弃关机,要么坚持强行关机(并给出数据丢失的风险提示)。只有当确认没有其他用户时,它才会先清理/usr/tmp目录,然后调用真正的关机命令/etc/haltsys。
步骤三:设置权限并投入使用
用vi编辑器将上述脚本保存为/etc/halt文件后,别忘了通过chmod命令,将其权限设置为普通用户可读和可执行。至此,所有配置就完成了。
现在,普通用户只需要在登录提示符“Login:”后输入用户名halt,就能启动这个安全的关机流程。整个过程既满足了便利性需求,又通过多层检查(终端限制、用户在线检查、二次确认)极大保障了系统安全,防止了误关机导致的数据丢失或工作中断。
这套方案思路清晰,兼顾了灵活与安全,在SCO Open UNIX 5.0等操作系统环境中被验证为可靠有效。它生动地展示了UNIX系统如何通过权限和资源的精巧配置,来实现既严格又实用的访问控制。
相关攻略
网络操作系统大观:四大主流家族的演进与特性 1、Windows家族:从桌面到网络的持续进化 提到网络操作系统,Windows家族是绕不开的重量级选手。一路走来,这个系列的变化可谓巨大。从16位、32位再到64位的技术基石变迁,版本更迭的轨迹清晰可见:从最初的Windows 1 0,到后来成为一代人记
在UNIX系统中赋予普通用户安全的关机权限 在UNIX系统里,关机操作通常被划归为超级用户的核心权限之一,这很好理解,毕竟这关系到整个系统的生死。不过,在实际的运维场景中,我们常常会遇到一个矛盾的需求:既希望普通用户能执行关机操作(比如在公共机房的终端机旁),又必须严格限制他们获得任何其他超级权限。
什么是价差速递 在交易领域,“价差”这个概念并不陌生,它本质上指的是两个相关头寸之间的价格差异。那么,“价差速递”是什么呢?简单来说,它就是抓住资产在不同市场间的价格差来盈利的一种方式。以欧易平台为例,其推出的“价差速递”功能,正是专门为追求市场中性策略的交易者设计的。它允许你同时做多一种产品和做空
什么是对冲? 加密货币市场的价格变化,向来以快速剧烈著称。上午还在上涨的资产,下午就可能面临回调。在这种高波动的环境下,交易者们自然会寻求一种方法来保护自己的资金免受冲击。这种方法就是对冲——一种旨在降低风险、提升投资组合稳定性的核心策略。简单来说,对冲的核心逻辑在于:当你持有的主要加密货币资产价值
新浪科技讯 12月9日上午消息,智谱宣布开源其核心AI Agent模型AutoGLM。该模型是一个具备“Phone Use”(手机操作)能力的AI Agent,能够稳定完成外卖点单、机票预订等长达数
热门专题
热门推荐
云顶之弈S17星神赛季:重装妖姬阵容深度解析与上分攻略 云顶之弈S17“星神”赛季现已全面开启,全新羁绊、英雄与赛季机制为战场带来了颠覆性的变化。在众多阵容套路中,一套以“诡术妖姬”乐芙兰为主C,搭配重装战士与法官羁绊的体系表现尤为亮眼,成为当前版本稳定上分的强力选择。本文将为您深度解析这套重装妖姬
微软1月更新KB5074109新BUG:云存储文件导致OneDrive等应用卡死 近日,微软Windows用户遭遇了一个普遍困扰。1月20日,微软在其官方Windows发布健康仪表板上更新了状态,正式确认了1月累积更新KB5074109中存在一个影响广泛的缺陷。该问题波及了从Windows 10到W
在Linux系统管理中,Systemctl被誉为服务管理的“全能指挥官”。无论是启动核心服务、监控运行状态,还是进行系统故障排查,它都是管理员必备的利器。本文将深入解析如何利用Systemctl命令全面查看系统所有服务,并掌握高效管理技巧。 什么是 Systemctl? Systemctl是syst
苹果macOS 26 4开发者预览版 Beta 2发布:修复窗口缩小指针不跟随问题 苹果公司如期发布了面向Mac用户的macOS 26 4第二个开发者预览版(Beta 2),内部版本号为25E5218f。此次更新距离上一个Beta RC版本发布正好一周,延续了苹果系统更新的稳定节奏。 如何升级 iO
《亿万光年》:从舰船养成到战场微操,一份深度编队指南 在《亿万光年》的浩瀚星海中,想要成为一位合格的星际指挥官,核心秘诀无外乎两点:扎实的舰船养成与灵活的编队搭配,再辅以关键时刻的战场微操。这套组合拳,是应对宇宙中各种复杂战局的不二法门。今天,我们就来深入拆解这套玩法体系,助你打造一支所向披靡的无敌





