我刚刚创建了一个脚本(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
,但我有两个问题:
- logscreenlock 由我的用户拥有,我想保持这种状态,但即使在之后
chmod a+x logscreenlock
,如果我尝试这样做,我也会被拒绝sudo ./logscreenlock
。我尝试过usermod -a -G <myusergroup> root
,但没有运气。我怎样才能克服这个问题? - 如何在启动应用程序中使用 sudo?它会立即提示我输入密码吗?
编辑:我后来发现我无法以 root 身份执行 logscreenlock 的原因是该脚本位于远程文件系统中,我的机器的 root 未经身份验证。
答案1
假设您的用户名和组是里卡布,你试过了sudo chgrp ricab /var/log/screenlock.log
吗sudo chmod g+rw /var/log/screenlock.log
?然后你应该能够读写屏幕锁日志使用您的帐户。
答案2
/var/log
非root用户无法写入是正常的。调用 sudo 并不是一个好的解决方案。除非某些事情确实需要,否则不要提升权限。将日志文件写入您的主目录中。
logscreenlock >~/.screenlock.log