了解用户何时登录 Solaris 10

了解用户何时登录 Solaris 10

我有一个在启动时启动的服务,用于监控 UPS。每次用户登录时,我都需要显示一个对话框,说明 UPS 已连接、已断开连接等。有没有办法让我的应用程序知道用户何时登录并显示该对话框?

该应用程序必须在登录屏幕上运行,以防 UPS 离线且系统需要关闭。此外,还需要 root 权限,因此它不能仅在用户的启动脚本中运行。

系统中的每个用户都需要获取对话框,因此将其添加到用户的 .profile 中并不是一件简单的事情。

感谢您的任何帮助,您可以提供。

答案1

如果您使用的是 solaris,那么您可以考虑创建一个 rbac 配置文件,允许用户使用 uid 0 执行此 ups 状态命令,并将其粘贴在系统和/或默认配置文件中,而不是设置 suid。

答案2

一些东西:

首先,/etc/profileSUID 位将用于几乎每个登录 shell。其次,SUID 位用于确保程序始终以特定用户(例如 root)身份运行。因此,如果您希望让应用程序以 root 身份为每个登录用户运行,则需要确保应用程序归 root 所有,然后运行chmod u+s /the/app并将其添加到 /etc/profile。

第三,您可能想要做的是让服务在启动时以 root 身份运行,然后使用级别syslog()记录这些消息emerg,默认情况下会向每个用户广播。如果 UPS 状态在登录时发生变化,这将提醒已登录的用户。

答案3

那么 - 如果报告 UPS 处于离线状态,您是否要求用户使用脚本关闭机器?

另一种方法可能是创建一个 CRON 作业,每小时、半小时或任何您想要的间隔轮询一次 UPS,并在必要时关闭。还有一些守护进程将监视来自 UPS 的实时消息并做出相应的反应 - 即向系统管理员发送电子邮件、警告用户并正常关闭系统。

Linux UPS 守护进程:http://linux.die.net/man/8/upsd

Solaris UPS 工具:http://blogs.oracle.com/mikey/entry/network_ups_tools_on_solaris

后者解释了用户通知和关机。

相关内容