.\" Automatically generated from the sudoers_timestamp.mdoc.in file. Do not edit. .\" .\" SPDX-License-Identifier: ISC .\" .\" Copyright (c) 2017-2020, 2022-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 November 26, 2023 .Dt SUDOERS_TIMESTAMP 5 .Os Sudo 1.9.17p2 .Sh "نام (NAME)" .Nm sudoers_timestamp .Nd فرمت فایلهای برچسب زمانی sudoers .Sh "توضیحات (DESCRIPTION)" پلاگین .Nm sudoers از پرونده‌های برچسب زمانی به ازای هر شناسه کاربر (user-ID) برای حافظهٔ نهان اعتبارنامه‌ها استفاده می‌کند. هنگامی که کاربری احراز هویت شد، می‌تواند برای مدت کوتاهی .Po .Em 5 دقیقه، مگر اینکه توسط گزینهٔ .Em timestamp_timeout لغو شده باشد .Pc بدون نیاز به گذرواژه از .Nm sudo استفاده کند. به طور پیشفرض، .Nm sudoers از یک رکورد مجزا برای هر ترمینال استفاده می‌کند، به این معنی که نشست‌های ورود کاربر به طور جداگانه احراز هویت می‌شوند. گزینهٔ .Em timestamp_type می‌تواند برای انتخاب نوع رکورد برچسب زمانی که .Nm sudoers استفاده خواهد کرد، به کار رود. .Pp یک فرمت پرونده برچسب زمانی چندرکوردی در .Nm sudo 1.8.10 معرفی شد که از یک پرونده واحد برای هر کاربر استفاده می‌کند. پیش از این، یک پرونده جداگانه برای هر ترکیب کاربر و ترمینال استفاده می‌شد، مگر اینکه برچسب‌های زمانی مبتنی بر tty غیرفعال شده بودند. فرمت جدید قابل گسترش است و رکوردهایی از انواع و نسخه‌های مختلف می‌توانند درون یک پرونده مشترک همزیستی داشته باشند. .Pp تمام رکوردها، صرف‌نظر از نوع یا نسخه، با یک شماره نسخهٔ ۱۶ بیتی و یک اندازه رکورد ۱۶ بیتی آغاز می‌شوند. .Pp رکوردهای برچسب زمانی ساختار زیر را دارند: .Bd -literal /* Time stamp entry types */ #define TS_GLOBAL 0x01U /* not restricted by tty or ppid */ #define TS_TTY 0x02U /* restricted by tty */ #define TS_PPID 0x03U /* restricted by ppid */ #define TS_LOCKEXCL 0x04U /* special lock record */ /* Time stamp flags */ #define TS_DISABLED 0x01U /* entry disabled */ #define TS_ANYUID 0x02U /* ignore uid, only valid in key */ struct timestamp_entry { unsigned short version; /* version number */ unsigned short size; /* entry size */ unsigned short type; /* TS_GLOBAL, TS_TTY, TS_PPID */ unsigned short flags; /* TS_DISABLED, TS_ANYUID */ uid_t auth_uid; /* uid to authenticate as */ pid_t sid; /* session ID associated with tty/ppid */ struct timespec start_time; /* session/ppid start time */ struct timespec ts; /* time stamp (CLOCK_MONOTONIC) */ union { dev_t ttydev; /* tty device number */ pid_t ppid; /* parent pid */ } u; }; .Ed .Pp فیلدهای ساختار timestamp_entry به شرح زیر هستند: .Bl -tag -width 4n .It version شماره نسخهٔ ساختار timestamp_entry. ورودی‌های جدید با شماره نسخهٔ ۲ ایجاد می‌شوند. رکوردهایی با شماره نسخه‌های مختلف می‌توانند درون یک پرونده همزیستی داشته باشند اما با یکدیگر سازگار و دارای عملکرد متقابل (inter-operable) نیستند. .It size اندازهٔ رکورد بر حسب بایت. .It type نوع رکورد، در حال حاضر .Dv TS_GLOBAL , .Dv TS_TTY , یا .Dv TS_PPID . .It flags صفر یا چند پرچم رکورد که می‌توانند با یکدیگر OR بیتی شوند. پرچم‌های پشتیبانی‌شده عبارتند از .Dv TS_DISABLED , برای رکوردهای غیرفعال‌شده از طریق .Nm sudo .Fl k و .Dv TS_ANYUID , که تنها هنگام تطبیق رکوردها به کار می‌رود. .It auth_uid شناسه کاربری (user-ID) که برای احراز هویت استفاده شده است. بسته به مقدار گزینه‌های .Em rootpw , .Em runaspw و .Em targetpw , شناسه کاربری ممکن است متعلق به کاربر فراخواننده، کاربر root، کاربر پیشفرض runas یا کاربر هدف باشد. .It sid شناسهٔ نشست ترمینال کاربر، در صورت وجود. شناسهٔ نشست تنها هنگام تطبیق رکوردهای از نوع .Dv TS_TTY استفاده می‌شود. .It start_time زمان شروع رهبر نشست برای رکوردهای از نوع .Dv TS_TTY یا فرایند والد برای رکوردهای از نوع .Dv TS_PPID . فیلد .Em start_time برای کمک به جلوگیری از استفادهٔ مجدد از یک رکورد برچسب زمانی پس از خروج کاربر از سیستم استفاده می‌شود. همه سیستم‌ها از روشی برای بازیابی آسان زمان شروع فرایند پشتیبانی نمی‌کنند. فیلد .Em start_time در .Nm sudoers نسخهٔ 1.8.22 برای بازبینی دوم ساختار timestamp_entry اضافه شد. .It ts برچسب زمانی واقعی. در صورتی که سیستم از آن پشتیبانی کند، یک منبع زمانی یکنواخت (monotonic time source، که رو به عقب حرکت نمی‌کند) استفاده می‌شود. در صورت امکان، .Nm sudoers از یک تایمر یکنواخت استفاده می‌کند که حتی در زمان تعلیق سیستم نیز افزایش می‌یابد. مقدار .Em ts هر بار که دستوری از طریق .Nm sudo اجرا می‌شود، به‌روزرسانی می‌گردد. اگر اختلاف بین .Em ts و زمان فعلی کمتر از مقدار گزینهٔ .Em timestamp_timeout باشد، نیازی به گذرواژه نخواهد بود. .It u.ttydev شماره دستگاه ترمینال مرتبط با نشست برای رکوردهای از نوع .Dv TS_TTY . .It u.ppid شناسهٔ فرایند والد برای رکوردهای از نوع .Dv TS_PPID . .El .Pp ابزار .Nm tsdump , که همراه با توزیع سورس sudo ارائه شده است، می‌تواند برای نمایش محتویات یک پروندهٔ برچسب زمانی .Em sudoers استفاده شود. .Sh "قفل‌گذاری (LOCKING)" در .Nm sudoers نسخه‌های 1.8.10 تا 1.8.14، هنگام خواندن یا نوشتن در پرونده، کل پروندهٔ برچسب زمانی برای دسترسی انحصاری قفل می‌شد. از .Nm sudoers 1.8.15 به بعد، به جای کل پرونده، رکوردهای مجزا در پرونده برچسب زمانی قفل می‌شوند و قفل برای مدت زمان طولانی‌تری نگه داشته می‌شود. این سازوکار در ادامه شرح داده شده است. .Pp نخستین رکورد در پرونده برچسب زمانی از نوع .Dv TS_LOCKEXCL است و به عنوان یک رکورد .Em lock (قفل) به کار می‌رود تا از افزودن رکورد جدید توسط بیش از یک فرایند .Nm sudo به طور همزمان جلوگیری کند. به محض اینکه رکورد برچسب زمانی مورد نظر پیدا یا ایجاد (و قفل) شد، قفل رکورد .Dv TS_LOCKEXCL آزاد می‌شود. با این حال، قفل روی رکورد مجزای برچسب زمانی تا زمان تکمیل احراز هویت حفظ می‌شود. این قابلیت به .Nm sudoers اجازه می‌دهد تا از درخواست چندبارهٔ گذرواژه در زمانی که بیش از یک بار در یک خط لوله (pipeline) استفاده می‌شود، جلوگیری کند. .Pp رکوردهای از نوع .Dv TS_GLOBAL نمی‌توانند برای مدت طولانی قفل شوند، زیرا انجام این کار با سایر فرایندهای .Nm sudo تداخل ایجاد می‌کند. در عوض، از یک رکورد قفل جداگانه استفاده می‌شود تا از درخواست همزمان گذرواژه توسط چندین فرایند .Nm sudo که از یک ترمینال (یا شناسه فرایند والد) یکسان استفاده می‌کنند، جلوگیری به عمل آید. .Sh "همچنین ببینید (SEE ALSO)" .Xr sudoers 5 , .Xr sudo 8 .Sh "تاریخچه (HISTORY)" در ابتدا، .Nm sudo از یک پروندهٔ تک با طول صفر برای هر کاربر استفاده می‌کرد و زمان ویرایش پرونده به عنوان برچسب زمانی به کار می‌رفت. نسخه‌های بعدی .Nm sudo محدودیت‌هایی بر مالکیت پرونده‌ها و دایرکتوری برچسب زمانی و همچنین بررسی‌هایی بر صحت خود برچسب زمانی اضافه کردند. تغییرات قابل توجه در نسخه‌های زیر از .Nm sudo معرفی شدند: .Bl -tag -width 4n .It 1.4.0 پشتیبانی از پرونده برچسب زمانی مبتنی بر tty با الحاق نام ترمینال به انتهای نام پرونده برچسب زمانی اضافه شد. .It 1.6.2 پرونده برچسب زمانی با یک دایرکتوری به ازای هر کاربر که شامل پرونده‌های برچسب زمانی مبتنی بر tty بود، جایگزین گردید. .It 1.6.3p2 هنگامی که گزینهٔ .Em targetpw تنظیم شده بود، نام کاربر هدف به نام پرونده برچسب زمانی اضافه شد. .It 1.7.3 اطلاعات مربوط به دستگاه ترمینال برای بررسی‌های اعتبار در پرونده‌های برچسب زمانی مبتنی بر tty ذخیره شد. این اطلاعات شامل شماره‌های دستگاه ترمینال، شماره inode و در سیستم‌هایی که هنگام نوشتن روی دستگاه به‌روزرسانی نمی‌شد، زمان تغییر inode بود. این امر به جلوگیری از استفاده مجدد از پرونده برچسب زمانی پس از خروج از سیستم کمک کرد. .It 1.8.6p7 شناسهٔ نشست ترمینال به پرونده‌های برچسب زمانی مبتنی بر tty اضافه شد تا از استفاده مجدد از برچسب زمانی توسط همان کاربر در یک نشست ترمینال دیگر جلوگیری به عمل آید. همچنین به جلوگیری از استفاده مجدد از پرونده برچسب زمانی در سیستم‌هایی که در آن‌ها زمان تغییر inode دستگاه ترمینال هنگام نوشتن به‌روزرسانی می‌شد، کمک کرد. .It 1.8.10 یک فرمت جدید و چندرکوردی برای پرونده برچسب زمانی معرفی شد که از یک پرونده واحد به ازای هر کاربر استفاده می‌کند. زمان تغییر دستگاه ترمینال گنجانده نشد، زیرا اکنون بیشتر سیستم‌ها همان‌طور که توسط POSIX الزامی شده است، پس از انجام عمل نوشتن، زمان تغییر را به‌روز می‌کنند. .It 1.8.15 رکوردهای منفرد در پرونده برچسب زمانی به جای کل پرونده قفل می‌شوند و قفل تا زمان تکمیل احراز هویت حفظ می‌شود. .It 1.8.22 زمان شروع رهبر نشست ترمینال یا فرایند والد اکنون در رکوردهای غیرسراسری (non-global) برچسب زمانی ذخیره می‌شود. این کار در اکثر موارد مانع از استفاده مجدد از پرونده برچسب زمانی پس از خروج از سیستم می‌شود. .Pp پشتیبانی از برچسب‌های زمانی tty مبتنی بر هسته که در .Ox موجود است و از پرونده برچسب زمانی روی دیسک استفاده نمی‌کند، افزوده شد. .It 1.9.15 مسیرهای پرونده برچسب زمانی اکنون به جای نام کاربر، بر اساس شناسه کاربری (user-ID) کاربر فراخواننده تعیین می‌شوند. این امر از بروز مشکلات با نام‌های کاربری که شامل نویسهٔ جداکننده مسیر هستند، جلوگیری می‌کند. .El .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 ثبت کنید یا یک issue در https://github.com/sudo-project/sudo/issues باز نمایید. اگر ترجیح می‌دهید از ایمیل استفاده کنید، پیام‌ها می‌توانند به لیست پستی sudo-workers در https://www.sudo.ws/mailman/listinfo/sudo-workers (عمومی) یا (خصوصی) ارسال شوند. .Pp لطفاً آسیب‌پذیری‌های امنیتی را از طریق issueهای عمومی گیت‌هاب، Bugzilla یا لیست‌های پستی گزارش ندهید. در عوض، آن‌ها را از طریق ایمیل به ارسال نمایید. در صورت تمایل می‌توانید پیام خود را با استفاده از کلید موجود در https://www.sudo.ws/dist/PGPKEYS با PGP رمزگذاری کنید. .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 را ببینید.