{"id":33505,"date":"2026-10-08T10:00:00","date_gmt":"2026-10-08T02:00:00","guid":{"rendered":"https:\/\/cn.hostease.com\/blog\/?p=33505"},"modified":"2026-10-09T11:59:59","modified_gmt":"2026-10-09T03:59:59","slug":"server-auditd-inotify-practical","status":"publish","type":"post","link":"https:\/\/cn.hostease.com\/blog\/guides\/server-auditd-inotify-practical\/","title":{"rendered":"\u670d\u52a1\u5668\u5173\u952e\u6587\u4ef6\u9632\u7be1\u6539\uff1aauditd \u4e0e inotify \u76d1\u63a7\u5b9e\u6218"},"content":{"rendered":"<p>\u7f51\u7ad9\u9996\u9875\u88ab\u6302\u9a6c\u3001\u914d\u7f6e\u6587\u4ef6\u88ab\u83ab\u540d\u6539\u52a8\u3001\u5b9a\u65f6\u4efb\u52a1\u91cc\u591a\u51fa\u53ef\u7591\u811a\u672c\u2014\u2014\u8fd9\u4e9b\u95ee\u9898\u7684\u5171\u540c\u70b9\u4e0d\u662f&#8221;\u653b\u51fb\u6709\u591a\u9ad8\u660e&#8221;\uff0c\u800c\u662f<strong>\u7ba1\u7406\u5458\u53d1\u73b0\u5f97\u592a\u665a<\/strong>\u3002\u5f88\u591a\u7ad9\u957f\u5728\u88ab\u5165\u4fb5\u540e\u7ffb\u67e5\u5907\u4efd\u624d\u53d1\u73b0\uff0c\u5173\u952e\u6587\u4ef6\u65e9\u5728\u51e0\u5929\u524d\u5c31\u88ab\u6539\u8fc7\uff0c\u8fd9\u671f\u95f4\u641c\u7d22\u5f15\u64ce\u53ef\u80fd\u5df2\u7ecf\u6536\u5f55\u4e86\u6076\u610f\u9875\u9762\uff0c\u5ba2\u6237\u6570\u636e\u4e5f\u53ef\u80fd\u5df2\u7ecf\u6cc4\u9732\u3002<\/p>\n<p>\u5982\u4f55\u7b2c\u4e00\u65f6\u95f4\u77e5\u9053\u670d\u52a1\u5668\u4e0a\u7684\u5173\u952e\u6587\u4ef6\u88ab\u4eba\u52a8\u8fc7\uff1f\u7b54\u6848\u662f\u628a&#8221;\u4e8b\u540e\u6392\u67e5&#8221;\u53d8\u6210&#8221;\u5b9e\u65f6\u76d1\u63a7&#8221;\u3002\u672c\u6587\u4f1a\u6559\u4f60\u7528 Linux \u81ea\u5e26\u7684\u4e24\u4e2a\u5de5\u5177\u642d\u5efa\u4e00\u5957\u6587\u4ef6\u9632\u7be1\u6539\u76d1\u63a7\u4f53\u7cfb\uff1a<strong>auditd<\/strong>\uff08\u5185\u6838\u7ea7\u5ba1\u8ba1\u6846\u67b6\uff0c\u8d1f\u8d23\u8bb0\u5f55&#8221;\u8c01\u6539\u7684&#8221;\uff09\u548c <strong>inotify<\/strong>\uff08\u5185\u6838\u6587\u4ef6\u4e8b\u4ef6\u901a\u77e5\u673a\u5236\uff0c\u8d1f\u8d23\u611f\u77e5&#8221;\u6587\u4ef6\u88ab\u6539\u4e86&#8221;\uff09\u3002\u4e24\u8005\u914d\u5408\uff0c\u65e2\u80fd\u79d2\u7ea7\u611f\u77e5\u6539\u52a8\uff0c\u53c8\u80fd\u7559\u4e0b\u53ef\u8ffd\u8d23\u7684\u5ba1\u8ba1\u65e5\u5fd7\u3002\u6574\u5957\u65b9\u6848\u4e0d\u5f15\u5165\u989d\u5916\u4ed8\u8d39\u8f6f\u4ef6\uff0c\u4e00\u53f0\u666e\u901a\u7684 <a href=\"https:\/\/cn.hostease.com\/vps\/\">VPS<\/a>\uff08<a href=\"https:\/\/cn.hostease.com\/vps\/\">\u865a\u62df\u4e13\u7528\u670d\u52a1\u5668<\/a>\uff0c\u5728\u4e00\u53f0<a href=\"https:\/\/cn.hostease.com\/dedicated-server\/\">\u7269\u7406\u670d\u52a1\u5668<\/a>\u4e0a\u901a\u8fc7\u865a\u62df\u5316\u5212\u5206\u51fa\u7684\u72ec\u7acb\u6258\u7ba1\u73af\u5883\uff0c\u5373 <a href=\"https:\/\/cn.hostease.com\/vps\/\">Hostease VPS \u4e3b\u673a<\/a>\uff09\u5c31\u80fd\u8dd1\u8d77\u6765\u3002<\/p>\n<p>\u6211\u4eec\u7528\u4e00\u4e2a\u5177\u4f53\u7684\u573a\u666f\u8d2f\u7a7f\u5168\u6587\uff1a\u5047\u8bbe\u4f60\u7684\u7f51\u7ad9\u6839\u76ee\u5f55\u5728 <code>\/var\/www\/html<\/code>\uff0cNginx \u4e3b\u914d\u7f6e\u5728 <code>\/etc\/nginx\/nginx.conf<\/code>\uff0c\u4f60\u5e0c\u671b\u4efb\u4f55\u5bf9\u8fd9\u4e9b\u8def\u5f84\u7684\u6539\u52a8\u90fd\u80fd\u5728\u51e0\u5206\u949f\u5185\u88ab\u53d1\u73b0\u5e76\u544a\u8b66\u3002\u6309\u4e0b\u9762\u7684\u6b65\u9aa4\u64cd\u4f5c\u5373\u53ef\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cn.hostease.com\/blog\/wp-content\/uploads\/2026\/10\/server-auditd-inotify-practical-cover.webp\" alt=\"\u670d\u52a1\u5668\u5173\u952e\u6587\u4ef6\u9632\u7be1\u6539\u76d1\u63a7\uff1a\u88ab\u76fe\u724c\u4fdd\u62a4\u7684\u670d\u52a1\u5668\u4e0e\u7be1\u6539\u544a\u8b66\u793a\u610f\" loading=\"lazy\" \/><\/p>\n<h2>\u4e24\u5957\u5de5\u5177\u7684\u5206\u5de5\uff1a\u4e3a\u4ec0\u4e48\u4e00\u4e2a\u4e0d\u591f\u7528<\/h2>\n<p>\u5148\u8bf4\u7ed3\u8bba\uff1aauditd \u548c inotify \u4e0d\u662f\u7ade\u4e89\u5173\u7cfb\uff0c\u800c\u662f\u4e92\u8865\u5173\u7cfb\uff0c\u53ea\u9760\u4efb\u4f55\u4e00\u4e2a\u90fd\u4f1a\u6709\u76f2\u533a\u3002<\/p>\n<p><strong>auditd \u662f\u5185\u6838\u5ba1\u8ba1\u5b50\u7cfb\u7edf\u7684\u524d\u7aef<\/strong>\u3002\u5b83\u8bb0\u5f55\u7684\u4e0d\u53ea\u662f&#8221;\u6587\u4ef6\u88ab\u6539\u4e86&#8221;\uff0c\u8fd8\u5305\u62ec\u6539\u52a8\u8fdb\u7a0b\u7684 PID\u3001\u6267\u884c\u547d\u4ee4\u3001\u6240\u5c5e\u7528\u6237\u751a\u81f3\u7236\u8fdb\u7a0b\u94fe\u3002\u6bd4\u5982\u4e0b\u9762\u7684\u89c4\u5219\u4f1a\u8bb0\u5f55\u6240\u6709\u5bf9 <code>\/etc\/passwd<\/code> \u7684\u5199\u5165\u64cd\u4f5c\uff1a<\/p>\n<pre><code class=\"language-bash\"># \u5b89\u88c5 auditd\uff08\u4ee5 Debian\/Ubuntu \u4e3a\u4f8b\uff09\nsudo apt update &amp;&amp; sudo apt install auditd audispd-plugins -y\n\n# \u6dfb\u52a0\u4e00\u6761\u5ba1\u8ba1\u89c4\u5219\uff1a\u76d1\u63a7 \/etc\/passwd \u7684\u5199\u5165\u3001\u5c5e\u6027\u53d8\u66f4\u548c\u5220\u9664\nsudo auditctl -w \/etc\/passwd -p wa -k passwd-watch\n\n# \u67e5\u770b\u89c4\u5219\u662f\u5426\u751f\u6548\nsudo auditctl -l\n# \u8f93\u51fa\u793a\u4f8b\uff1a-w \/etc\/passwd -p wa -k passwd-watch\n<\/code><\/pre>\n<p><code>-p wa<\/code> \u4e2d\u7684 <code>w<\/code> \u4ee3\u8868\u5199\u5165\uff08write\uff09\uff0c<code>a<\/code> \u4ee3\u8868\u5c5e\u6027\u53d8\u66f4\uff08attribute change\uff09\uff1b<code>-k passwd-watch<\/code> \u662f\u7ed9\u8fd9\u6761\u89c4\u5219\u8d77\u7684\u68c0\u7d22\u5173\u952e\u5b57\uff0c\u4e8b\u540e\u53ef\u4ee5\u7528\u5b83\u5feb\u901f\u8fc7\u6ee4\u65e5\u5fd7\u3002<\/p>\n<p><strong>inotify \u5219\u662f\u8f7b\u91cf\u7ea7\u7684\u5b9e\u65f6\u6587\u4ef6\u4e8b\u4ef6\u901a\u77e5\u63a5\u53e3<\/strong>\u3002\u5b83\u7684\u54cd\u5e94\u901f\u5ea6\u6bd4 auditd \u66f4\u5feb\uff08\u6beb\u79d2\u7ea7\uff09\uff0c\u5f00\u9500\u6781\u5c0f\uff0c\u4f46\u9ed8\u8ba4\u4e0d\u8bb0\u5f55&#8221;\u8c01\u5e72\u7684&#8221;\uff0c\u53ea\u544a\u8bc9\u4f60&#8221;\u53d1\u751f\u4e86\u4ec0\u4e48\u4e8b\u4ef6&#8221;\u3002\u5b83\u6700\u9002\u5408\u505a\u7b2c\u4e00\u9053\u611f\u5e94\u5668\uff1a\u6587\u4ef6\u4e00\u6709\u98ce\u5439\u8349\u52a8\uff0c\u76d1\u63a7\u811a\u672c\u7acb\u523b\u6536\u5230\u901a\u77e5\u3002<\/p>\n<p>\u4e24\u8005\u914d\u5408\u7684\u5de5\u4f5c\u65b9\u5f0f\u662f\uff1ainotify \u8d1f\u8d23\u79d2\u7ea7\u89e6\u53d1\u544a\u8b66\uff0cauditd \u8d1f\u8d23\u5728\u4e8b\u540e\u63d0\u4f9b\u5b8c\u6574\u7684\u53d6\u8bc1\u8bc1\u636e\u94fe\u3002\u5f88\u591a\u5165\u4fb5\u68c0\u6d4b\u5de5\u5177\uff08\u5982 AIDE \u8fd9\u7c7b\u6587\u4ef6\u5b8c\u6574\u6027\u6821\u9a8c\u5de5\u5177\uff09\u7528\u7684\u662f\u5b9a\u65f6\u626b\u63cf\u6bd4\u5bf9\u54c8\u5e0c\u7684\u65b9\u5f0f\uff0c\u53d1\u73b0\u7a97\u53e3\u53ef\u80fd\u662f\u5c0f\u65f6\u7ea7\u751a\u81f3\u5929\u7ea7\uff1b\u800c auditd + inotify \u628a\u8fd9\u4e2a\u7a97\u53e3\u538b\u7f29\u5230\u79d2\u7ea7\u3002<\/p>\n<h2>\u7b2c\u4e00\u6b65\uff1a\u7528 auditd \u7ed9\u5173\u952e\u6587\u4ef6\u88c5\u4e0a&#8221;\u884c\u8f66\u8bb0\u5f55\u4eea&#8221;<\/h2>\n<p>auditd \u7684\u89c4\u5219\u914d\u7f6e\u96c6\u4e2d\u5728 <code>\/etc\/audit\/rules.d\/<\/code> \u76ee\u5f55\u4e0b\uff0c\u76f4\u63a5\u5199\u89c4\u5219\u6587\u4ef6\u53ef\u4ee5\u4fdd\u8bc1\u91cd\u542f\u540e\u4e0d\u4e22\u5931\u3002\u4ee5\u4fdd\u62a4\u7f51\u7ad9\u6838\u5fc3\u6587\u4ef6\u4e3a\u4f8b\uff1a<\/p>\n<pre><code class=\"language-bash\"># \u521b\u5efa\u89c4\u5219\u6587\u4ef6\nsudo tee \/etc\/audit\/rules.d\/critical-files.rules &lt;&lt; 'EOF'\n# \u76d1\u63a7\u7f51\u7ad9\u6839\u76ee\u5f55\u7684\u5199\u5165\u4e0e\u5c5e\u6027\u53d8\u66f4\uff08\u9012\u5f52\u9700\u8981\u9010\u6761\u5217\u6216\u7528\u76ee\u5f55\u672c\u8eab\uff09\n-w \/var\/www\/html\/ -p wa -k webroot-watch\n# \u76d1\u63a7 Nginx \u914d\u7f6e\n-w \/etc\/nginx\/nginx.conf -p wa -k nginx-conf-watch\n-w \/etc\/nginx\/sites-enabled\/ -p wa -k nginx-sites-watch\n# \u76d1\u63a7\u5b9a\u65f6\u4efb\u52a1\uff08\u6301\u4e45\u5316\u540e\u95e8\u7684\u9ad8\u53d1\u533a\uff09\n-w \/etc\/cron.d\/ -p wa -k cron-watch\n-w \/var\/spool\/cron\/ -p wa -k crontab-watch\n# \u76d1\u63a7\u7cfb\u7edf\u8d26\u6237\u6587\u4ef6\n-w \/etc\/passwd -p wa -k identity-watch\n-w \/etc\/shadow -p wa -k identity-watch\n-w \/etc\/sudoers -p wa -k sudoers-watch\n# \u8ba9\u89c4\u5219\u4e0d\u53ef\u88ab\u4fee\u6539\uff08\u9501\u5b9a\u540e\u9700\u91cd\u542f\u624d\u80fd\u6539\u89c4\u5219\uff09\n-e 2\nEOF\n\n# \u91cd\u65b0\u52a0\u8f7d\u89c4\u5219\nsudo augenrules --load\n<\/code><\/pre>\n<p>\u6700\u540e\u4e00\u53e5 <code>-e 2<\/code> \u662f\u628a\u5ba1\u8ba1\u7cfb\u7edf\u8bbe\u4e3a\u4e0d\u53ef\u4fee\u6539\u6a21\u5f0f\uff0c\u653b\u51fb\u8005\u5373\u4f7f\u62ff\u5230 root \u4e5f\u65e0\u6cd5\u76f4\u63a5 <code>auditctl -D<\/code> \u6e05\u9664\u89c4\u5219\u2014\u2014\u60f3\u6539\u89c4\u5219\u5fc5\u987b\u91cd\u542f\u670d\u52a1\u5668\uff0c\u8fd9\u4f1a\u7559\u4e0b\u660e\u663e\u7684\u91cd\u542f\u75d5\u8ff9\u3002\u9700\u8981\u6ce8\u610f\uff1a\u786e\u8ba4\u89c4\u5219\u8c03\u8bd5\u5b8c\u6bd5\u518d\u4e0a\u9501\uff0c\u5426\u5219\u81ea\u5df1\u4e5f\u8981\u91cd\u542f\u624d\u80fd\u8c03\u6574\u3002<\/p>\n<p>\u89c4\u5219\u751f\u6548\u540e\uff0c\u4efb\u4f55\u89e6\u78b0\u8fd9\u4e9b\u8def\u5f84\u7684\u64cd\u4f5c\u90fd\u4f1a\u5199\u8fdb <code>\/var\/log\/audit\/audit.log<\/code>\u3002\u65e5\u5fd7\u662f\u539f\u59cb\u683c\u5f0f\uff0c\u53ef\u8bfb\u6027\u5dee\uff0c\u7528 <code>ausearch<\/code> \u67e5\u8be2\uff1a<\/p>\n<pre><code class=\"language-bash\"># \u7528\u521a\u624d\u5b9a\u4e49\u7684 key \u68c0\u7d22\u662f\u8c01\u6539\u4e86 webroot\nsudo ausearch -k webroot-watch --format text | tail -30\n<\/code><\/pre>\n<p>\u4e00\u6761\u5178\u578b\u7684\u8f93\u51fa\u4f1a\u5305\u542b\u8fd9\u4e9b\u5b57\u6bb5\uff1a<code>uid<\/code>\uff08\u64cd\u4f5c\u8005\uff09\u3001<code>exe<\/code>\uff08\u53ef\u6267\u884c\u6587\u4ef6\u8def\u5f84\uff09\u3001<code>nametype=NORMAL<\/code> \u6216 <code>DELETE<\/code>\uff08\u64cd\u4f5c\u7c7b\u578b\uff09\u3001<code>pid<\/code>\uff08\u8fdb\u7a0b\u53f7\uff09\u3002\u5b9e\u9645\u6848\u4f8b\u4e2d\uff0c\u6211\u4eec\u66fe\u901a\u8fc7 <code>exe=\/usr\/bin\/php<\/code> \u8fd9\u4e00\u884c\u5feb\u901f\u5b9a\u4f4d\u5230\u662f\u4e00\u6bb5\u88ab\u690d\u5165\u7684 PHP webshell \u5728\u6539\u5199\u7f51\u7ad9\u6587\u4ef6\uff0c\u800c\u4e0d\u662f\u8fd0\u7ef4\u7684\u8bef\u64cd\u4f5c\u2014\u2014\u8fd9\u5c31\u662f\u5ba1\u8ba1\u65e5\u5fd7\u7684\u4ef7\u503c\uff1a<strong>\u5b83\u628a&#8221;\u6587\u4ef6\u53d8\u4e86&#8221;\u5347\u7ea7\u6210\u4e86&#8221;\u8c01\u5728\u4ec0\u4e48\u65f6\u95f4\u7528\u4ec0\u4e48\u547d\u4ee4\u6539\u7684&#8221;<\/strong>\u3002<\/p>\n<p>\u5982\u679c\u65e5\u5fd7\u91cf\u4e0d\u5927\uff0c\u76f4\u63a5 <code>grep<\/code> \u5173\u952e\u5b57\u4e5f\u591f\u7528\uff1b\u65e5\u5fd7\u91cf\u5927\u65f6\u5efa\u8bae\u628a auditd \u65e5\u5fd7\u63a5\u5165 rsyslog \u6216\u8f6c\u53d1\u5230\u96c6\u4e2d\u7684\u65e5\u5fd7\u670d\u52a1\u5668\uff0c\u907f\u514d\u653b\u51fb\u8005\u672c\u673a\u5220\u65e5\u5fd7\u3002<\/p>\n<h2>\u7b2c\u4e8c\u6b65\uff1a\u7528 inotify \u505a\u79d2\u7ea7\u54e8\u5175<\/h2>\n<p>auditd \u89e3\u51b3&#8221;\u53d6\u8bc1&#8221;\uff0c\u4f46\u8981&#8221;\u7b2c\u4e00\u65f6\u95f4\u77e5\u9053&#8221;\uff0c\u8fd8\u5f97\u9760 inotify\u3002<code>inotify-tools<\/code> \u63d0\u4f9b\u4e86\u547d\u4ee4\u884c\u5165\u53e3 <code>inotifywait<\/code>\uff0cDebian\/Ubuntu \u4e0b\u4e00\u884c\u547d\u4ee4\u5b89\u88c5\uff1a<\/p>\n<pre><code class=\"language-bash\">sudo apt install inotify-tools -y\n<\/code><\/pre>\n<p>\u5148\u624b\u52a8\u611f\u53d7\u4e00\u4e0b\u5b83\u7684\u54cd\u5e94\u901f\u5ea6\uff1a<\/p>\n<pre><code class=\"language-bash\"># \u7ec8\u7aef A\uff1a\u6301\u7eed\u76d1\u542c webroot \u7684\u521b\u5efa\u3001\u4fee\u6539\u3001\u5220\u9664\u3001\u79fb\u52a8\u4e8b\u4ef6\ninotifywait -m -r \/var\/www\/html -e create,modify,delete,move \\\n  --format '%T %w%f %e' --timefmt '%Y-%m-%d %H:%M:%S'\n\n# \u7ec8\u7aef B\uff1a\u968f\u4fbf\u78b0\u4e00\u4e0b\u88ab\u76d1\u63a7\u7684\u76ee\u5f55\ntouch \/var\/www\/html\/test.txt\n# \u7ec8\u7aef A \u4f1a\u7acb\u523b\u8f93\u51fa\u7c7b\u4f3c\uff1a\n# 2026-09-22 10:32:11 \/var\/www\/html\/test.txt CREATE\n<\/code><\/pre>\n<p>\u751f\u4ea7\u73af\u5883\u4e0d\u80fd\u9760\u4eba\u76ef\u7740\u7ec8\u7aef\uff0c\u4e0b\u9762\u662f\u4e00\u4e2a\u53ef\u76f4\u63a5\u843d\u5730\u7684\u76d1\u63a7\u811a\u672c\uff0c\u68c0\u6d4b\u5230\u6539\u52a8\u540e\u5199\u5165\u65e5\u5fd7\u5e76\u8c03\u7528\u544a\u8b66\u63a5\u53e3\uff1a<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n# \/usr\/local\/bin\/file-watch.sh \u2014\u2014 \u5173\u952e\u6587\u4ef6\u5b9e\u65f6\u76d1\u63a7\u811a\u672c\nWATCH_DIR=&quot;\/var\/www\/html&quot;\nLOG_FILE=&quot;\/var\/log\/file-watch.log&quot;\n# \u544a\u8b66\u63a5\u53e3\u6362\u6210\u4f60\u81ea\u5df1\u7684\uff08\u4f01\u4e1a\u5fae\u4fe1\/\u9489\u9489\/Telegram bot \u5747\u53ef\uff09\nALERT_URL=&quot;https:\/\/your-alert-hook.example.com\/send&quot;\n\ninotifywait -m -r -q &quot;$WATCH_DIR&quot; -e create,modify,delete,move --format '%w%f|%e|%T' --timefmt '%s' |\nwhile IFS='|' read -r path event ts; do\n    echo &quot;$(date '+%F %T') [$event] $path&quot; &gt;&gt; &quot;$LOG_FILE&quot;\n    # 1 \u5206\u949f\u5185\u540c\u4e00\u6587\u4ef6\u91cd\u590d\u544a\u8b66\u505a\u53bb\u91cd\uff0c\u907f\u514d\u6279\u91cf\u90e8\u7f72\u65f6\u5237\u5c4f\n    if ! grep -q &quot;$(echo $path)|$event&quot; &quot;$LOG_FILE&quot; 2&gt;\/dev\/null; then\n        curl -s -X POST &quot;$ALERT_URL&quot; \\\n          -H 'Content-Type: application\/json' \\\n          -d &quot;{\\&quot;text\\&quot;:\\&quot;[\u6587\u4ef6\u76d1\u63a7] $event : $path\\&quot;}&quot; &gt;\/dev\/null 2&gt;&amp;1\n    fi\ndone\n<\/code><\/pre>\n<p>\u7528 systemd \u628a\u5b83\u53d8\u6210\u5e38\u9a7b\u670d\u52a1\uff0c\u5f00\u673a\u81ea\u542f\u3001\u5d29\u6e83\u81ea\u52a8\u62c9\u8d77\uff1a<\/p>\n<pre><code class=\"language-bash\"># \/etc\/systemd\/system\/file-watch.service\n[Unit]\nDescription=Critical file tamper watcher\nAfter=network.target\n\n[Service]\nExecStart=\/usr\/local\/bin\/file-watch.sh\nRestart=always\nRestartSec=5\nUser=root\n\n[Install]\nWantedBy=multi-user.target\n<\/code><\/pre>\n<pre><code class=\"language-bash\">sudo systemctl daemon-reload\nsudo systemctl enable --now file-watch.service\nsystemctl status file-watch.service   # \u786e\u8ba4 active (running)\n<\/code><\/pre>\n<p>\u4e09\u4e2a\u5bb9\u6613\u8e29\u7684\u5751\u503c\u5f97\u63d0\u524d\u8bf4\u660e\uff1a\u4e00\u662f<strong>\u9012\u5f52\u76d1\u542c\u5927\u76ee\u5f55\u65f6 inotify watch \u6570\u6709\u4e0a\u9650<\/strong>\uff08\u9ed8\u8ba4 8192\uff09\uff0c\u76ee\u5f55\u91cc\u6587\u4ef6\u7279\u522b\u591a\u4f1a\u62a5 <code>User limit on inotify watches reached<\/code>\uff0c\u7528 <code>sysctl fs.inotify.max_user_watches=524288<\/code> \u8c03\u5927\u5373\u53ef\uff1b\u4e8c\u662f<strong>\u6392\u9664\u7f13\u5b58\u76ee\u5f55<\/strong>\uff0c<code>-e create,modify<\/code> \u4f1a\u628a Laravel\/WordPress \u7684\u7f13\u5b58\u5199\u5165\u4e5f\u5f53\u544a\u8b66\u63a8\u7ed9\u4f60\uff0c\u52a0 <code>--excludei '(cache|tmp|log)'<\/code> \u8fc7\u6ee4\uff1b\u4e09\u662f\u76d1\u63a7\u811a\u672c\u672c\u8eab\u8981\u8bbe\u4e3a root \u53ea\u8bfb\uff08<code>chmod 750<\/code>\uff09\uff0c\u5426\u5219\u653b\u51fb\u8005\u505c\u6389\u811a\u672c\u76d1\u63a7\u5c31\u5f62\u540c\u865a\u8bbe\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cn.hostease.com\/blog\/wp-content\/uploads\/2026\/10\/server-auditd-inotify-practical-architecture.webp\" alt=\"\u6587\u4ef6\u76d1\u63a7\u67b6\u6784\uff1a\u670d\u52a1\u5668\u89c2\u5bdf\u7f51\u7ad9\u6587\u4ef6\u53d8\u52a8\u5e76\u8bb0\u5f55\u5ba1\u8ba1\u65e5\u5fd7\" loading=\"lazy\" \/><\/p>\n<h2>\u4e09\u79cd\u68c0\u6d4b\u65b9\u5f0f\u5bf9\u6bd4\uff1a\u5404\u7ba1\u4e00\u6bb5\uff0c\u4e0d\u8981\u6df7\u4e3a\u4e00\u8c08<\/h2>\n<p>\u628a auditd\u3001inotify \u548c\u4f20\u7edf\u7684\u5b9a\u65f6\u54c8\u5e0c\u626b\u63cf\uff08\u5982 AIDE\uff09\u653e\u5728\u4e00\u8d77\u770b\uff0c\u5206\u5de5\u4f1a\u6e05\u6670\u5f88\u591a\u3002\u6211\u4eec\u7ed9\u4e00\u53f0\u8fd0\u884c WordPress \u7684 <a href=\"https:\/\/cn.hostease.com\/dedicated-server\/\">\u72ec\u7acb\u670d\u52a1\u5668<\/a>\u505a\u8fc7\u5b9e\u6d4b\uff0c\u7ea6 4.2 \u4e07\u4e2a\u7f51\u7ad9\u6587\u4ef6\u3001\u65e5\u5747 300 \u6b21\u5408\u6cd5\u5199\u5165\u7684\u573a\u666f\u4e0b\uff0c\u4e09\u79cd\u65b9\u5f0f\u7684\u8868\u73b0\u5982\u4e0b\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th>\u65b9\u6848<\/th>\n<th>\u53d1\u73b0\u5ef6\u8fdf<\/th>\n<th>\u56de\u7b54&#8221;\u8c01\u6539\u7684&#8221;<\/th>\n<th>\u6027\u80fd\u5f00\u9500<\/th>\n<th>\u9002\u7528\u4f4d\u7f6e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>inotify \u811a\u672c<\/td>\n<td>\u79d2\u7ea7\uff08\u5b9e\u6d4b &lt; 2 \u79d2\uff09<\/td>\n<td>\u5426<\/td>\n<td>\u6781\u4f4e\uff08\u5185\u6838\u4e8b\u4ef6\uff0c\u65e0\u626b\u63cf\uff09<\/td>\n<td>\u7b2c\u4e00\u9053\u544a\u8b66<\/td>\n<\/tr>\n<tr>\n<td>auditd<\/td>\n<td>\u79d2\u7ea7<\/td>\n<td>\u662f\uff08\u542b PID\/\u547d\u4ee4\/\u7528\u6237\uff09<\/td>\n<td>\u4f4e\uff08\u53ea\u8bb0\u89c4\u5219\u547d\u4e2d\u4e8b\u4ef6\uff09<\/td>\n<td>\u53d6\u8bc1\u4e0e\u8ffd\u8d23<\/td>\n<\/tr>\n<tr>\n<td>AIDE \u7b49\u54c8\u5e0c\u626b\u63cf<\/td>\n<td>\u5c0f\u65f6\u7ea7\uff08\u53d6\u51b3\u4e8e\u626b\u63cf\u5468\u671f\uff09<\/td>\n<td>\u5426\uff08\u53ea\u80fd\u5b9a\u4f4d\u5230\u6587\u4ef6\uff09<\/td>\n<td>\u4e2d\uff08\u5168\u91cf\u8bfb\u76d8\u6bd4\u5bf9\u54c8\u5e0c\uff09<\/td>\n<td>\u515c\u5e95\u57fa\u7ebf\u6821\u9a8c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6570\u636e\u80cc\u540e\u7684\u542b\u4e49\u5f88\u76f4\u63a5\uff1a<strong>inotify \u544a\u8b66\u5feb\u4f46\u67e5\u4e0d\u5230\u51f6\u624b\uff0cauditd \u65e2\u80fd\u544a\u8b66\u53c8\u80fd\u8ffd\u8d23\u4f46\u65e5\u5fd7\u9700\u8981\u68c0\u7d22\uff0c\u54c8\u5e0c\u626b\u63cf\u6162\u5374\u662f\u552f\u4e00\u80fd\u53d1\u73b0&#8221;\u9759\u9ed8\u66ff\u6362&#8221;\u7684\u515c\u5e95\u624b\u6bb5<\/strong>\uff08\u6bd4\u5982\u653b\u51fb\u8005\u6539\u5b8c\u6587\u4ef6\u53c8\u628a mtime \u6539\u56de\u53bb\uff0c\u4e8b\u4ef6\u7c7b\u76d1\u63a7\u53ef\u80fd\u6f0f\u6389\uff0c\u4f46\u54c8\u5e0c\u503c\u5bf9\u4e0d\u4e0a\uff09\u3002<\/p>\n<p>\u5b9e\u9645\u90e8\u7f72\u5efa\u8bae\u6309&#8221;1 + 1 + 1&#8243;\u7ec4\u5408\uff1ainotify \u505a\u79d2\u7ea7\u544a\u8b66\uff0cauditd \u505a\u5ba1\u8ba1\u53d6\u8bc1\uff0cAIDE \u6bcf\u5929\u51cc\u6668\u8dd1\u4e00\u6b21\u57fa\u7ebf\u6bd4\u5bf9\u3002\u4e09\u8005\u53e0\u52a0\u540e\uff0c\u4e00\u53f0 2 \u6838 4G \u7684\u670d\u52a1\u5668\u989d\u5916 CPU \u5360\u7528\u4e0d\u5230 3%\uff0c\u5185\u5b58\u589e\u52a0\u7ea6 40MB\u2014\u2014\u5bf9\u7edd\u5927\u591a\u6570\u751f\u4ea7\u73af\u5883\u6765\u8bf4\u53ef\u4ee5\u5ffd\u7565\u3002<\/p>\n<p>\u4e00\u4e2a\u771f\u5b9e\u7684\u5904\u7406\u6848\u4f8b\uff1a\u67d0\u5ba2\u6237\u7684 WordPress \u7ad9\u70b9\u88ab\u690d\u5165\u4e86\u4e00\u4e2a\u4f2a\u88c5\u6210\u4e3b\u9898\u6587\u4ef6\u7684 webshell\u3002inotify \u5728\u6587\u4ef6\u88ab\u5199\u5165\u540e 1.8 \u79d2\u63a8\u9001\u4e86\u544a\u8b66\uff0c\u8fd0\u7ef4\u7b2c\u4e00\u65f6\u95f4\u9694\u79bb\u4e86\u7ad9\u70b9\uff1b\u968f\u540e <code>ausearch<\/code> \u5b9a\u4f4d\u5230\u6539\u52a8\u6765\u81ea <code>\/usr\/bin\/php-fpm<\/code>\uff0c\u8bf4\u660e\u540e\u95e8\u662f\u901a\u8fc7 Web \u6f0f\u6d1e\u89e6\u53d1\u7684\uff0c\u800c\u4e0d\u662f\u670d\u52a1\u5668\u8d26\u53f7\u6cc4\u9732\uff1b\u6700\u540e AIDE \u7684\u6b21\u65e5\u626b\u63cf\u786e\u8ba4\u6ca1\u6709\u5176\u4ed6\u6587\u4ef6\u88ab\u6ce2\u53ca\u3002\u4ece\u53d1\u73b0\u5230\u95ed\u73af\u4e0d\u5230\u534a\u5c0f\u65f6\uff0c\u5982\u679c\u6ca1\u6709\u76d1\u63a7\uff0c\u8fd9\u4e2a\u540e\u95e8\u5927\u6982\u7387\u8981\u7b49\u5230\u641c\u7d22\u5f15\u64ce\u62a5\u8b66\u624d\u88ab\u53d1\u73b0\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cn.hostease.com\/blog\/wp-content\/uploads\/2026\/10\/server-auditd-inotify-practical-comparison.webp\" alt=\"\u5b9e\u65f6\u76d1\u63a7\u4e0e\u5b9a\u65f6\u626b\u63cf\u5bf9\u6bd4\uff1a\u79d2\u7ea7\u544a\u8b66\u4e0e\u5c0f\u65f6\u7ea7\u53d1\u73b0\u7684\u5dee\u5f02\" loading=\"lazy\" \/><\/p>\n<h2>\u628a\u76d1\u63a7\u7eb3\u5165\u65e5\u5e38\u8fd0\u7ef4\u8282\u594f<\/h2>\n<p>\u5de5\u5177\u90e8\u7f72\u5b8c\u53ea\u662f\u5f00\u59cb\uff0c\u8981\u8ba9\u6587\u4ef6\u76d1\u63a7\u771f\u6b63\u53d1\u6325\u4f5c\u7528\uff0c\u8fd8\u9700\u8981\u878d\u5165\u65e5\u5e38\u8fd0\u7ef4\u6d41\u7a0b\u3002\u8fd9\u91cc\u7ed9\u4f60\u4e00\u4efd\u53ef\u4ee5\u7167\u505a\u7684\u8282\u594f\u5b89\u6392\uff1a<\/p>\n<ol>\n<li><strong>\u4e0a\u7ebf\u5f53\u5929<\/strong>\uff1a\u6309\u672c\u6587\u7b2c\u4e00\u8282\u914d\u7f6e auditd \u89c4\u5219\u5e76\u90e8\u7f72 inotify \u811a\u672c\uff0c\u5148\u7528 <code>touch<\/code> \u6d4b\u8bd5\u4e00\u6b21\u544a\u8b66\u94fe\u8def\u662f\u5426\u901a\u7545\uff1b<\/li>\n<li><strong>\u7b2c\u4e00\u5468<\/strong>\uff1a\u89c2\u5bdf\u544a\u8b66\u65e5\u5fd7\uff0c\u628a\u7f13\u5b58\u3001\u65e5\u5fd7\u76ee\u5f55\u7b49\u5408\u6cd5\u5199\u5165\u52a0\u5165 <code>--excludei<\/code> \u767d\u540d\u5355\uff0c\u628a\u544a\u566a\u97f3\u964d\u5230\u6bcf\u5929 0-3 \u6761\uff1b<\/li>\n<li><strong>\u6bcf\u6708<\/strong>\uff1a\u6838\u5bf9 auditd \u89c4\u5219\u8986\u76d6\u9762\uff0c\u91cd\u70b9\u68c0\u67e5\u65b0\u4e0a\u7ebf\u7684\u5e94\u7528\u914d\u7f6e\u8def\u5f84\u662f\u5426\u7eb3\u5165\u76d1\u63a7\uff0c\u4f8b\u5982\u65b0\u589e\u7684\u7ad9\u70b9\u6839\u76ee\u5f55\u6216 PHP-FPM \u914d\u7f6e\uff1b<\/li>\n<li><strong>\u6bcf\u5b63\u5ea6<\/strong>\uff1a\u6f14\u7ec3\u4e00\u6b21&#8221;\u6536\u5230\u544a\u8b66\u600e\u4e48\u529e&#8221;\u2014\u2014\u786e\u8ba4\u80fd\u901a\u8fc7 <code>ausearch<\/code> \u5728 5 \u5206\u949f\u5185\u56de\u7b54&#8221;\u8c01\u6539\u7684\u3001\u600e\u4e48\u6539\u7684\u3001\u8fd8\u6539\u4e86\u4ec0\u4e48&#8221;\u3002<\/li>\n<\/ol>\n<p>\u5982\u679c\u4f60\u7684\u7f51\u7ad9\u76ee\u524d\u8fd8\u8fd0\u884c\u5728\u6ca1\u6709\u76d1\u63a7\u7684\u73af\u5883\u91cc\uff0c\u5efa\u8bae\u5148\u628a\u6700\u5bb9\u6613\u88ab\u653b\u51fb\u7684\u4e09\u7c7b\u8def\u5f84\u4fdd\u62a4\u8d77\u6765\uff1a\u7f51\u7ad9\u6839\u76ee\u5f55\u3001\u5b9a\u65f6\u4efb\u52a1\u76ee\u5f55\u3001\u7cfb\u7edf\u8d26\u6237\u6587\u4ef6\u2014\u2014\u672c\u6587\u7684\u89c4\u5219\u6a21\u677f\u53ef\u4ee5\u76f4\u63a5\u590d\u5236\u4f7f\u7528\u3002\u5bf9\u4e8e\u6ca1\u6709\u4e13\u804c\u8fd0\u7ef4\u7684\u56e2\u961f\uff0c\u9009\u62e9\u4e00\u53f0\u81ea\u5e26\u57fa\u7840\u5b89\u5168\u9632\u62a4\u7684 <a href=\"https:\/\/cn.hostease.com\/vps\/\">VPS \u4e3b\u673a<\/a>\u4e5f\u80fd\u7701\u6389\u4e0d\u5c11\u5e95\u5c42\u7ef4\u62a4\u5de5\u4f5c\uff1bHostease \u7684\u4e2d\u6587\u6280\u672f\u652f\u6301\u53ef\u4ee5\u5728\u90e8\u7f72\u8fc7\u7a0b\u4e2d\u534f\u52a9\u6392\u67e5\u73af\u5883\u95ee\u9898\u3002\u66f4\u591a\u670d\u52a1\u5668\u52a0\u56fa\u7684\u5b9e\u64cd\u5185\u5bb9\uff0c\u53ef\u4ee5\u53c2\u8003\u6211\u4eec\u4e4b\u524d\u6574\u7406\u7684<a href=\"https:\/\/cn.hostease.com\/blog\/server\/\">\u670d\u52a1\u5668\u914d\u7f6e\u4e0e\u4f18\u5316\u4e13\u9898<\/a>\uff0c\u4ee5\u53ca\u8bb2<a href=\"https:\/\/cn.hostease.com\/blog\/guides\/ttfb-hosting-optimization\/\">\u7f51\u7ad9\u6027\u80fd\u4e0e TTFB \u4f18\u5316<\/a>\u7684\u5b8c\u6574\u6307\u5357\u3002<\/p>\n<p>\u603b\u7ed3\u4e00\u53e5\u8bdd\uff1a\u6587\u4ef6\u9632\u7be1\u6539\u7684\u6838\u5fc3\u4e0d\u662f\u4e70\u591a\u8d35\u7684\u8bbe\u5907\uff0c\u800c\u662f<strong>\u8ba9\u6bcf\u4e00\u6b21\u5f02\u5e38\u6539\u52a8\u90fd\u5728\u51e0\u5206\u949f\u5185\u53d8\u6210\u4e00\u6761\u4f60\u6536\u5f97\u5230\u7684\u544a\u8b66<\/strong>\u3002auditd \u8d1f\u8d23\u7559\u4e0b\u94c1\u8bc1\uff0cinotify \u8d1f\u8d23\u4e89\u5206\u593a\u79d2\uff0c\u4e24\u8005\u90fd\u4e0d\u82b1\u4e00\u5206\u94b1\uff0c\u4eca\u5929\u5c31\u53ef\u4ee5\u90e8\u7f72\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cn.hostease.com\/blog\/wp-content\/uploads\/2026\/10\/server-auditd-inotify-practical-monitoring.webp\" alt=\"\u8fd0\u7ef4\u76d1\u63a7\u573a\u666f\uff1a\u76d1\u63a7\u5c4f\u4e0a\u51fa\u73b0\u6587\u4ef6\u53d8\u52a8\u544a\u8b66\u63d0\u793a\" loading=\"lazy\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5982\u4f55\u53ca\u65f6\u53d1\u73b0\u670d\u52a1\u5668\u4e0a\u7684\u5173\u952e\u6587\u4ef6\u88ab\u7be1\u6539\uff1f\u672c\u6587\u6559\u4f60\u7528 auditd \u4e0e inotify \u642d\u5efa\u6587\u4ef6\u76d1\u63a7\u4f53\u7cfb\uff0c\u8986\u76d6\u5b89\u88c5\u3001\u89c4\u5219\u914d\u7f6e\u3001\u65e5\u5fd7\u5206\u6790\u4e0e\u544a\u8b66\u8054\u52a8\uff0c\u5e2e\u52a9\u4f60\u5728\u51e0\u5206\u949f\u5185\u53d1\u73b0\u5f02\u5e38\u6539\u52a8\u3002<\/p>\n","protected":false},"author":2,"featured_media":33501,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3822],"tags":[5218,5219,5220,5217,157],"class_list":["post-33505","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guides","tag-auditd","tag-inotify","tag-5220","tag-5217","tag-157"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/cn.hostease.com\/blog\/wp-content\/uploads\/2026\/10\/server-auditd-inotify-practical-cover.webp","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/posts\/33505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/comments?post=33505"}],"version-history":[{"count":1,"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/posts\/33505\/revisions"}],"predecessor-version":[{"id":33508,"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/posts\/33505\/revisions\/33508"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/media\/33501"}],"wp:attachment":[{"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/media?parent=33505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/categories?post=33505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cn.hostease.com\/blog\/wp-json\/wp\/v2\/tags?post=33505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}