SUDO(8) sudo-rs SUDO(8) نام (NAME) sudo, sudoedit - اجرای یک دستور با عنوان کاربری دیگر خلاصه دستور (SYNOPSIS) sudo -h | -K | -k | -V sudo [-u user] [-g group] [-D directory] [-BbknS] [-i | -s] [VAR=value] [] 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 ... توضیحات (DESCRIPTION) sudo به کاربری که مجوز لازم را دارد اجازه می‌دهد تا یک دستور را با عنوان کاربری دیگر (به‌عنوان مثال root) اجرا کند. مجوزها از طریق یک خط‌مشی امنیتی مشخص‌شده در /etc/sudoers تعیین می‌شوند (به sudoers(5) مراجعه کنید). دستور Sudo-rs یک بازپیاده‌سازی حافظه‌امن و امنیت‌محور از پیاده‌سازی اصلی sudo اثر تاد میلر (Todd Miller) است. هنگامی که دستوری اجرا می‌شود، یک رکورد نشست برای آن نشست خاص ذخیره می‌گردد که به کاربران اجازه می‌دهد دستورهای بیشتری را بدون نیاز به احراز هویت مجدد اجرا کنند. زمان انقضای رکوردهای نشست را می‌توان در خط‌مشی مشخص کرد. تدابیر لازم اتخاذ شده است تا سیگنال‌های دریافت‌شده توسط sudo-rs به فرآیند فرزند ارسال شوند، حتی اگر آن فرآیند در شبه‌ترمینال اختصاصی خود اجرا شود. در سیستم‌هایی که sudo روش اصلی برای دستیابی به دسترسی‌های کاربر ارشد است، پرهیز از خطاهای نگارشی در فایل /etc/sudoers امری حیاتی است. تغییرات در این فایل باید با استفاده از ابزار visudo(8) انجام شود تا اطمینان حاصل گردد که هیچ خطای نگارشی ایجاد نمی‌شود. گزینه‌ها (OPTIONS) -A, --askpass به‌طور معمول، اگر sudo به گذرواژه نیاز داشته باشد، آن را از ترمینال کاربر می‌خواند. اگر گزینه -A (askpass) مشخص شده باشد، یک برنامه کمکی (احتمالاً گرافیکی) اجرا می‌شود تا گذرواژه کاربر را بخواند و آن را در خروجی استاندارد بنویسد. اگر متغیر محیطی SUDO_ASKPASS تنظیم شده باشد، مسیر برنامه کمکی را مشخص می‌کند. اگر هیچ برنامه askpass در دسترس نباشد، sudo با خطا خارج خواهد شد. -B, --bell در صورت وجود ترمینال، زنگ هشدار را به‌عنوان بخشی از اعلان گذرواژه به صدا درمی‌آورد. -b, --background اجرای دستور داده‌شده در پس‌زمینه. استفاده از کنترل وظایف پوسته (job control) برای مدیریت فرآیندهای پس‌زمینه‌ای که توسط sudo-rs آغاز شده‌اند امکان‌پذیر نیست. بیشتر دستورهای تعاملی در حالت پس‌زمینه به درستی کار نخواهند کرد. -D directory, --chdir=directory اجرای دستور در دایرکتوری مشخص‌شده به‌جای دایرکتوری کاری فعلی. اگر کاربر مجوز تعیین دایرکتوری کاری را نداشته باشد، خط‌مشی امنیتی ممکن است خطایی را برگرداند. -g group, --group=group استفاده از این گروه به‌عنوان گروه اصلی، به‌جای گروه اصلی مشخص‌شده در پایگاه‌داده گذرواژه برای کاربر هدف. -h, --help نمایش پیام راهنما. -i, --login اجرای پوسته‌ای که در مدخل پایگاه‌داده گذرواژه کاربر هدف مشخص شده است به‌عنوان یک پوسته ورود (login shell). این بدان معناست که فایل‌های منابع مختص ورود مانند .profile، .bash_profile یا .login توسط پوسته خوانده خواهند شد. اگر یک دستور مشخص شده باشد، با استفاده از گزینه -c به پوسته فرستاده می‌شود. -K, --remove-timestamp حذف تمام رکوردهای نشست ذخیره‌شده در حافظه نهان برای کاربر، صرف‌نظر از مکانی که دستور در آن اجرا شده است. دفعه بعد که sudo-rs اجرا شود، در صورتی که خط‌مشی ایجاب کند، احراز هویت انجام خواهد شد. برای اجرای این دستور نیازی به گذرواژه نیست. -k, --reset-timestamp هنگامی که بدون دستور استفاده شود، رکورد نشست کاربر برای نشست جاری را باطل می‌کند. دفعه بعد که sudo-rs اجرا شود، در صورتی که خط‌مشی ایجاب کند، احراز هویت انجام خواهد شد. هنگامی که در ترکیب با یک دستور یا گزینه‌ای که ممکن است به گذرواژه نیاز داشته باشد استفاده شود، این گزینه باعث می‌شود sudo-rs رکورد نشست کاربر را نادیده بگیرد. در نتیجه، اگر خط‌مشی ایجاب کند، احراز هویت انجام خواهد شد. هنگامی که همراه با یک دستور استفاده شود، هیچ‌گونه ابطالی در رکوردهای نشست موجود رخ نخواهد داد. -n, --non-interactive جلوگیری از درخواست هرگونه ورودی از کاربر. اگر برای اجرای دستور به ورودی نیاز باشد، sudo-rs پیامی مبنی بر خطا نمایش داده و خارج می‌شود. -p, --prompt=prompt استفاده از اعلان احراز هویت سفارشی همراه با توالی‌های گریز اختیاری. توالی‌های گریز درصدی (`%') زیر پشتیبانی می‌شوند: %H به نام میزبان محلی بسط می‌یابد %h به نام میزبان محلی بدون نام دامنه بسط می‌یابد %p به نام کاربری که گذرواژه‌اش درخواست شده است بسط می‌یابد (از فلگ‌های rootpw و targetpw پیروی می‌کند) %U به نام ورود کاربری که دستور با هویت او اجرا می‌شود بسط می‌یابد (به‌طور پیش‌فرض root است مگر اینکه گزینه -u نیز مشخص شده باشد) %u به نام ورود کاربر فراخواننده بسط می‌یابد %% دو نویسه متوالی ‘%’ به یک نویسه ‘%’ فشرده می‌شوند اعلان سفارشی جایگزین اعلان پیش‌فرض یا اعلان مشخص‌شده توسط متغیر محیطی SUDO_PROMPT خواهد شد. هیچ اعلانی اعلان ارائه‌شده توسط PAM را متوقف نمی‌کند، مگر اینکه اعلان درخواست‌شده خالی باشد (""). -S, --stdin خواندن از ورودی استاندارد به‌جای استفاده از دستگاه ترمینال. -s, --shell اجرای پوسته‌ای که توسط متغیر محیطی SHELL مشخص شده است. اگر هیچ پوسته‌ای مشخص نشده باشد، پوسته موجود در مدخل پایگاه‌داده گذرواژه کاربر استفاده خواهد شد. اگر یک دستور مشخص شده باشد، با استفاده از گزینه -c به پوسته فرستاده می‌شود. --preserve-env=list به خط‌مشی امنیتی نشان می‌دهد که کاربر می‌خواهد فهرست جداشده با کاما از متغیرهای محیطی را به متغیرهای حفظ‌شده از محیط کاربر اضافه کند. در صورتی که کاربر مجوزی برای حفظ متغیرهای محیط نداشته باشد، خط‌مشی امنیتی ممکن است خطایی را برگرداند. این گزینه می‌تواند چندین بار مشخص شود. -e, --edit, sudoedit ویرایش یک یا چند فایل به‌جای اجرای یک دستور. هنگام بررسی خط‌مشی امنیتی، به‌جای نام مسیر از رشته “sudoedit” استفاده می‌شود. اگر کاربر توسط خط‌مشی مجاز شناخته شود، مراحل زیر طی می‌شوند: 1. نسخه‌های موقتی از فایل‌های مورد نظر برای ویرایش ساخته شده و مالک آن‌ها کاربر فراخواننده قرار داده می‌شود. 2. ویرایشگر مشخص‌شده توسط خط‌مشی برای ویرایش فایل‌های موقت اجرا می‌شود. خط‌مشی sudoers از متغیرهای محیطی SUDO_EDITOR، VISUAL و EDITOR (به همین ترتیب) استفاده می‌کند. اگر هیچ‌کدام از متغیرهای SUDO_EDITOR، VISUAL یا EDITOR تنظیم نشده باشند، اولین برنامه فهرست‌شده در گزینه editor در sudoers(5) استفاده می‌شود. 3. در صورت اعمال تغییرات، محتوای فایل‌های موقت به فایل‌های اصلی بازگردانده شده و نسخه‌های موقت حذف می‌شوند. برای کمک به جلوگیری از ویرایش فایل‌های غیرمجاز، محدودیت‌های زیر اعمال می‌شوند (مگر اینکه کاربر root باشد): • پیوندهای نمادین نباید ویرایش شوند. • اگر هر یک از بخش‌های مسیر منتهی به فایل توسط کاربر فراخواننده قابل نوشتن باشد، فایل نباید ویرایش شود. • کاربران هرگز مجاز به ویرایش فایل‌های ویژه دستگاه (device special files) نیستند. اگر فایل مشخص‌شده وجود نداشته باشد، ایجاد خواهد شد. برخلاف اغلب دستورهای اجراشده توسط sudo، ویرایشگر با محیط بدون تغییر کاربر فراخواننده اجرا می‌شود. اگر فایل موقت پس از ویرایش خالی شود، قبل از نصب آن از کاربر تایید خواسته خواهد شد. -u user, --user=user اجرای دستور با عنوان کاربری دیگر به‌جز کاربر پیش‌فرض (root). -V, --version نمایش نسخه فعلی sudo-rs. -v, --validate به‌روزرسانی رکورد نشست برای نشست فعلی، و در صورت نیاز احراز هویت کاربر. -l, --list فهرست کردن اختیارات کاربر یا بررسی یک دستور خاص؛ برای قالب طولانی‌تر دوبار استفاده شود. -U, --other-user=user استفاده در حالت فهرست (list)، نمایش اختیارات برای کاربری دیگر. -- پایان گزینه‌های sudo-rs و شروع دستور را مشخص می‌کند. متغیرهای محیطی که باید برای دستور تنظیم شوند را می‌توان در خط فرمان به شکل VAR=value ارسال کرد. متغیرهای ارسال‌شده در خط فرمان تابع محدودیت‌های اعمال‌شده توسط خط‌مشی امنیتی هستند. متغیرهای ارسالی در خط فرمان مشمول همان محدودیت‌های متغیرهای محیطی عادی هستند، با یک استثنای مهم: اگر دستور مورد نظر برای اجرا دارای تگ SETENV باشد یا دستور مطابقت‌یافته ALL باشد، کاربر می‌تواند متغیرهایی را تنظیم کند که در غیر این صورت ممنوع بودند. برای اطلاعات بیشتر به sudoers(5) مراجعه کنید. همچنین ببینید (SEE ALSO) su(1), sudoers(5), visudo(8) sudo-rs 0.2.15 SUDO(8)