![跨平台方式确定当前用户是否有权关闭计算机(无需实际尝试关闭)](https://linux22.com/image/211462/%E8%B7%A8%E5%B9%B3%E5%8F%B0%E6%96%B9%E5%BC%8F%E7%A1%AE%E5%AE%9A%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E6%98%AF%E5%90%A6%E6%9C%89%E6%9D%83%E5%85%B3%E9%97%AD%E8%AE%A1%E7%AE%97%E6%9C%BA%EF%BC%88%E6%97%A0%E9%9C%80%E5%AE%9E%E9%99%85%E5%B0%9D%E8%AF%95%E5%85%B3%E9%97%AD%EF%BC%89.png)
如何(以安全的方式)检查当前用户是否具有在 Unix 和 Linux 上关闭系统所需的权限?
我正在编写一个脚本,需要检查当前用户是否具有关闭系统所需的权限。但是,当然,我想确定这一点前实际上试图关闭系统。
理想情况下,我想要一个能够在尽可能多的 Unix 和 Linux 发行版上运行的解决方案。
我可以在脚本中执行什么来检查当前用户是否有权关闭系统?
答案1
我无法判断该-k
选项是否在所有 unixoid 平台上都可用,但您可以尝试一下并检查退出代码。但这可能会向所有终端发出警告。
$ shutdown -k -r now; echo $?
shutdown: you must be root to do that!
Usage: shutdown [-akrhPHfFnc] [-t sec] time [warning message]
[...]
-k: don't really shutdown, only warn.
[...]
1
$ sudo shutdown -k -r now; echo $?
Broadcast message from root@macalla (pts/2) (Mon Oct 3 11:25:09 2022):
The system is going down for reboot NOW!
Shutdown cancelled.
0