起動アプリケーションで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.log2つの質問があります。

  1. logscreenlockは私のユーザーの所有者なので、そのままにしたいのですが、それ以降もそうしようとするとchmod a+x logscreenlock拒否されますsudo ./logscreenlock。頑張ってたけどusermod -a -G <myusergroup> root運がなかった。この問題をどのように克服できますか?
  2. 起動アプリケーションでsudoを使用する方法は?すぐにパスワードの入力を求められますか?

編集:後でrootとしてlogscreenlockを実行できない理由は、スクリプトがリモートファイルシステムにあり、自分のコンピュータのルートが認証されていないためです。

答え1

お客様のユーザー名とグループが次のとおりです。リカプ試してみsudo chgrp ricab /var/log/screenlock.logましたsudo chmod g+rw /var/log/screenlock.logか?それでは読んで書くことを知っておくべきです。画面ロックログあなたのアカウントを使用してください。

答え2

/var/logroot以外のユーザーが書き込めないのは正常です。 sudoを呼び出すのは良い解決策ではありません。実際に必要な場合を除き、権限を拡大しないでください。ホームディレクトリにログファイルを書き込みます。

logscreenlock >~/.screenlock.log

関連情報