시작 응용 프로그램에서 루트로 사용자 스크립트 실행

시작 응용 프로그램에서 루트로 사용자 스크립트 실행

방금 화면 잠금/잠금 해제 이벤트를 기록하는 스크립트(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에 쓰려면 루트 권한이 필요합니다(저는 sudoer입니다). 그래서 해야 하는데 sudo logscreenlock > /var/log/screenlock.log두 가지 질문이 있습니다.

  1. logscreenlock은 내 사용자의 소유이므로 그대로 유지하고 싶지만 그 이후에도 chmod a+x logscreenlock그렇게 하려고 하면 거부됩니다 sudo ./logscreenlock. 나는 노력했지만 usermod -a -G <myusergroup> root운이 없었다. 이 문제를 어떻게 극복할 수 있습니까?
  2. 시작 응용 프로그램에서 sudo를 사용하는 방법은 무엇입니까? 즉시 비밀번호를 묻는 메시지가 표시됩니까?

편집: 나중에 루트로 logscreenlock을 실행할 수 없는 이유는 스크립트가 원격 파일 시스템에 있고 내 컴퓨터의 루트가 인증되지 않았기 때문이라는 것을 발견했습니다.

답변1

귀하의 사용자 이름과 그룹이 다음과 같다고 가정합니다.리캅, 시도해 sudo chgrp ricab /var/log/screenlock.log보셨나요 sudo chmod g+rw /var/log/screenlock.log? 그럼 읽고 쓸 줄 알아야지화면 잠금 로그귀하의 계정을 사용하십시오.

답변2

/var/log루트가 아닌 사용자가 쓸 수 없는 것은 정상입니다. sudo를 호출하는 것은 좋은 해결책이 아닙니다. 실제로 필요한 경우가 아니면 권한을 확대하지 마십시오. 홈 디렉터리에 로그 파일을 씁니다.

logscreenlock >~/.screenlock.log

관련 정보