Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I just created a script (logscreenlock) to log lock/unlock screen events (derived from this post):

#! /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 )

I wanted to have a startup daemon running logscreenlock > /var/log/screenlock.log. Now, to write into /var/log, I need root permissions (I am a sudoer). So I would need sudo logscreenlock > /var/log/screenlock.log, but I have two problems with that:

  1. logscreenlock is owned by my user and and I would like to keep it that way, but even after chmod a+x logscreenlock, I get permission denied if I try to sudo ./logscreenlock. I tried to usermod -a -G <myusergroup> root, but no luck. How can I overcome this?
  2. How can I sudo in the startup applications? will it prompt me for a password right away?

EDIT: I found out later that the reason why I couldn't execute logscreenlock as root was that this script is in a remote filesystem where my machine's root is not authenticated.

share|improve this question

2 Answers 2

up vote 1 down vote accepted

Assuming your username and group are ricab, have you tried sudo chgrp ricab /var/log/screenlock.log and sudo chmod g+rw /var/log/screenlock.log? You should then be able to read and write screenlock.log using your account.

share|improve this answer
    
That would work, but that's more of a workaround. I was looking for more general answers to the questions. "how can a user grant execute permissions to the root?" and "how can I run startup applications as root?". I will update my question to clarify that. –  ricab Sep 11 '13 at 13:52
    
Well, forget the previous comment, I just found out that the reason why I couldn't execute the script as root is because the script is in a remote filesystem (where my machine's root is not authenticated)... otherwise sudo would work just fine. So I will take your workaround after all, thanks! –  ricab Sep 11 '13 at 13:55

It's normal that you can't write to /var/log as a non-root user. Calling sudo is not a good solution. Don't elevate permissions unless they're actually needed for something. Write the log file in your home directory.

logscreenlock >~/.screenlock.log
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.