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

شرط 1: مالک پشتیبانی‌شده می‌تواند بدون sudo این کار را انجام دهد

در بیشتر میزکارهای Linux، مدیر شبکه از قبل مالک اتصال‌های VPN است و مجوز آن از polkit می‌گذرد نه از sudo. کاربری که اجازه دارد اتصالی را بالا بیاورد می‌تواند این کار را از خط فرمان و بدون هیچ قاعده root انجام دهد. پیش از فرض اینکه دکمه به امتیاز نیاز دارد، بررسی کنید مدیر چه چیزی را مجاز می‌کند. اگر پاسخ بله است، تغییر sudoers مشکلی را حل می‌کند که وجود ندارد.

nmcli connection show
nmcli connection up "Work VPN"

اگر مدیر امتناع کرد، دلیل را بخوانید: قاعده polkit گمشده، اتصالی که مالک آن کاربر دیگری است یا نمایه‌ای که جایی ذخیره شده که کاربر نمی‌تواند آن را بخواند. هر یک از این‌ها راه‌حل پشتیبانی‌شده‌ای دارد که از قاعده sudo محدودتر است. ارتقای امتیاز آخرین چاره است، نه اولین.

شرط 2: قاعده یک فایل اجرایی و آرگومان‌هایش را نام می‌برد

اگر sudo واقعاً لازم است، قاعده باید فرمان دقیق و در صورت امکان آرگومان‌هایی را که می‌تواند استفاده کند نام ببرد. قاعده‌ای که به کاربر اجازه می‌دهد یک اسکریپت پوششی اجرا کند، تنها به اندازه مجوزهای همان اسکریپت امن است، زیرا کاربر می‌تواند آنچه root اجرا می‌کند را ویرایش کند. قاعده‌ای با نویسه عام پس از فرمان همان مشکل در شکل کوتاه‌تر است.

sudo -l -U alice
ls -l /usr/local/sbin/vpn-up

هر مسیر در زنجیره فرمان را بررسی کنید: فایل دودویی، اسکریپتی که فراخوانی می‌کند، فایل پیکربندی که می‌خواند و هر پوشه‌ای در میان. اگر هر یک از آن‌ها برای کاربر قابل نوشتن باشد، قاعده محدود در عمل root بی‌قید است. آرگومان‌ها هم مهم‌اند، زیرا فرمانی که مسیر پیکربندی می‌پذیرد می‌تواند به فایلی نشانه گرفته شود که کاربر کنترل می‌کند. قاعده را برای عملیات بنویسید، نه برای دکمه.

اگر فرمان برای کار کردن به فایلی نیاز دارد که کاربر کنترل می‌کند، توقف کنید. آن‌گاه طراحی غلط است و هیچ نحوی از sudoers آن را ایمن نخواهد کرد.

شرط 3: کل سیاست تجزیه می‌شود، نه فقط خط شما

با ویرایشگری اعتبارسنجی کنید که فایل را قفل می‌کند و نحو را بررسی می‌کند، و سیاست مونتاژشده را اعتبارسنجی کنید نه یک قطعه. فایلی که به‌تنهایی تجزیه می‌شود باز هم می‌تواند ترتیب درج را بشکند یا قاعده‌ای را طوری تکرار کند که رفتار تغییر کند.راهنمای visudo هم ویرایشگر قفل‌کننده و هم حالت فقط‌بررسی استفاده‌شده در اینجا را مستند می‌کند.

sudo visudo -c
sudo visudo -cf /etc/sudoers.d/vpn-launcher

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

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

بازیابی: نشستی را نگه دارید که هنوز کار می‌کند

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

sudo -n true
id

جایگزین‌هایی مانند pkexec به نصب و سیاست خودشان وابسته‌اند، پس درخواست دوم root تضمین‌شده نیستند. مجوز محلی را از ارائه راز VPN هم جدا نگه دارید: قاعده sudo نمی‌تواند یک عامل راز غایب را باز کند و MFA دروازه را برآورده نمی‌کند. پس از اصلاح، حساب عادی را فقط در حال انجام عملیات موردنظر آزمایش کنید، سپس از کنترل‌های معمول مدیر استفاده کنید.

تصمیم زمانی پایان می‌یابد که بتوانید بگویید کدام شرط sudo را توجیه کرد، قاعده چه چیزی را نام می‌برد، کل سیاست تجزیه می‌شود و اگر نمی‌شد چگونه بازیابی می‌کردید. راه‌انداز ممتازی که دسترسی مدیریتی را از شما می‌گیرد معامله بدی است و معمولاً قابل اجتناب است.

مقالات مرتبط