incrondスクリプトがトリガーされたときにエラーが発生する

incrondスクリプトがトリガーされたときにエラーが発生する

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

実行するだけで十分だと思いますが、そうではないと思います。

おすすめ記事