SUDO(8) sudo-rs SUDO(8)

sudoedit-rs - اجرای یک دستور با عنوان کاربری دیگر

sudo -h | -K | -k | -V

sudo [-u user] [-g group] [-D directory] [-BbknS] [-i | -s] [VAR=value] [<command>]

sudo -v [-BknS] [-u user] [-g group]

sudo -l [-BknS] [-U user] [-u user] [-g group] [command [arg ...]]

sudo -e [-BknS] [-u user] [-g group] file ...

sudoedit [-BknS] [-u user] [-g group] file ...

sudo به کاربری که مجوز لازم را دارد اجازه می‌دهد تا یک دستور را با عنوان کاربری دیگر (به‌عنوان مثال root) اجرا کند. مجوزها از طریق یک خط‌مشی امنیتی مشخص‌شده در /etc/sudoers تعیین می‌شوند (به sudoers(5) مراجعه کنید).

دستور Sudo-rs یک بازپیاده‌سازی حافظه‌امن و امنیت‌محور از پیاده‌سازی اصلی sudo اثر تاد میلر (Todd Miller) است.

هنگامی که دستوری اجرا می‌شود، یک رکورد نشست برای آن نشست خاص ذخیره می‌گردد که به کاربران اجازه می‌دهد دستورهای بیشتری را بدون نیاز به احراز هویت مجدد اجرا کنند. زمان انقضای رکوردهای نشست را می‌توان در خط‌مشی مشخص کرد.

تدابیر لازم اتخاذ شده است تا سیگنال‌های دریافت‌شده توسط sudo-rs به فرآیند فرزند ارسال شوند، حتی اگر آن فرآیند در شبه‌ترمینال اختصاصی خود اجرا شود.

در سیستم‌هایی که sudo روش اصلی برای دستیابی به دسترسی‌های کاربر ارشد است، پرهیز از خطاهای نگارشی در فایل /etc/sudoers امری حیاتی است. تغییرات در این فایل باید با استفاده از ابزار visudo(8) انجام شود تا اطمینان حاصل گردد که هیچ خطای نگارشی ایجاد نمی‌شود.

به‌طور معمول، اگر sudo به گذرواژه نیاز داشته باشد، آن را از ترمینال کاربر می‌خواند. اگر گزینه -A (askpass) مشخص شده باشد، یک برنامه کمکی (احتمالاً گرافیکی) اجرا می‌شود تا گذرواژه کاربر را بخواند و آن را در خروجی استاندارد بنویسد. اگر متغیر محیطی SUDO_ASKPASS تنظیم شده باشد، مسیر برنامه کمکی را مشخص می‌کند. اگر هیچ برنامه askpass در دسترس نباشد، sudo با خطا خارج خواهد شد.
در صورت وجود ترمینال، زنگ هشدار را به‌عنوان بخشی از اعلان گذرواژه به صدا درمی‌آورد.
اجرای دستور داده‌شده در پس‌زمینه. استفاده از کنترل وظایف پوسته (job control) برای مدیریت فرآیندهای پس‌زمینه‌ای که توسط sudo-rs آغاز شده‌اند امکان‌پذیر نیست. بیشتر دستورهای تعاملی در حالت پس‌زمینه به درستی کار نخواهند کرد.
اجرای دستور در دایرکتوری مشخص‌شده به‌جای دایرکتوری کاری فعلی. اگر کاربر مجوز تعیین دایرکتوری کاری را نداشته باشد، خط‌مشی امنیتی ممکن است خطایی را برگرداند.
استفاده از این گروه به‌عنوان گروه اصلی، به‌جای گروه اصلی مشخص‌شده در پایگاه‌داده گذرواژه برای کاربر هدف.
نمایش پیام راهنما.
اجرای پوسته‌ای که در مدخل پایگاه‌داده گذرواژه کاربر هدف مشخص شده است به‌عنوان یک پوسته ورود (login shell). این بدان معناست که فایل‌های منابع مختص ورود مانند .profile، .bash_profile یا .login توسط پوسته خوانده خواهند شد. اگر یک دستور مشخص شده باشد، با استفاده از گزینه -c به پوسته فرستاده می‌شود.
حذف تمام رکوردهای نشست ذخیره‌شده در حافظه نهان برای کاربر، صرف‌نظر از مکانی که دستور در آن اجرا شده است. دفعه بعد که sudo-rs اجرا شود، در صورتی که خط‌مشی ایجاب کند، احراز هویت انجام خواهد شد. برای اجرای این دستور نیازی به گذرواژه نیست.
هنگامی که بدون دستور استفاده شود، رکورد نشست کاربر برای نشست جاری را باطل می‌کند. دفعه بعد که sudo-rs اجرا شود، در صورتی که خط‌مشی ایجاب کند، احراز هویت انجام خواهد شد.

هنگامی که در ترکیب با یک دستور یا گزینه‌ای که ممکن است به گذرواژه نیاز داشته باشد استفاده شود، این گزینه باعث می‌شود sudo-rs رکورد نشست کاربر را نادیده بگیرد. در نتیجه، اگر خط‌مشی ایجاب کند، احراز هویت انجام خواهد شد. هنگامی که همراه با یک دستور استفاده شود، هیچ‌گونه ابطالی در رکوردهای نشست موجود رخ نخواهد داد.

