.\" Automatically generated from the sudo_logsrvd.conf.mdoc.in file. Do not edit. .\" .\" SPDX-License-Identifier: ISC .\" .\" Copyright (c) 2019-2023 Todd C. Miller .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .Dd March 9, 2024 .Dt SUDO_LOGSRVD.CONF 5 .Os Sudo 1.9.17p2 .Sh "نام (NAME)" .Nm sudo_logsrvd.conf .Nd پیکربندی سرور ثبت وقایع sudo (sudo_logsrvd) .Sh "توضیحات (DESCRIPTION)" پروندهٔ .Nm sudo_logsrvd.conf برای پیکربندی سرور ثبت وقایع .Nm sudo_logsrvd استفاده می‌شود. این پرونده از قالبی به سبک INI متشکل از بخش‌هایی درون براکت‌ها و جفت‌های .Dq key = value مربوط به هر بخش در زیر نام آن بخش استفاده می‌کند. بسته به کلید، مقادیر ممکن است اعداد صحیح، مقادیر بولی یا رشته‌ها باشند. نام بخش‌ها و کلیدها به حروف بزرگ و کوچک حساس نیستند، اما مقادیر حساس هستند. .Pp علامت هش .Pq Ql # برای نشان دادن توضیح (کامنت) استفاده می‌شود. هم نویسهٔ کامنت و هم هر متنی پس از آن تا پایان خط نادیده گرفته می‌شوند. خطوطی که با نقطه ویرگول .Pq Ql \&; آغاز می‌شوند نیز نادیده گرفته می‌شوند. .Pp خطوط طولانی را می‌توان با قرار دادن یک بک‌اسلش .Pq Ql \e به عنوان آخرین نویسه در خط ادامه داد. فاصله‌های خالی ابتدای خطوط حتی در صورت استفاده از نویسهٔ ادامه‌دهنده حذف می‌شوند. .Pp بخش .Sx "مثالها (EXAMPLES)" شامل یک نسخه از پروندهٔ پیش‌فرض .Nm است. .Pp بخش‌های پیکربندی زیر شناخته می‌شوند: .Pp .Bl -bullet -compact -offset 1n -width 1n .It server .It relay .It iolog .It eventlog .It syslog .It logfile .El .Pp هر بخش با جزئیات در ادامه شرح داده شده است. .Ss server بخش .Em server نشانی و درگاهی را که سرور روی آن شنود خواهد کرد پیکربندی می‌کند. کلیدهای زیر شناخته می‌شوند: .Bl -tag -width 4n .It listen_address = host Ns Oo : Ns port Oc Ns Op (tls) نام میزبان یا نشانی IP، درگاه اختیاری برای شنود و یک فلگ اختیاری امنیت لایه انتقال (TLS) درون پرانتز. .Pp میزبان می‌تواند یک نام میزبان، یک نشانی IPv4، یک نشانی IPv6 درون براکت یا مدخل نویسه عام .Ql * باشد. تنظیم میزبان روی .Ql * باعث می‌شود .Nm sudo_logsrvd روی تمام رابط‌های شبکهٔ پیکربندی‌شده شنود کند. .Pp در صورت وجود فلگ اختیاری tls، .Nm sudo_logsrvd اتصال را با نسخهٔ 1.2 یا 1.3 پروتکل TLS امن خواهد کرد. نسخه‌های TLS پیش از 1.2 پشتیبانی نمی‌شوند. برای جزئیات مربوط به تولید کلیدها و گواهی‌های TLS به .Xr sudo_logsrvd 8 مراجعه کنید. .Pp در صورت مشخص شدن درگاه، این مقدار می‌تواند یک شماره درگاه یا یک نام سرویس شناخته‌شده طبق پایگاه داده نام سرویس‌های سیستم باشد. اگر درگاهی مشخص نشود، از درگاه 30343 برای اتصالات متنی ساده (plaintext) و از درگاه 30344 برای اتصالات TLS استفاده خواهد شد. .Pp مقدار پیش‌فرض عبارت است از: .Bd -literal -compact -offset indent listen_address = *:30343 listen_address = *:30344(tls) .Ed که روی تمام رابط‌های شبکهٔ پیکربندی‌شده برای هر دو اتصال متنی ساده و TLS شنود خواهد کرد. چندین خط .Em listen_address را می‌توان برای شنود روی بیش از یک درگاه یا رابط تعیین کرد. .It server_log = string محل ثبت پیام‌های هشدار و خطای سرور. مقادیر پشتیبانی‌شده عبارتند از .Em none , .Em stderr , .Em syslog یا یک نام مسیر که با نویسهٔ .Ql / آغاز شود. مقدار .Em stderr تنها در صورت استفادهٔ هم‌زمان با گزینهٔ .Fl n مؤثر است. مقدار پیش‌فرض .Em syslog است. .It pid_file = path مسیر فایلی که شامل شناسه فرایند (process ID) برنامهٔ در حال اجرای .Nm sudo_logsrvd است. اگر روی یک مقدار خالی تنظیم شود، یا اگر .Nm sudo_logsrvd با گزینهٔ .Fl n اجرا شود، هیچ .Em pid_file ایجاد نخواهد شد. اگر .Em pid_file به یک پیوند نمادین اشاره کند، نادیده گرفته خواهد شد. مقدار پیش‌فرض .Pa /run/sudo/sudo_logsrvd.pid است. .It tcp_keepalive = boolean اگر روی true تنظیم شود، .Nm sudo_logsrvd گزینهٔ سوکت TCP keepalive را در اتصال کلاینت فعال خواهد کرد. این کار ارسال دوره‌ای پیام‌های keepalive به کلاینت را ممکن می‌سازد. اگر کلاینت در زمان مقرر به پیامی پاسخ ندهد، اتصال بسته خواهد شد. پیش‌فرض .Em true است. .It timeout = number مدت زمانی، به ثانیه، که .Nm sudo_logsrvd منتظر پاسخ کلاینت خواهد ماند. مقدار 0 مهلت زمانی (timeout) را غیرفعال می‌کند. مقدار پیش‌فرض .Em 30 است. .It tls_cacert = path مسیر فایل بسته مرجع صدور گواهی (CA bundle)، در قالب PEM، جهت استفاده به جای پایگاه داده پیش‌فرض مرجع صدور گواهی سیستم هنگام احراز هویت کلاینت‌ها. حالت پیش‌فرض استفاده از .Pa /etc/ssl/sudo/cacert.pem در صورت وجود است، در غیر این صورت از پایگاه داده پیش‌فرض مرجع صدور گواهی سیستم استفاده می‌شود. .It tls_cert = path مسیر فایل گواهی سرور، در قالب PEM. مقدار پیش‌فرض .Pa /etc/ssl/sudo/certs/logsrvd_cert.pem است. .It tls_checkpeer = bool اگر روی true تنظیم شود، گواهی‌های کلاینت توسط .Nm sudo_logsrvd اعتبارسنجی خواهند شد؛ کلاینت‌های بدون گواهی معتبر قادر به اتصال نخواهند بود. اگر روی false تنظیم شود، هیچ اعتبارسنجی روی گواهی‌های کلاینت انجام نخواهد شد. اگر روی true باشد و گواهی‌های کلاینت با استفاده از یک مرجع صدور گواهی خصوصی ایجاد شده باشند، تنظیم .Em tls_cacert باید روی یک بسته CA حاوی گواهی CA که برای تولید گواهی کلاینت استفاده شده تنظیم گردد. مقدار پیش‌فرض .Em false است. .It tls_ciphers_v12 = string فهرستی از مجموعه‌های رمز (ciphers) برای استفاده در اتصالاتی که تنها با TLS نسخهٔ 1.2 ایمن شده‌اند، جداشده با دونقطه .Ql :\& . برای جزئیات کامل بخش .Sx CIPHER LIST FORMAT در .Xr openssl-ciphers 1 را ببینید. مقدار پیش‌فرض .Dq HIGH:!aNULL است که متشکل از مجموعه‌های رمز رمزنگاری با طول کلید بزرگ‌تر از 128 بیت و برخی مجموعه‌های رمز با کلیدهای 128 بیتی است. مجموعه‌های رمزی که احراز هویت ارائه نمی‌دهند مستثنی شده‌اند. .It tls_ciphers_v13 = string فهرستی از مجموعه‌های رمز برای استفاده در اتصالاتی که تنها با TLS نسخهٔ 1.3 ایمن شده‌اند، جداشده با دونقطه .Ql :\& . مجموعه‌های رمز پشتیبانی‌شده به نگارش OpenSSL مورد استفاده بستگی دارند، اما باید شامل موارد زیر باشند: .Pp .Bl -tag -compact -width 4n -offset indent .It TLS_AES_128_GCM_SHA256 .It TLS_AES_256_GCM_SHA384 .It TLS_CHACHA20_POLY1305_SHA256 .It TLS_AES_128_CCM_SHA256 .It TLS_AES_128_CCM_8_SHA256 .El .Pp مجموعه رمز پیش‌فرض .Dq TLS_AES_256_GCM_SHA384 است. .It tls_dhparams = path مسیر فایلی شامل پارامترهای سفارشی دیفی-هلمن در قالب PEM. این فایل را می‌توان با دستور زیر ایجاد کرد: .Bd -literal openssl dhparam -out /etc/sudo_logsrvd_dhparams.pem 2048 .Ed .Pp به‌طور پیش‌فرض، .Nm sudo_logsrvd از مقادیر پیش‌فرض OpenSSL برای تولید کلید دیفی-هلمن استفاده می‌کند. .It tls_key = path مسیر فایل کلید خصوصی سرور، در قالب PEM. مقدار پیش‌فرض .Pa /etc/ssl/sudo/private/logsrvd_key.pem است. .It tls_verify = bool اگر روی true تنظیم شود، .Nm sudo_logsrvd گواهی خود را در زمان راه‌اندازی یا هنگام تغییر پیکربندی اعتبارسنجی خواهد کرد. اگر روی false تنظیم شود، هیچ راستی‌آزمایی روی گواهی سرور انجام نمی‌گیرد. هنگام استفاده از گواهی‌های خودامضا بدون مرجع صدور گواهی، این تنظیم باید روی false قرار داده شود. مقدار پیش‌فرض .Em true است. .El .Ss relay بخش .Em relay میزبان و درگاه رلهٔ اختیاری logsrv را که سرور به آن متصل می‌شود پیکربندی می‌کند. کلیدهای پیکربندی TLS اختیاری هستند؛ به‌طور پیش‌فرض کلیدهای متناظر در بخش .Sx server استفاده خواهند شد. این کلیدها تنها برای این در این بخش حضور دارند تا اتصال رله بتواند از مجموعه‌ای متفاوت از پارامترهای TLS نسبت به سرور متصل به کلاینت استفاده نماید. کلیدهای زیر شناخته می‌شوند: .Bl -tag -width 4n .It connect_timeout = number مدت زمانی، به ثانیه، که .Nm sudo_logsrvd منتظر برقراری کامل اتصال به یک .Em relay_host (به ادامه مراجعه کنید) خواهد ماند. پس از برقراری اتصال، تنظیم .Em timeout مدت زمانی را که .Nm sudo_logsrvd منتظر پاسخ رله می‌ماند کنترل می‌کند. مقدار 0 مهلت زمانی را غیرفعال می‌کند. مقدار پیش‌فرض .Em 30 است. .It relay_dir = path پوشه‌ای که پیام‌های لاگ قبل از ارسال به میزبان رله به‌طور موقت در آن ذخیره می‌شوند. پیام‌ها در قالب ارتباطی (wire format) مشخص‌شده توسط .Xr sudo_logsrv.proto 5 ذخیره می‌شوند. مقدار پیش‌فرض .Pa /var/log/sudo_logsrvd است. .It relay_host = host Ns Oo : Ns port Oc Ns Op (tls) نام میزبان یا نشانی IP رله، درگاه اختیاری برای اتصال و یک فلگ اختیاری امنیت لایه انتقال (TLS) درون پرانتز. ساختار نگارش دقیقاً مشابه .Em listen_address در بخش .Sx server است با یک استثنا: ساختار نویسه عام .Ql * پشتیبانی نمی‌شود. .Pp هنگامی که این تنظیم فعال باشد، پیام‌های ارسالی از کلاینت به جای ذخیرهٔ محلی، به یکی از میزبان‌های رلهٔ مشخص‌شده فوروارد خواهند شد. میزبان .Ar host می‌تواند یک نمونه از .Nm sudo_logsrvd یا سرور دیگری باشد که از پروتکل .Xr sudo_logsrv.proto 5 پشتیبانی می‌کند. .Pp اگر چندین خط .Em relay_host تعیین شده باشد، از اولین میزبان رلهٔ در دسترس استفاده خواهد شد. .It retry_interval = number تعداد ثانیه‌هایی که پس از بروز خطای اتصال، پیش از تلاش مجدد برای فوروارد یک پیام به یک میزبان رله باید منتظر ماند. مقدار پیش‌فرض .Em 30 است. .It store_first = boolean اگر روی true تنظیم شود، .Nm sudo_logsrvd پیش از رله کردن لاگ‌ها، آن‌ها را به‌صورت محلی ذخیره می‌کند. پس از کامل شدن لاگ، اتصالی به میزبان رله باز شده و لاگ رله می‌شود. اگر اتصال شبکه پیش از انتقال کامل لاگ قطع شود، بعداً مجدداً ارسال خواهد شد. حالت پیش‌فرض، رله کردن هم‌زمان و بی‌درنگ (real-time) لاگ‌ها است. .It tcp_keepalive = boolean اگر روی true تنظیم شود، .Nm sudo_logsrvd گزینهٔ سوکت TCP keepalive را روی اتصال رله فعال می‌کند. این کار ارسال دوره‌ای پیام‌های keepalive به سرور رله را فعال می‌سازد. اگر سرور رله در زمان مقرر به پیامی پاسخ ندهد، اتصال بسته خواهد شد. .It timeout = number مدت زمانی، به ثانیه، که .Nm sudo_logsrvd پس از برقراری موفقیت‌آمیز اتصال، منتظر پاسخ سرور رله خواهد ماند. مقدار 0 مهلت زمانی را غیرفعال می‌کند. مقدار پیش‌فرض .Em 30 است. .It tls_cacert = path مسیر فایل بسته مرجع صدور گواهی (CA bundle)، در قالب PEM، جهت استفاده به جای پایگاه داده پیش‌فرض مرجع صدور گواهی سیستم هنگام احراز هویت کلاینت‌ها. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش .Sx server است، یا در صورت عدم تعیین، استفاده از پایگاه داده پیش‌فرض مرجع صدور گواهی سیستم. .It tls_cert = path مسیر فایل گواهی سرور، در قالب PEM. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش .Sx server است. .It tls_checkpeer = bool اگر روی true تنظیم شود، گواهی میزبان رله توسط .Nm sudo_logsrvd اعتبارسنجی خواهد شد؛ اتصالات به یک رله بدون گواهی معتبر با شکست مواجه می‌شود. اگر روی false تنظیم شود، هیچ اعتبارسنجی روی گواهی‌های رله انجام نمی‌شود. اگر روی true باشد و گواهی‌های رله با استفاده از یک مرجع صدور گواهی خصوصی ایجاد شده باشند، تنظیم .Em tls_cacert باید روی یک بسته CA حاوی گواهی CA که برای تولید گواهی رله استفاده شده تنظیم گردد. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش .Sx server است. .It tls_ciphers_v12 = string فهرستی از مجموعه‌های رمز برای استفاده در اتصالاتی که تنها با TLS نسخهٔ 1.2 ایمن شده‌اند، جداشده با دونقطه .Ql :\& . برای جزئیات کامل بخش .Sx CIPHER LIST FORMAT در .Xr openssl-ciphers 1 را ببینید. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش .Sx server است. .It tls_ciphers_v13 = string فهرستی از مجموعه‌های رمز برای استفاده در اتصالاتی که تنها با TLS نسخهٔ 1.3 ایمن شده‌اند، جداشده با دونقطه .Ql :\& . مجموعه‌های رمز پشتیبانی‌شده به نسخه OpenSSL مورد استفاده بستگی دارند؛ برای اطلاعات بیشتر بخش .Sx server را ببینید. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش .Sx server است. .It tls_dhparams = path مسیر فایلی شامل پارامترهای سفارشی دیفی-هلمن در قالب PEM. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش .Sx server است. .It tls_key = path مسیر فایل کلید خصوصی سرور، در قالب PEM. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش .Sx server است. .It tls_verify = bool اگر روی true تنظیم شود، گواهی سرور مورد استفاده برای رله در زمان راه‌اندازی بررسی خواهد شد. اگر روی false تنظیم شود، هیچ راستی‌آزمایی روی گواهی سرور انجام نمی‌گیرد. هنگام استفاده از گواهی‌های خودامضا بدون مرجع صدور گواهی، این تنظیم باید روی false قرار گیرد. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش .Sx server است. .El .Ss iolog بخش .Em iolog پارامترهای لاگ ورودی/خروجی (I/O) را پیکربندی می‌کند. این تنظیمات مشابه پیکربندی I/O در .Xr sudoers 5 است. کلیدهای زیر شناخته می‌شوند: .Bl -tag -width 4n .It iolog_compress = boolean در صورت تنظیم، لاگ‌های ورودی/خروجی با استفاده از .Sy zlib فشرده‌سازی خواهند شد. فعال کردن فشرده‌سازی به دلیل بافر شدن داده‌ها ممکن است مشاهدهٔ هم‌زمان لاگ‌ها را حین اجرای برنامه دشوارتر کند. مقدار پیش‌فرض .Em false است. .It iolog_dir = path پوشه سطح بالایی که هنگام ساخت نام مسیر برای پوشه لاگ ورودی/خروجی استفاده می‌شود. شماره ترتیبی نشست (session sequence number)، در صورت وجود، در این پوشه ذخیره می‌شود. مقدار پیش‌فرض .Pa /var/log/sudo-io است. .Pp توالی‌های گریز درصد .Pq Ql % زیر پشتیبانی می‌شوند: .Bl -tag -width 4n .It %{seq} به یک شماره ترتیبی در مبنای 36 که به‌طور پیوسته افزایش می‌یابد (مانند 0100A5) باز می‌شود، که در آن هر دو رقم برای تشکیل یک پوشهٔ جدید به کار می‌روند، مانند .Pa 01/00/A5 .It %{user} به نام کاربری فراخواننده دستور باز می‌شود .It %{group} به نام گروه واقعی (real group-ID) کاربر فراخواننده دستور باز می‌شود .It %{runas_user} به نام کاربری که دستور با هویت او اجرا می‌شود (مانند root) باز می‌شود .It %{runas_group} به نام گروه کاربری که دستور با هویت آن اجرا می‌شود (مانند wheel) باز می‌شود .It %{hostname} به نام میزبان محلی بدون نام دامنه باز می‌شود .It %{command} به نام پایهٔ دستوری که در حال اجرا است باز می‌شود .El .Pp علاوه بر این، هرگونه توالی گریز که توسط تابع .Xr strftime 3 سیستم پشتیبانی شود بسط داده خواهد شد. .Pp برای درج نویسهٔ واقعی .Ql % باید از رشتهٔ .Ql %% استفاده شود. .It iolog_file = path نام مسیر، نسبت به .Em iolog_dir ، که لاگ‌های ورودی/خروجی در آن ذخیره می‌شوند. ممکن است .Em iolog_file شامل مؤلفه‌های پوشه باشد. مقدار پیش‌فرض .Dq %{seq} است. .Pp برای فهرستی از توالی‌های گریز درصد .Pq Ql % پشتیبانی‌شده، تنظیم .Em iolog_dir در بالا را ببینید. .Pp علاوه بر توالی‌های گریز، در نام‌های مسیری که به شش یا تعداد بیشتری .Em X ختم می‌شوند، نویسه‌های .Em X با ترکیبی یکتا از ارقام و حروف، مشابه با عملکرد تابع .Xr mktemp 3 جایگزین خواهند شد. .Pp اگر مسیر حاصل از پیوستن .Em iolog_dir و .Em iolog_file از قبل وجود داشته باشد، فایل لاگ ورودی/خروجی موجود کوتاه (truncate) و بازنویسی خواهد شد، مگر اینکه .Em iolog_file به شش یا تعداد بیشتری .Em X ختم شود. .It iolog_flush = boolean در صورت تنظیم، داده‌های لاگ ورودی/خروجی پس از هر نوشتن به جای بافر شدن، روی دیسک تخلیه (flush) می‌شوند. این امکان مشاهدهٔ بی‌درنگ لاگ‌ها را در حین اجرای برنامه فراهم می‌کند اما ممکن است اثربخشی فشرده‌سازی لاگ ورودی/خروجی را به میزان چشمگیری کاهش دهد. صرف‌نظر از این تنظیم، لاگ‌های ورودی/خروجی همیشه قبل از ارسال نقطهٔ تثبیت (commit point) به کلاینت تخلیه می‌شوند. مقدار پیش‌فرض .Em true است. .It iolog_group = name نام گروهی که هنگام تنظیم شناسه گروه روی فایل‌ها و پوشه‌های جدید لاگ ورودی/خروجی جستجو می‌شود. اگر .Em iolog_group تنظیم نشده باشد، شناسه گروه اصلی کاربری که توسط .Em iolog_user مشخص شده است استفاده می‌شود. اگر نه .Em iolog_group و نه .Em iolog_user تنظیم نشده باشند، فایل‌ها و پوشه‌های لاگ ورودی/خروجی با شناسه گروه 0 ایجاد می‌شوند. .It iolog_mode = mode حالت دسترسی فایل برای ایجاد فایل‌های لاگ ورودی/خروجی. بیت‌های دسترسی خواندن و نوشتن برای مالک، گروه یا سایرین رعایت می‌شوند و سایر بیت‌ها نادیده گرفته می‌شوند. مجوزهای فایل همواره شامل بیت‌های خواندن و نوشتن مالک خواهند بود، حتی اگر در حالت مشخص‌شده وجود نداشته باشند. هنگام ایجاد پوشه‌های لاگ ورودی/خروجی، بیت‌های پیمایش (اجرا) مطابق با بیت‌های خواندن و نوشتن مشخص‌شده توسط .Em iolog_mode اضافه می‌شوند. مقدار پیش‌فرض .Em 0600 است. .It iolog_user = name نام کاربری که هنگام تنظیم مالک فایل‌ها و پوشه‌های جدید لاگ ورودی/خروجی جستجو می‌شود. اگر .Em iolog_group تنظیم شده باشد، به جای شناسه گروه اصلی کاربر استفاده خواهد شد. به‌طور پیش‌فرض، فایل‌ها و پوشه‌های لاگ ورودی/خروجی با شناسه کاربر و شناسه گروه 0 ایجاد می‌شوند. .It log_passwords = bool بیشتر برنامه‌هایی که نیاز به گذرواژهٔ کاربر دارند، قبل از خواندن گذرواژه انعکاس (echo) را غیرفعال می‌کنند تا از نمایش متن آشکار گذرواژه روی صفحه جلوگیری شود. با این وجود، اگر ورودی ترمینال در حال ثبت باشد، گذرواژه همچنان در لاگ ورودی/خروجی وجود خواهد داشت. اگر .Em log_passwords روی .Em false تنظیم شود، .Nm sudo_logsrvd تلاش خواهد کرد از ثبت گذرواژه‌ها جلوگیری کند. این کار با استفاده از عبارت‌های باقاعده در .Em passprompt_regex برای تطبیق اعلان گذرواژه در بافر خروجی ترمینال انجام می‌گیرد. هنگام یافتن تطابق، نویسه‌های ورودی در لاگ ورودی/خروجی با .Ql * جایگزین می‌شوند تا زمانی که نویسهٔ خط بعد (line feed) یا بازگشت به ابتدای خط (carriage return) در ورودی ترمینال یافت شود یا یک بافر خروجی ترمینال جدید دریافت گردد. با این حال، اگر برنامه‌ای نویسه‌ها را هم‌زمان با تایپ کاربر نمایش دهد (مانند .Nm sudo هنگامی که گزینهٔ .Em pwfeedback تنظیم شده باشد)، تنها اولین نویسهٔ گذرواژه در لاگ ورودی/خروجی جایگزین خواهد شد. مقدار پیش‌فرض .Em true است. .It maxseq = number حداکثر شماره ترتیبی که جایگزین توالی گریز .Dq %{seq} در فایل لاگ ورودی/خروجی می‌شود (برای اطلاعات بیشتر به توضیحات .Em iolog_dir در بالا مراجعه کنید). اگرچه مقدار جایگزین‌شده برای .Dq %{seq} در مبنای 36 است، خود .Em maxseq باید به صورت ده‌دهی بیان شود. مقادیر بزرگ‌تر از 2176782336 (که متناظر با شماره ترتیبی .Dq ZZZZZZ در مبنای 36 است) بدون هشدار به 2176782336 محدود خواهند شد. مقدار پیش‌فرض .Em 2176782336 است. .It passprompt_regex = string یک یا چند عبارت باقاعده گستردهٔ POSIX که برای تطبیق با اعلان‌های گذرواژه در خروجی ترمینال در هنگام غیرفعال بودن .Em log_passwords استفاده می‌شوند. به عنوان یک قابلیت تکمیلی، اگر عبارت باقاعده با .Dq (?i) آغاز شود، تطبیق به صورت غیرحساس به بزرگی و کوچکی حروف انجام خواهد شد. چندین تنظیم .Em passprompt_regex را می‌توان تعیین کرد. طول هر عبارت باقاعده حداکثر به 1024 نویسه محدود است. مقدار پیش‌فرض .Dq [Pp]assword[: ]* است. .El .Ss eventlog بخش .Em eventlog نحوهٔ ثبت رویدادهای خط‌مشی امنیتی (و در صورت لزوم ثبت آن‌ها) را پیکربندی می‌کند. کلیدهای زیر شناخته می‌شوند: .Bl -tag -width 4n .It log_type = string محل ثبت رویدادهای پذیرش (accept)، رد (reject) و هشدار (alert) گزارش‌شده توسط خط‌مشی. مقادیر پشتیبانی‌شده عبارتند از .Em syslog , .Em logfile و .Em none . مقدار پیش‌فرض .Em syslog است. .It log_exit = boolean اگر روی true تنظیم شود، .Nm sudo_logsrvd هنگام خروج دستور یا پایان یافتن آن توسط یک سیگنال، رویدادی را ثبت خواهد کرد. پیش‌فرض .Em false است. .It log_format = string قالب ثبت وقایع رویداد. قالب‌های لاگ پشتیبانی‌شده عبارتند از: .Bl -tag -width 4n .It json در حال حاضر این یک نام مستعار برای .Em json_pretty است. در نگارش آیندهٔ .Nm sudo_logsrvd , مقدار .Em json معادل .Em json_compact خواهد بود. ورودی‌های لاگ JSON شامل محتویات کامل پیام‌های پذیرش، رد، خروج و هشدار هستند. .It json_compact ثبت رویدادها در قالب JSON .Dq فشرده (minified). هر رویداد به صورت یک شیء JSON مجزا در یک خط بدون فاصله‌های خالی اضافه نوشته می‌شود. به دلیل محدودیت‌های پروتکل، رویدادهای JSON ارسال‌شده از طریق .Em syslog ممکن است کوتاه شوند. .It json_pretty ثبت رویدادها در قالب JSON .Dq خوانا (pretty). هنگام ثبت در فایل، کل فایل به عنوان یک شیء JSON واحد متشکل از چندین رویداد تلقی می‌شود که هر رویداد چندین خط را در بر می‌گیرد. هنگام ثبت از طریق .Em syslog , تفاوتی میان قالب‌های .Em json_pretty و .Em json_compact وجود ندارد. .It sudo ثبت رویدادها در قالب سنتی به سبک sudo. برای جزئیات بیشتر بخش .Em "EVENT LOGGING" در .Xr sudoers 5 را ببینید. .El .Pp مقدار پیش‌فرض .Em sudo است. .El .Ss syslog بخش .Em syslog نحوهٔ ثبت وقایع از طریق .Xr syslog 3 را پیکربندی می‌کند. کلیدهای زیر شناخته می‌شوند: .Bl -tag -width 4n .It facility = string تسهیلات (facility) سیلاگ در صورت استفاده از syslog برای ثبت وقایع. پیش‌فرض .Em auth است. .Pp تسهیلات syslog زیر پشتیبانی می‌شوند: .Sy authpriv (در صورت پشتیبانی سیستم‌عامل شما)، .Sy auth , .Sy daemon , .Sy user , .Sy local0 , .Sy local1 , .Sy local2 , .Sy local3 , .Sy local4 , .Sy local5 , .Sy local6 و .Sy local7 . .It accept_priority = string اولویت syslog مورد استفاده هنگامی که کاربر مجاز به اجرای دستور است و احراز هویت موفقیت‌آمیز بوده است. پیش‌فرض .Em notice است. .Pp اولویت‌های syslog زیر پشتیبانی می‌شوند: .Sy alert , .Sy crit , .Sy debug , .Sy emerg , .Sy err , .Sy info , .Sy notice , .Sy warning و .Sy none . تنظیم آن روی مقدار .Sy none ثبت وقایع دستورات موفق را غیرفعال خواهد کرد. .It reject_priority = string اولویت syslog مورد استفاده هنگامی که کاربر مجاز به اجرای دستور نیست یا احراز هویت ناموفق است. پیش‌فرض .Em alert است. .Pp برای فهرست اولویت‌های syslog پشتیبانی‌شده، .Em accept_priority را ببینید. .It alert_priority = string اولویت syslog مورد استفاده برای پیام‌های هشدار لاگ رویداد دریافت‌شده از کلاینت. پیش‌فرض .Em alert است. .Pp برای فهرست اولویت‌های syslog پشتیبانی‌شده، .Em accept_priority را ببینید. .It maxlen = number روی بسیاری از سیستم‌ها، .Xr syslog 3 دارای بافر لاگ نسبتاً کوچکی است. سند IETF RFC 5424 بیان می‌دارد که سرورهای syslog باید از پیام‌های دست‌کم 480 بایتی پشتیبانی کنند و بهتر است از پیام‌های تا 2048 بایت پشتیبانی نمایند. به‌طور پیش‌فرض، .Nm sudo_logsrvd پیام‌های لاگ تا 960 بایت ایجاد می‌کند که متناظر با پیاده‌سازی تاریخی syslog در .Bx است که از یک بافر 1024 بایتی برای ذخیره پیام، تاریخ، نام میزبان و نام برنامه استفاده می‌کرد. .Pp جهت جلوگیری از کوتاه شدن پیام‌های syslog، برنامهٔ .Nm sudo_logsrvd پیام‌های لاگ به سبک sudo را که بزرگ‌تر از .Em maxlen بایت باشند به چند بخش تقسیم خواهد کرد. هنگامی که پیامی تقسیم می‌شود، بخش‌های اضافی شامل رشتهٔ .Dq Pq command continued پس از نام کاربری و پیش از آرگومان‌های ادامه‌یافته خط فرمان خواهند بود. ورودی‌های لاگ با قالب JSON هرگز تقسیم نمی‌شوند و تحت تأثیر .Em maxlen قرار نمی‌گیرند. .It server_facility = string تسهیلات syslog در صورتی که از syslog برای پیام‌های هشدار سرور استفاده شود. برای فهرستی از تسهیلات پشتیبانی‌شده به بالا مراجعه کنید. پیش‌فرض .Em daemon است. .El .Ss logfile بخش .Em logfile شامل تنظیمات مربوط به ثبت وقایع در یک فایل ساده (غیر از syslog) است. کلیدهای زیر شناخته می‌شوند: .Bl -tag -width 4n .It path = string مسیر فایل لاگ رویدادها. این مسیر باید کامل و مطلق بوده و با نویسهٔ .Sq / آغاز شود. مقدار پیش‌فرض .Pa /var/log/sudo.log است. .It time_format = string رشتهٔ مورد استفاده هنگام قالب‌بندی تاریخ و زمان برای لاگ‌های رویداد مبتنی بر فایل. قالب‌بندی از طریق تابع .Xr strftime 3 سیستم انجام می‌شود، بنابراین هر توالی گریزی که توسط این تابع پشتیبانی شود بسط خواهد یافت. مقدار پیش‌فرض .Dq "%h %e %T" است که تاریخ‌هایی مانند .Dq Oct 3 07:15:24 را در محلی‌سازی (locale) .Ql C تولید می‌کند. .El .Sh "فایلها (FILES)" .Bl -tag -width 24n .It Pa /etc/sudo_logsrvd.conf فایل پیکربندی سرور ثبت وقایع sudo .El .Sh "مثالها (EXAMPLES)" .Bd -literal # # sudo logsrv daemon configuration # [server] # The host name or IP address and port to listen on with an optional TLS # flag. If no port is specified, port 30343 will be used for plaintext # connections and port 30344 will be used to TLS connections. # The following forms are accepted: # listen_address = hostname(tls) # listen_address = hostname:port(tls) # listen_address = IPv4_address(tls) # listen_address = IPv4_address:port(tls) # listen_address = [IPv6_address](tls) # listen_address = [IPv6_address]:port(tls) # # The (tls) suffix should be omitted for plaintext connections. # # Multiple listen_address settings may be specified. # The default is to listen on all addresses. #listen_address = *:30343 #listen_address = *:30344(tls) # The file containing the ID of the running sudo_logsrvd process. #pid_file = /run/sudo/sudo_logsrvd.pid # Where to log server warnings: none, stderr, syslog, or a path name. #server_log = syslog # If true, enable the SO_KEEPALIVE socket option on client connections. # Defaults to true. #tcp_keepalive = true # The amount of time, in seconds, the server will wait for the client to # respond. A value of 0 will disable the timeout. The default value is 30. #timeout = 30 # If true, the server will validate its own certificate at startup. # Defaults to true. #tls_verify = true # If true, client certificates will be validated by the server; # clients without a valid certificate will be unable to connect. # By default, client certs are not checked. #tls_checkpeer = false # Path to a certificate authority bundle file in PEM format to use # instead of the system's default certificate authority database. #tls_cacert = /etc/ssl/sudo/cacert.pem # Path to the server's certificate file in PEM format. # Required for TLS connections. #tls_cert = /etc/ssl/sudo/certs/logsrvd_cert.pem # Path to the server's private key file in PEM format. # Required for TLS connections. #tls_key = /etc/ssl/sudo/private/logsrvd_key.pem # TLS cipher list (see "CIPHER LIST FORMAT" in the openssl-ciphers manual). # This setting is only effective if the negotiated protocol is TLS version # 1.2. The default cipher list is HIGH:!aNULL. #tls_ciphers_v12 = HIGH:!aNULL # TLS cipher list if the negotiated protocol is TLS version 1.3. # The default cipher list is TLS_AES_256_GCM_SHA384. #tls_ciphers_v13 = TLS_AES_256_GCM_SHA384 # Path to the Diffie-Hellman parameter file in PEM format. # If not set, the server will use the OpenSSL defaults. #tls_dhparams = /etc/ssl/sudo/logsrvd_dhparams.pem [relay] # The host name or IP address and port to send logs to in relay mode. # The syntax is identical to listen_address with the exception of # the wild card ('*') syntax. When this setting is enabled, logs will # be relayed to the specified host instead of being stored locally. # This setting is not enabled by default. #relay_host = relayhost.dom.ain #relay_host = relayhost.dom.ain(tls) # The amount of time, in seconds, the server will wait for a connection # to the relay server to complete. A value of 0 will disable the timeout. # The default value is 30. #connect_timeout = 30 # The directory to store messages in before they are sent to the relay. # Messages are stored in wire format. # The default value is /var/log/sudo_logsrvd. #relay_dir = /var/log/sudo_logsrvd # The number of seconds to wait after a connection error before # making a new attempt to forward a message to a relay host. # The default value is 30. #retry_interval = 30 # Whether to store the log before relaying it. If true, enable store # and forward mode. If false, the client connection is immediately # relayed. Defaults to false. #store_first = true # If true, enable the SO_KEEPALIVE socket option on relay connections. # Defaults to true. #tcp_keepalive = true # The amount of time, in seconds, the server will wait for the relay to # respond. A value of 0 will disable the timeout. The default value is 30. #timeout = 30 # If true, the server's relay certificate will be verified at startup. # The default is to use the value in the [server] section. #tls_verify = true # Whether to verify the relay's certificate for TLS connections. # The default is to use the value in the [server] section. #tls_checkpeer = false # Path to a certificate authority bundle file in PEM format to use # instead of the system's default certificate authority database. # The default is to use the value in the [server] section. #tls_cacert = /etc/ssl/sudo/cacert.pem # Path to the server's certificate file in PEM format. # The default is to use the certificate in the [server] section. #tls_cert = /etc/ssl/sudo/certs/logsrvd_cert.pem # Path to the server's private key file in PEM format. # The default is to use the key in the [server] section. #tls_key = /etc/ssl/sudo/private/logsrvd_key.pem # TLS cipher list (see "CIPHER LIST FORMAT" in the openssl-ciphers manual). # this setting is only effective if the negotiated protocol is TLS version # 1.2. The default is to use the value in the [server] section. #tls_ciphers_v12 = HIGH:!aNULL # TLS cipher list if the negotiated protocol is TLS version 1.3. # The default is to use the value in the [server] section. #tls_ciphers_v13 = TLS_AES_256_GCM_SHA384 # Path to the Diffie-Hellman parameter file in PEM format. # The default is to use the value in the [server] section. #tls_dhparams = /etc/ssl/sudo/logsrvd_dhparams.pem [iolog] # The top-level directory to use when constructing the path name for the # I/O log directory. The session sequence number, if any, is stored here. #iolog_dir = /var/log/sudo-io # The path name, relative to iolog_dir, in which to store I/O logs. # It is possible for iolog_file to contain directory components. #iolog_file = %{seq} # If set, I/O logs will be compressed using zlib. Enabling compression can # make it harder to view the logs in real-time as the program is executing. #iolog_compress = false # If set, I/O log data is flushed to disk after each write instead of # buffering it. This makes it possible to view the logs in real-time # as the program is executing but reduces the effectiveness of compression. #iolog_flush = true # The group to use when creating new I/O log files and directories. # If iolog_group is not set, the primary group-ID of the user specified # by iolog_user is used. If neither iolog_group nor iolog_user # are set, I/O log files and directories are created with group-ID 0. #iolog_group = wheel # The user to use when setting the user-ID and group-ID of new I/O # log files and directories. If iolog_group is set, it will be used # instead of the user's primary group-ID. By default, I/O log files # and directories are created with user and group-ID 0. #iolog_user = root # The file mode to use when creating I/O log files. The file permissions # will always include the owner read and write bits, even if they are # not present in the specified mode. When creating I/O log directories, # search (execute) bits are added to match the read and write bits # specified by iolog_mode. #iolog_mode = 0600 # If disabled, sudo_logsrvd will attempt to avoid logging plaintext # password in the terminal input using passprompt_regex. #log_passwords = true # The maximum sequence number that will be substituted for the "%{seq}" # escape in the I/O log file. While the value substituted for "%{seq}" # is in base 36, maxseq itself should be expressed in decimal. Values # larger than 2176782336 (which corresponds to the base 36 sequence # number "ZZZZZZ") will be silently truncated to 2176782336. #maxseq = 2176782336 # One or more POSIX extended regular expressions used to match # password prompts in the terminal output when log_passwords is # disabled. Multiple passprompt_regex settings may be specified. #passprompt_regex = [Pp]assword[: ]* #passprompt_regex = [Pp]assword for [a\-z0\-9]+: * [eventlog] # Where to log accept, reject, exit, and alert events. # Accepted values are syslog, logfile, or none. # Defaults to syslog #log_type = syslog # Whether to log an event when a command exits or is terminated by a signal. # Defaults to false #log_exit = true # Event log format. # Currently only sudo-style event logs are supported. #log_format = sudo [syslog] # The maximum length of a syslog payload. # On many systems, syslog(3) has a relatively small log buffer. # IETF RFC 5424 states that syslog servers must support messages # of at least 480 bytes and should support messages up to 2048 bytes. # Messages larger than this value will be split into multiple messages. #maxlen = 960 # The syslog facility to use for event log messages. # The following syslog facilities are supported: authpriv (if your OS # supports it), auth, daemon, user, local0, local1, local2, local3, # local4, local5, local6, and local7. #facility = auth # Syslog priority to use for event log accept messages, when the command # is allowed by the security policy. The following syslog priorities are # supported: alert, crit, debug, emerg, err, info, notice, warning, none. #accept_priority = notice # Syslog priority to use for event log reject messages, when the command # is not allowed by the security policy. #reject_priority = alert # Syslog priority to use for event log alert messages reported by the # client. #alert_priority = alert # The syslog facility to use for server warning messages. # Defaults to daemon. #server_facility = daemon [logfile] # The path to the file-based event log. # This path must be fully-qualified and start with a '/' character. #path = /var/log/sudo.log # The format string used when formatting the date and time for # file-based event logs. Formatting is performed via strftime(3) so # any format string supported by that function is allowed. #time_format = %h %e %T .Ed .Sh "همچنین ببینید (SEE ALSO)" .Xr strftime 3 , .Xr sudo.conf 5 , .Xr sudoers 5 , .Xr sudo 8 , .Xr sudo_logsrvd 8 .Sh "نویسندگان (AUTHORS)" افراد بسیاری در طول سال‌ها روی .Nm sudo کار کرده‌اند؛ این نگارش عمدتاً از کدهای نوشته‌شده توسط افراد زیر تشکیل شده است: .Bd -ragged -offset indent .An Todd C. Miller .Ed .Pp برای مشاهده فهرست کامل افرادی که در .Nm sudo مشارکت داشته‌اند، فایل CONTRIBUTORS.md را در توزیع .Nm sudo (https://www.sudo.ws/about/contributors) ببینید. .Sh "گزارش باگ‌ها (BUGS)" اگر فکر می‌کنید باگی در .Nm یافته‌اید، می‌توانید یک گزارش اشکال در پایگاه داده اشکالات sudo در https://bugzilla.sudo.ws ثبت کنید یا یک مشکل در https://github.com/sudo-project/sudo/issues باز نمایید. اگر ترجیح می‌دهید از رایانامه استفاده کنید، پیام‌ها می‌توانند به فهرست پستی sudo-workers در https://www.sudo.ws/mailman/listinfo/sudo-workers (عمومی) یا به (خصوصی) ارسال شوند. .Pp لطفاً آسیب‌پذیری‌های امنیتی را از طریق مشکلات عمومی گیت‌هاب، پایگاه Bugzilla یا فهرست‌های پستی گزارش ندهید. در عوض، آن‌ها را از طریق رایانامه به ارسال نمایید. در صورت تمایل می‌توانید پیام خود را با استفاده از کلید PGP موجود در https://www.sudo.ws/dist/PGPKEYS رمزگذاری کنید. .Sh "پشتیبانی (SUPPORT)" پشتیبانی رایگان محدود از طریق فهرست پستی sudo-users در دسترس است، برای اشتراک یا جستجو در بایگانی نشانی https://www.sudo.ws/mailman/listinfo/sudo-users را ببینید. .Sh "سلب مسئولیت (DISCLAIMER)" .Nm sudo به‌صورت .Dq همانی که هست (AS IS) ارائه می‌شود و هرگونه ضمانت صریح یا ضمنی، از جمله، اما نه محدود به، ضمانت‌های ضمنی خرید و فروش و تناسب برای یک هدف خاص رد می‌شود. برای جزئیات کامل فایل LICENSE.md توزیع‌شده با .Nm sudo یا نشانی https://www.sudo.ws/about/license را ملاحظه فرمایید.