無効なアカウントがプロセスを実行できないようにする

無効なアカウントがプロセスを実行できないようにする

top毎日、私は次のようなものを使ってDebian(Stretch)サーバーのプロセスをps -aux見ていきます。

$ sudo passwd --status myuser
myuser L 12/12/2016 ...

ただし、ユーザーが実行中のアクティビティ(インストールされていない状態)に戻ると、約ps2分ごとに数秒間持続し、1つのCPUで多くのリソース(50〜90%)を消費できます。topnode

表示される内容は次のとおりです$ top -U myuser

PID  USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 
                                                                                                                                      
2172 myuser+   20   0  382868 144940  34668 R  64.5  2.4   0:01.94 node

そして$ ps -e -H -O pid,ppid,stime,etime,user,args> file

PID   PID   PPID STIME  ELAPSED USER      COMMAND      S TTY  TIME     COMMAND
2172  2172  2155 11:22    00:05 myuser+   node server  S ?    00:00:02 node server

ロックされたユーザーがブロックする意図でこのプロセスをどのように開始したかを詳しく調べるにはどうすればよいですか。

編集する:@Paul_Pedantが提案したようにユーザーのcrontabを確認しましたが、スケジュールされた操作はありませんでした。

また、ユーザーのメールを確認しましたが、ルートから毎日メールが届きました(彼らはマシンを最初にインストールしたので、以前はrootアクセス権を持っていました)。電子メールの件名は、コメントに示されているように、Cron Work Reportです。ただし、ユーザーに正しいクローン操作がありません。私は現在daily.cronを調べていますが、そこにユーザーに関連するコンテンツが見つからないようです。

答え1

最も可能性の高いシナリオは、ユーザーに定期的に実行されるcronjobがあることです。

以下は予期しないいくつかのシナリオです。

同じUIDにマップされた/ etc / passwdに複数のユーザー名がある可能性があります。 LDAPまたはActive Directory認証を使用している可能性があり、/etc/nsswitch.confは同じUIDを持つ複数のソースからパスワードエントリを取得します。指定されたUIDで見つかった最初のユーザー名を表示しますpstop

UIDを使用して新しいプロセスを生成するルートとして実行されるプログラムがあるかもしれません。たとえば、fastcgiを介してノードに接続し、別のUIDを使用してノードを自動的に起動するようにApache Webサーバーを設定できます。 https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

node実行可能ファイルをユーザーのホームディレクトリにコピーできるので、rootとしてインストールしても構いません。

答え2

ドッカーが理由だ。

詳細はこちら:https://forums.docker.com/t/confusion-about-the-user-a-process-run-as/48702/2

ホストのUID 1000がロックされています。

ただし、Docker はコンテナ内で UID 1000 でプロセスを起動し、ホストでプロセスを表示すると、これらのプロセスはロックされたユーザー起動プロセスとして表示されます。

明らかに、コンテナ内のUID 1000はホストのUID 1000とは異なります。おそらく1000は、adduser実行時にデフォルトで使用可能な最初のIDなので、使用されます。

関連情報