Centos 7システムにincronをインストールしました。
初期テストのために、テーブルに簡単な項目があります。ファイルがターゲットフォルダに移動されると、スクリプトが実行されます。私が最初にしたことは実行でした。
/dir IN_MOVED_TO logger success
しかし、これはうまくいきません。ファイルを宛先フォルダーに配置すると、/var/logs/messages に次のメッセージが表示されます。
Aug 14 23:29:27 Clone-Dev-AnalyticsAutomation gnome-session: gnome-session-binary[2329]: WARNING: Unable to inhibit system: GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Permission denied
Aug 14 23:29:32 Clone-Dev-AnalyticsAutomation journal: unable to create file '/run/user/1018/dconf/user': Permission denied. dconf will not work properly.
sudoコマンドなしでincrondが開始されたことを知り、sudoコマンドで再起動しましたが、まだ同じ結果が得られます。
私は走ったサービス incrond 状態 -l
Aug 14 23:13:48 Clone-Dev incrond[6875]: loading user tables
Aug 14 23:13:48 Clone-Dev incrond[6875]: loading table for user simon
Aug 14 23:13:49 Clone-Dev incrond[6875]: loading table for user analytics
Aug 14 23:13:49 Clone-Dev incrond[6875]: loading table for user root
Aug 14 23:13:49 Clone-Dev incrond[6875]: access denied on ## - events will be discarded silently
Aug 14 23:13:49 Clone-Dev incrond[6875]: cannot create watch for user root: (22) Invalid argument
Aug 14 23:13:49 Clone-Dev incrond[6875]: access denied on ## - events will be discarded silently
Aug 14 23:13:49 Clone-Dev incrond[6875]: cannot create watch for user root: (22) Invalid argument
Aug 14 23:13:49 Clone-Dev incrond[6875]: ready to process filesystem events
何が起こったのかよく分からない。 incrondがコマンドを実行しようとしていますが、必要な権限がないようです。
ベストアンサー1
問題は、それを実行しているサービスやユーザーにはありません。このディレクトリの権限を変更します。
chmod 644 /run/user/1018/dconf/user
または親ディレクトリの場合。他のユーザーが実行している場合は、777も機能します。
使用しているプロセス(この場合はgnome-session - 私の推測ではGDBus)に明示的なGUIがある場合は、dconf / userでどのプロセスがdirコマンド(incronで)と競合しているかを確認してください。それに応じて権限を無効にするか、プロセスを拒否するかを選択します。
$>pidof dconf*
$>disown --pid=<PID of conflicting process>
サービスをrootとして実行する必要はありません。これは、プロセスを実行しているgnomeセッションGUIと競合する可能性が高いです。編集 - /etc/incron.allow のユーザーが incron を実行できるようにします。
インクロン設定などの単純なbashは次のとおりです。
if[ IN_CREATE_DIR /run/user/1018/dconf/user ]
then
set /dir moved
mailx -r "server" -s "dir moved" [email protected]
fi
/dir IN_MOVED_FROM /log success
実行するだけで十分だと思いますが、そうではないと思います。