当前位置: 首页
系统平台
UNIX让普通用户具备关机权限的操作方法

UNIX让普通用户具备关机权限的操作方法

热心网友 时间:2026-04-15
转载

在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系统如何通过权限和资源的精巧配置,来实现既严格又实用的访问控制。

来源:https://www.jb51.net/os/Unix/1469.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Win11 26H1 Canary预览版28020.1685发布:附KB5079381完整更新日志

Win11 26H1 Canary预览版28020.1685发布:附KB5079381完整更新日志

Win11 26H1 Canary预览版28020 1685发布:附KB5079381完整更新日志 微软于3月6日向Canary频道的Windows Insider项目成员推送了最新预览版更新,补丁编号为KB5079381。成功安装此更新后,您的Windows 11 26H1系统版本将升级至Buil

时间:2026-04-16 12:53
vmware中如何为虚拟机增加硬盘容量

vmware中如何为虚拟机增加硬盘容量

两种实用方法:扩展VMware虚拟机磁盘容量 虚拟机用久了,磁盘空间告急是常有的事。别着急,这里提供两种主流且经过验证的解决方案,你可以根据实际情况灵活选择。 第一种方法:增加新硬盘分区 这相当于给你的虚拟机加装一块全新的物理硬盘,操作直观,适合绝大多数用户。 第一步,在VMware中挂载新虚拟硬盘

时间:2026-04-15 22:17
常用的网络操作系统有哪些

常用的网络操作系统有哪些

网络操作系统大观:四大主流家族的演进与特性 1、Windows家族:从桌面到网络的持续进化 提到网络操作系统,Windows家族是绕不开的重量级选手。一路走来,这个系列的变化可谓巨大。从16位、32位再到64位的技术基石变迁,版本更迭的轨迹清晰可见:从最初的Windows 1 0,到后来成为一代人记

时间:2026-04-15 22:13
suse 10.3 安装http apche2时遇到的rpm依赖问题的解决方法

suse 10.3 安装http apche2时遇到的rpm依赖问题的解决方法

在SUSE 10 3中安装http apache2的依赖问题解决 在SUSE 10 3系统上安装Apache2时,很多人都会遇到一个典型的依赖错误。系统会明确提示你缺少几个关键的库文件,具体信息通常是这样: libapr1 >= 1 0 is needed by apache2-2 2 3-16 2

时间:2026-04-15 22:11
wdcp的/www目录大小调整或增加分区/硬盘的方法

wdcp的/www目录大小调整或增加分区/硬盘的方法

场景与问题 在日常运维中,你可能总会遇到这么个窘境:根分区那个小家伙,眼瞅着空间就要见底了,但偏偏还有海量数据等着往里塞。怎么办?一个非常直接的想法是,要么把数据迁移到另一个空闲的分区,要么干脆为新数据增加一整块硬盘。这操作听起来复杂,但其实跟着清晰的步骤走,也就那么回事。 准备工作 咱们先定个标准

时间:2026-04-15 22:10
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程