Clam Daemon(8) Clam AntiVirus Clam Daemon(8) نام (NAME) clamd - دیمن ضدویروس خلاصه دستور (SYNOPSIS) clamd [گزینه‌ها] توضیحات (DESCRIPTION) این دیمن به اتصالات ورودی روی سوکت یونیکس و/یا سوکت TCP گوش فرا می‌دهد و فایل‌ها یا دایرکتوری‌ها را بر حسب تقاضا اسکن می‌کند. این برنامه پیکربندی را از فایل /etc/clamav/clamd.conf می‌خواند. دستورها (COMMANDS) توصیه می‌شود قبل از دستورهای clamd حرف z قرار داده شود (مانند zSCAN) تا مشخص کند که دستور با نویسه NULL پایان می‌یابد و clamd باید خواندن داده‌های دستور را تا زمان خواندن یک نویسه NULL ادامه دهد. جداکننده null تضمین می‌کند که دستور کامل و تمام آرگومان‌های آن به عنوان یک دستور واحد پردازش خواهد شد. همچنین می‌توان دستورها را با حرف n شروع کرد (مانند nSCAN) تا از نویسه خط جدید به عنوان جداکننده استفاده شود. پاسخ‌های clamd نیز به نوبه خود از پایان‌دهنده درخواستی پیروی خواهند کرد. اگر clamd دستور را تشخیص ندهد، یا دستور الزامات مشخص‌شده در زیر را رعایت نکند، با یک پیام خطا پاسخ می‌دهد و اتصال را می‌بندد. برنامه clamd دستورهای زیر را تشخیص می‌دهد: PING بررسی وضعیت سرور. سرور در پاسخ باید با "PONG" پاسخ دهد. VERSION چاپ نسخه‌های برنامه و پایگاه داده. این دستور را می‌توان با گزینه EnableVersionCommand در clamd.conf غیرفعال کرد. در صورت غیرفعال بودن، clamd با عبارت COMMAND UNAVAILABLE پاسخ می‌دهد. RELOAD بارگذاری مجدد پایگاه‌های داده ویروس. این دستور را می‌توان با گزینه EnableReloadCommand در clamd.conf غیرفعال کرد. در صورت غیرفعال بودن، clamd با عبارت COMMAND UNAVAILABLE پاسخ می‌دهد. SHUTDOWN انجام خروج تمیز. این دستور را می‌توان با گزینه EnableShutdownCommand در clamd.conf غیرفعال کرد. در صورت غیرفعال بودن، clamd با عبارت COMMAND UNAVAILABLE پاسخ می‌دهد. SCAN file/directory اسکن یک فایل یا یک دایرکتوری (به صورت بازگشتی) در حالی که پشتیبانی از آرشیو فعال است (اگر در clamd.conf غیرفعال نشده باشد). ارائه مسیر کامل الزامی است. CONTSCAN file/directory اسکن فایل یا دایرکتوری (به صورت بازگشتی) با پشتیبانی فعال از آرشیو، بدون متوقف کردن اسکن هنگام یافتن ویروس. MULTISCAN file/directory اسکن یک دایرکتوری به صورت بازگشتی با استفاده از چندین ریسه (برای افزایش سرعت اسکن در ماشین‌های SMP). اگر هدف یک دایرکتوری نباشد، clamd به رفتار اسکن غیرچندریسه‌ای بازمی‌گردد. ALLMATCHSCAN file/directory قرار دادن پیشوند n یا z قبل از این دستور اجباری است. دستور ALLMATCHSCAN درست مانند SCAN کار می‌کند، با این تفاوت که حالتی را تنظیم می‌کند که در آن اسکن پس از یافتن یک تطابق درون فایل ادامه می‌یابد. این دستور می‌تواند با گزینه AllowAllMatchScan در clamd.conf غیرفعال شود. در صورت غیرفعال بودن، clamd با خطای ALLMATCHSCAN پاسخ می‌دهد. INSTREAM قرار دادن پیشوند n یا z قبل از این دستور اجباری است. اسکن جریانی از داده‌ها. جریان داده پس از ارسال INSTREAM به صورت قطعه‌قطعه، روی همان سوکتی که دستور روی آن فرستاده شده بود، به clamd ارسال می‌شود. این کار از بار اضافی برقراری اتصالات جدید TCP و مشکلات ناشی از NAT جلوگیری می‌کند. قالب هر قطعه داده به صورت: '' است که در آن اندازه داده‌های بعدی بر حسب بایت است که به صورت یک عدد صحیح بی‌علامت ۴ بایتی با ترتیب بایت شبکه بیان می‌شود و قطعه داده واقعی است. جریان داده با ارسال یک قطعه با طول صفر خاتمه می‌یابد. توجه: از مقدار StreamMaxLength تعیین‌شده در clamd.conf فراتر نروید، در غیر این صورت clamd با پیام INSTREAM size limit exceeded پاسخ داده و اتصال را می‌بندد. FILDES پایان دادن به این دستور با نویسه خط جدید، یا قرار دادن پیشوند n یا z قبل از آن اجباری است. این دستور تنها روی سوکت‌های دامنه یونیکس کار می‌کند. اسکن یک توصیف‌کننده فایل. پس از صدور دستور FILDES، یک بسته تکمیلی به سبک rfc2292/bsd4.4 (حاوی حداقل یک نویسه صوری) به clamd فرستاده می‌شود که توصیف‌کننده فایل مورد نظر برای اسکن را در داخل داده‌های کمکی (ancillary data) حمل می‌کند. همچنین توصیف‌کننده فایل می‌تواند در همان بسته همراه با نویسه اضافی ارسال شود. STATS پایان دادن به این دستور با نویسه خط جدید، یا قرار دادن پیشوند n یا z قبل از آن اجباری است؛ توصیه می‌شود تنها از پیشوند z استفاده کنید. ارائه آماری درباره صف اسکن، محتویات صف اسکن و میزان مصرف حافظه. قالب دقیق پاسخ ممکن است در نگارش‌های آینده تغییر کند. این دستور را می‌توان با گزینه EnableStatsCommand در clamd.conf غیرفعال کرد. در صورت غیرفعال بودن، clamd با عبارت COMMAND UNAVAILABLE پاسخ می‌دهد. IDSESSION, END قرار دادن پیشوند n یا z قبل از این دستور اجباری است، و تمام دستورهای درون IDSESSION نیز باید دارای پیشوند باشند. شروع/پایان یک نشست clamd. درون یک نشست می‌توان چندین دستور SCAN ،INSTREAM ،FILDES ،VERSION ،VERSIONCOMMANDS ،PING و STATS را روی همان سوکت بدون باز کردن اتصالات جدید ارسال کرد. دستورهای CONTSCAN ،MULTISCAN ،ALLMATCHSCAN ،RELOAD و SHUTDOWN درون یک IDSESSION پذیرفته نمی‌شوند. پاسخ‌های clamd در قالب ': ' خواهد بود که در آن شماره درخواست (در قالب اسکی، شروع از ۱) و همان پاسخ معمول clamd است. خطوط پاسخ دارای همان جداکننده‌ای خواهند بود که دستور مربوطه داشت. برنامه clamd دستورها را به صورت ناهمگام پردازش کرده و به محض اتمام پردازش پاسخ می‌دهد. برنامه clamd از کلاینت‌ها می‌خواهد که پیش از ارسال دستورهای بیشتر، تمام پاسخ‌های ارسالی را بخوانند تا از بن‌بست‌های send() جلوگیری شود. روش توصیه‌شده برای پیاده‌سازی کلاینتی که از IDSESSION استفاده می‌کند، استفاده از سوکت‌های غیرمسدودکننده و یک حلقه select()/poll() است: هر زمان که ارسال با انسداد مواجه شد، در select/poll منتظر بمانید تا بتوانید داده‌های بیشتری بنویسید، یا پاسخ‌های بیشتری را بخوانید. توجه داشته باشید که استفاده از سوکت‌های مسدودنشدنی بدون حلقه select/poll و جابجایی متناوب میان recv()/send() با الزامات clamd سازگار نیست. اگر clamd تشخیص دهد که کلاینت دچار بن‌بست شده است، اتصال را خواهد بست. توجه داشته باشید که اگر الزامات پروتکل رعایت نشود، clamd ممکن است اتصال IDSESSION را نیز ببندد. کلاینت می‌تواند از دستور PING برای زنده نگه داشتن اتصال استفاده کند. VERSIONCOMMANDS قرار دادن یکی از پیشوندهای n یا z قبل از این دستور اجباری است. توصیه می‌شود از nVERSIONCOMMANDS استفاده شود. چاپ نسخه برنامه و پایگاه داده، و در ادامه "| COMMANDS:" و فهرستی از دستورهای پشتیبانی‌شده که با فاصله از هم جدا شده‌اند. نگارش‌های clamd قدیمی‌تر از 0.95 این دستور را به عنوان دستور VERSION تشخیص داده و تنها نسخه خود را بدون فهرست دستورها برمی‌گردانند. این دستور می‌تواند به عنوان راهکاری آسان مثلاً برای بررسی پشتیبانی از IDSESSION استفاده شود. دستورهای حذف‌شده (REMOVED COMMANDS) STREAM دستور سنتی STREAM دیگر پشتیبانی نمی‌شود. به جای آن از INSTREAM استفاده کنید. دستورهای پشتیبانی‌نشده (NOT SUPPORTED COMMANDS) SESSION, END شروع/پایان یک نشست clamd که به شما امکان می‌داد چندین دستور را در هر نشست TCP اجرا کنید. (به جای آن از IDSESSION استفاده کنید) گزینه‌ها (OPTIONS) -h, --help نمایش اطلاعات راهنما و خروج. -V, --version چاپ شماره نسخه و خروج. -F, --foreground اجرا در پیش‌زمینه؛ عدم تبدیل به دیمن. --debug فعال‌سازی حالت اشکال‌زدایی. -c FILE, --config-file=FILE خواندن پیکربندی از FILE. --fail-if-cvd-older-than=days در صورتی که پایگاه داده ویروس قدیمی‌تر از تعداد روزهای مشخص‌شده باشد، با یک کد خطای غیرصفر خارج می‌شود. --datadir=DIRECTORY بارگذاری امضاها از DIRECTORY. -p FILE, --pid=FILE نوشتن شناسه پردازه (PID) دیمن در FILE. --cvdcertsdir=DIR مشخص کردن دایرکتوری حاوی گواهی ریشه CA مورد نیاز برای اعتبارسنجی امضاهای دیجیتال مجزای CVD. در صورت مشخص نشدن، clamd در دایرکتوری پیش‌فرض جستجو خواهد کرد. متغیرهای محیطی (ENVIRONMENT VARIABLES) برنامه clamd از متغیرهای محیطی زیر استفاده می‌کند: LD_LIBRARY_PATH می‌تواند هنگام راه‌اندازی برای یافتن ماژول کتابخانه مشترک libclamunrar_iface جهت فعال‌سازی پشتیبانی از آرشیوهای RAR استفاده شود. CVD_CERTS_DIR مشخص کردن دایرکتوری حاوی گواهی ریشه CA مورد نیاز برای اعتبارسنجی امضاهای دیجیتال مجزای CVD. در صورت مشخص نشدن، clamd در دایرکتوری پیش‌فرض جستجو خواهد کرد. سیگنال‌ها (SIGNALS) برنامه clamd سیگنال‌های زیر را تشخیص می‌دهد: SIGHUP بازگشایی مجدد فایل گزارش (logfile). SIGUSR2 بارگذاری مجدد پایگاه‌های داده امضا. SIGTERM انجام خروج تمیز. فایل‌ها (FILES) /etc/clamav/clamd.conf قدردانی‌ها (CREDITS) لطفاً برای مشاهده فهرست قدردانی‌ها و مشارکت‌کنندگان، به مستندات کامل برنامه مراجعه کنید. نویسنده (AUTHOR) Tomasz Kojm همچنین ببینید (SEE ALSO) clamd.conf(5), clamdscan(1), freshclam(1), freshclam.conf(5), clamav-milter(8) ClamAV 1.5.4 February 12, 2009 Clam Daemon(8)