Permissions
在啟動應用程序中以 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.log
,但我有兩個問題:
- logscreenlock 歸我的使用者所有,我想保持這種狀態,但即使在之後
chmod a+x logscreenlock
,如果我嘗試這樣做,我也會被拒絕sudo ./logscreenlock
。我試過了usermod -a -G <myusergroup> root
,但沒有運氣。我該如何克服呢?- 如何在啟動應用程序中使用 sudo?它會立即提示我輸入密碼嗎?
編輯:我後來發現我無法以 root 身份執行 logscreenlock 的原因是該腳本位於遠端文件系統中,我的機器的 root 未經過身份驗證。
假設您的使用者名和組是ricab,您嘗試過
sudo chgrp ricab /var/log/screenlock.log
嗎sudo chmod g+rw /var/log/screenlock.log
?然後,您應該能夠使用您的帳戶讀取和寫入screenlock.log 。
您不能以
/var/log
非 root 使用者的身份寫信是正常的。呼叫 sudo 不是一個好的解決方案。不要提升權限,除非它們確實需要某些東西。將日誌文件寫入您的主目錄。logscreenlock >~/.screenlock.log