Permissions

在啟動應用程序中以 root 身份執行使用者腳本

  • September 12, 2013

我剛剛創建了一個腳本(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 未經過身份驗證。

假設您的使用者名和組是ricab,您嘗試過sudo chgrp ricab /var/log/screenlock.logsudo chmod g+rw /var/log/screenlock.log?然後,您應該能夠使用您的帳戶讀取和寫入screenlock.log 。

您不能以/var/log非 root 使用者的身份寫信是正常的。呼叫 sudo 不是一個好的解決方案。不要提升權限,除非它們確實需要某些東西。將日誌文件寫入您的主目錄。

logscreenlock >~/.screenlock.log

引用自:https://unix.stackexchange.com/questions/90218