sudo، &، -b یا --daemon: چطور کلاینت OpenVPN را در پسزمینه اجرا کنیم
علامت & ترمینال را آزاد میکند، نه ورود را. sudo -b، --daemon و نمونهٔ سرویس را بر اساس اینکه چه کسی مالک فرایند است و چه کسی به پرسشها پاسخ میدهد مقایسه کنید.
در عبارت «آن را در پسزمینه اجرا کن» دو پرسش پنهان است. نخست اینکه آیا این کاربر اصلاً میتواند فرایندی با امتیاز بالا را آغاز کند؛ دوم اینکه آیا نشست میتواند بدون اینکه کسی در ترمینال تایپ کند ادامه یابد. علامت & در پوسته به هیچکدام پاسخ نمیدهد، و اسکریپتی که گذرواژهٔ sudo را در متغیری نگه میدارد به اولی بد پاسخ میدهد و دومی را دستنخورده میگذارد. آنها را جدا کنید تا گزینهها بهآسانی قابل مقایسه شوند.
سه گزینه را بر اساس مالکیت مقایسه کنید، نه راحتی.
سه راه برای ترک ترمینال، سه مالک متفاوت
افزودن & به یک فرمان از پوسته میخواهد آن را بهعنوان کار پسزمینه اجرا کند، و کار همچنان به همان پوسته تعلق دارد. sudo ممکن است حتی پیش از شروع برنامه پرسش کند، و OpenVPN ممکن است بعداً برای عبارت عبور کلید یا ورود بپرسد. اجرای فرمانی که انتظار ورودی دارد در پسزمینه فرایندی میسازد که منتظر ترمینالی است که کسی آن را نمیبیند. ترمینال آزاد میشود؛ تعامل نه.
این ارزانترین گزینه است و همانکه گیجکنندهترین شکست را دارد، چون پرسش در جایی ظاهر میشود که اپراتور آن را ترک کرده است.
sudo -b مدیریتکنندهٔ اعتبارنامه نیست
sudo -b فرمان را از دید خود sudo در پسزمینه اجرا میکند، که شبیه قابلیت گمشده بهنظر میرسد و نیست. بر پایهٔ راهنمای sudo، فرمانهای تعاملی عموماً در آن حالت بدرفتاری میکنند، و کنترل کارهای پوسته نمیتواند فرایندهایی را که میسازد مدیریت کند. فرایند را جابهجا میکند بدون اینکه راهی برای پاسخ به پرسشها به آن بدهد. هیچ چیز در آن عبارت عبور کلید خصوصی یا ورود به دروازه را فراهم نمیکند.
اگر اتصال به تعامل نیاز دارد، راهحل یک ترتیب احراز هویت غیرتعاملی پشتیبانیشده است، نه راهی دیگر برای آغاز همان پرسش.
--daemon برنامه را عوض میکند، نه ورود را
--daemon از خود OpenVPN میخواهد پس از آغازسازی جدا شود. راهنمای نسخهٔ 2.6 یادآوری میکند که تغییر مسیر syslog هنگام تجزیهٔ گزینه رخ میدهد، هرچند جداشدن دیرتر رخ میدهد، پس پیامها ممکن است زودتر از انتظار از ترمینال ناپدید شوند. سکوت پس از آن نقطه چیزی دربارهٔ تونل ثابت نمیکند. یک --log یا --log-append صریح اضافه کنید تا خروجی جایی برسد که بتوانید بخوانید.
حالت دیمن کنسول را نیز برای همیشه حذف میکند. کلید خصوصی محافظتشده در آن حالت به askpass نیاز دارد، و اعتبارنامههای واردشده از کنسول همراه با گزینههای کش میتوانند احراز هویت مجدد بعدی را بدون جایی برای پرسش رها کنند. پیش از فرض اینکه یک شروع پسزمینه نخستین نوسازی کلید را دوام میآورد، مدل احراز هویت را با نسخهٔ نصبشده بسنجید.
اعتبارسنجی sudo چه میخرد و چه نمیخرد
sudo -v اعتبارنامهٔ محلی کششده را اعتبارسنجی یا تازه میکند و در صورت نیاز سیاست، احراز هویت میکند. OpenVPN را آغاز نمیکند، با دروازه احراز هویت نمیکند و تضمین نمیکند که فرمان بعدی در اسکریپت مجاز باشد. sudo -n معنای مخالف را دارد: نپرس، شکست بخور. این خطای مجوز محلی را صریح میکند، که سودمند است، و چیزی دربارهٔ اینکه OpenVPN بعداً چه خواهد خواست نمیگوید.
هیچکدام دلیلی برای دادن فرمانهای بیگذرواژه به همه یا فرستادن گذرواژهٔ مدیر به اسکریپت نیست.
مالکی را ترجیح دهید که بتوان مشاهدهاش کرد
برای تونلی که مالک آن ماشین است، از نمونهٔ سرویسی استفاده کنید که توزیع پشتیبانی میکند. چنین مالکی شروع، توقف، وضعیت و گزارشها را فراهم میکند و از پایان نشست شما جان سالم بهدر میبرد. سرهمکردن اجرای پسزمینهٔ پوسته، دیمنسازی و حلقهٔ راهاندازی مجدد حول یکدیگر سه مالک برای یک تونل میسازد و پاسخ روشنی ندارد که کدام در حال اجراست.
هر چه را انتخاب کنید، منابعی را که تونل برای آن وجود دارد بررسی کنید. درخواست شروع موفق یک رویداد فرایند است، نه دلیل بر اتصال کاری.