جلوگیری از درخواست هرگونه ورودی از کاربر. اگر برای اجرای دستور به ورودی نیاز باشد، sudo-rs پیامی مبنی بر خطا نمایش داده و خارج می‌شود.
استفاده از اعلان احراز هویت سفارشی همراه با توالی‌های گریز اختیاری. توالی‌های گریز درصدی (`%') زیر پشتیبانی می‌شوند:
%H  به نام میزبان محلی بسط می‌یابد
%h  به نام میزبان محلی بدون نام دامنه بسط می‌یابد
%p  به نام کاربری که گذرواژه‌اش درخواست شده است بسط می‌یابد
    (از فلگ‌های rootpw و targetpw پیروی می‌کند)
%U  به نام ورود کاربری که دستور با هویت او اجرا می‌شود بسط می‌یابد
    (به‌طور پیش‌فرض root است مگر اینکه گزینه -u نیز مشخص شده باشد)
%u  به نام ورود کاربر فراخواننده بسط می‌یابد
%%  دو نویسه متوالی ‘%’ به یک نویسه ‘%’ فشرده می‌شوند

اعلان سفارشی جایگزین اعلان پیش‌فرض یا اعلان مشخص‌شده توسط متغیر محیطی SUDO_PROMPT خواهد شد. هیچ اعلانی اعلان ارائه‌شده توسط PAM را متوقف نمی‌کند، مگر اینکه اعلان درخواست‌شده خالی باشد ("").

خواندن از ورودی استاندارد به‌جای استفاده از دستگاه ترمینال.
اجرای پوسته‌ای که توسط متغیر محیطی SHELL مشخص شده است. اگر هیچ پوسته‌ای مشخص نشده باشد، پوسته موجود در مدخل پایگاه‌داده گذرواژه کاربر استفاده خواهد شد. اگر یک دستور مشخص شده باشد، با استفاده از گزینه -c به پوسته فرستاده می‌شود.
به خط‌مشی امنیتی نشان می‌دهد که کاربر می‌خواهد فهرست جداشده با کاما از متغیرهای محیطی را به متغیرهای حفظ‌شده از محیط کاربر اضافه کند. در صورتی که کاربر مجوزی برای حفظ متغیرهای محیط نداشته باشد، خط‌مشی امنیتی ممکن است خطایی را برگرداند. این گزینه می‌تواند چندین بار مشخص شود.
ویرایش یک یا چند فایل به‌جای اجرای یک دستور. هنگام بررسی خط‌مشی امنیتی، به‌جای نام مسیر از رشته “sudoedit” استفاده می‌شود. اگر کاربر توسط خط‌مشی مجاز شناخته شود، مراحل زیر طی می‌شوند:
1.
نسخه‌های موقتی از فایل‌های مورد نظر برای ویرایش ساخته شده و مالک آن‌ها کاربر فراخواننده قرار داده می‌شود.
2.
ویرایشگر مشخص‌شده توسط خط‌مشی برای ویرایش فایل‌های موقت اجرا می‌شود. خط‌مشی sudoers از متغیرهای محیطی SUDO_EDITOR، VISUAL و EDITOR (به همین ترتیب) استفاده می‌کند. اگر هیچ‌کدام از متغیرهای SUDO_EDITOR، VISUAL یا EDITOR تنظیم نشده باشند، اولین برنامه فهرست‌شده در گزینه editor در sudoers(5) استفاده می‌شود.
3.
در صورت اعمال تغییرات، محتوای فایل‌های موقت به فایل‌های اصلی بازگردانده شده و نسخه‌های موقت حذف می‌شوند.

برای کمک به جلوگیری از ویرایش فایل‌های غیرمجاز، محدودیت‌های زیر اعمال می‌شوند (مگر اینکه کاربر root باشد):

•
پیوندهای نمادین نباید ویرایش شوند.
•
اگر هر یک از بخش‌های مسیر منتهی به فایل توسط کاربر فراخواننده قابل نوشتن باشد، فایل نباید ویرایش شود.
•
کاربران هرگز مجاز به ویرایش فایل‌های ویژه دستگاه (device special files) نیستند.

اگر فایل مشخص‌شده وجود نداشته باشد، ایجاد خواهد شد. برخلاف اغلب دستورهای اجراشده توسط sudo، ویرایشگر با محیط بدون تغییر کاربر فراخواننده اجرا می‌شود. اگر فایل موقت پس از ویرایش خالی شود، قبل از نصب آن از کاربر تایید خواسته خواهد شد.

اجرای دستور با عنوان کاربری دیگر به‌جز کاربر پیش‌فرض (root).
نمایش نسخه فعلی sudo-rs.
به‌روزرسانی رکورد نشست برای نشست فعلی، و در صورت نیاز احراز هویت کاربر.
فهرست کردن اختیارات کاربر یا بررسی یک دستور خاص؛ برای قالب طولانی‌تر دوبار استفاده شود.
استفاده در حالت فهرست (list)، نمایش اختیارات برای کاربری دیگر.
--
پایان گزینه‌های sudo-rs و شروع دستور را مشخص می‌کند.

متغیرهای محیطی که باید برای دستور تنظیم شوند را می‌توان در خط فرمان به شکل VAR=value ارسال کرد. متغیرهای ارسال‌شده در خط فرمان تابع محدودیت‌های اعمال‌شده توسط خط‌مشی امنیتی هستند. متغیرهای ارسالی در خط فرمان مشمول همان محدودیت‌های متغیرهای محیطی عادی هستند، با یک استثنای مهم: اگر دستور مورد نظر برای اجرا دارای تگ SETENV باشد یا دستور مطابقت‌یافته ALL باشد، کاربر می‌تواند متغیرهایی را تنظیم کند که در غیر این صورت ممنوع بودند. برای اطلاعات بیشتر به sudoers(5) مراجعه کنید.

su(1), sudoers(5), visudo(8)

sudo-rs 0.2.15