在启动应用程序中以 root 身份执行用户脚本

在启动应用程序中以 root 身份执行用户脚本

我刚刚创建了一个脚本(logscreenlock)来记录锁定/解锁屏幕事件(源自这个帖子):

#! /bin/bash
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while true; do read X; if echo $X | grep "boolean true" &> /dev/null; then echo `date` "screen locked"; elif echo $X | grep "boolean false" &> /dev/null; then echo `date` "screen unlocked"; fi done )

我想让一个启动守护进程运行logscreenlock > /var/log/screenlock.log。现在,要写入 /var/log,我需要 root 权限(我是 sudoer)。所以我需要sudo logscreenlock > /var/log/screenlock.log,但我有两个问题:

  1. logscreenlock 由我的用户拥有,我想保持这种状态,但即使在之后chmod a+x logscreenlock,如果我尝试这样做,我也会被拒绝sudo ./logscreenlock。我尝试过usermod -a -G <myusergroup> root,但没有运气。我怎样才能克服这个问题?
  2. 如何在启动应用程序中使用 sudo?它会立即提示我输入密码吗?

编辑:我后来发现我无法以 root 身份执行 logscreenlock 的原因是该脚本位于远程文件系统中,我的机器的 root 未经身份验证。

答案1

假设您的用户名和组是里卡布,你试过了sudo chgrp ricab /var/log/screenlock.logsudo chmod g+rw /var/log/screenlock.log?然后你应该能够读写屏幕锁日志使用您的帐户。

答案2

/var/log非root用户无法写入是正常的。调用 sudo 并不是一个好的解决方案。除非某些事情确实需要,否则不要提升权限。将日志文件写入您的主目录中。

logscreenlock >~/.screenlock.log

相关内容