CH-J Server Managerمدیریت سرور از طریق SSH
منو
همهٔ راهنماها و مقاله‌ها ←

چگونه فایل‌های /etc را از طریق SFTP و sudo ویرایش کنیم

چرا SFTP در /etc با خطای مجوز روبه‌رو می‌شود و چگونه می‌توان فایل تنظیمات را بدون باز کردن دسترسی root به‌طور ایمن تغییر داد.

چرا SFTP پیام permission denied می‌دهد

SFTP با حسابی اجرا می‌شود که با آن وارد شده‌اید و معادلی برای sudo ندارد. بیشتر فایل‌های /etc متعلق به root هستند، بنابراین حساب عادی می‌تواند برخی از آن‌ها را بخواند اما نمی‌تواند در هیچ‌کدام بنویسد. این رفتار درست است و نباید با ضعیف کردن مجوزها آن را اصلاح کرد.

کارهایی که نباید انجام دهید

روی فایل تنظیمات chmod 777 اجرا نکنید، مالکیت فایل‌های /etc را به حساب خود تغییر ندهید و فقط برای یک ویرایش، ورود root با گذرواژه را فعال نکنید. برخی سرویس‌ها فایل‌هایی با مجوزهای بیش از حد باز را نمی‌پذیرند و هر یک از این تغییرات، حتی مدت‌ها پس از پایان ویرایش، امنیت سرور را کاهش می‌دهد.

از sudoedit در ترمینال استفاده کنید

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

sudoedit /etc/nginx/nginx.conf

یک نسخه بارگذاری کنید و سپس آن را در جای خود نصب کنید

اگر ویرایشگر محلی را ترجیح می‌دهید، فایل را در پوشهٔ خانگی خود بارگذاری کنید و با sudo در جای خود نصب کنید. ابتدا از نسخهٔ اصلی در محلی پشتیبان بگیرید که هیچ سازوکار درج فایل تنظیمات آن را نخواند. دستور install مالک و حالت مجوز را تنظیم می‌کند و در سیستم‌های دارای SELinux، دستور restorecon زمینهٔ درست را تعیین می‌کند. پیش از کپی کردن این مقادیر، مالک و حالت مجوز نسخهٔ اصلی را بررسی کنید، زیرا همهٔ فایل‌ها از root و 644 استفاده نمی‌کنند.

stat -c '%U %G %a' /etc/nginx/nginx.conf
sudo cp -a /etc/nginx/nginx.conf /root/nginx.conf.bak
sudo install -o root -g root -m 644 ~/nginx.conf.new /etc/nginx/nginx.conf
sudo restorecon -v /etc/nginx/nginx.conf

پیش از اعمال، اعتبارسنجی کنید

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

sudo nginx -t
sudo sshd -t
sudo visudo -cf /etc/sudoers.d/example

ویرایش با sudo در CH-J Server Manager

وقتی حساب SSH نمی‌تواند فایلی را بخواند، File Manager پیشنهاد می‌دهد آن را با sudo باز کنید و هشدار می‌دهد که ذخیره کردن به sudo نیاز خواهد داشت. هنگام ذخیره، داده‌ها به پوشهٔ موقت خصوصی حساب می‌روند و پس از بررسی، sudo آن‌ها را با حفظ مالک، مجوزها، ACL و زمینهٔ SELinux به محل مقصد منتقل می‌کند. گزینهٔ پشتیبان‌گیری، پیش از جایگزینی یک کپی از نسخهٔ اصلی ذخیره می‌کند. گذرواژه فقط به sudo روی سرور فرستاده می‌شود و روی دیسک یا در گزارش‌ها ذخیره نمی‌شود. اگر سیاست sudo به ترمینال نیاز داشته باشد (requiretty)، برنامه آن را دور نمی‌زند. برنامه محتوای فایل را اعتبارسنجی نمی‌کند، بنابراین بررسی سرویس را خودتان اجرا کنید.

مستندات مفصل

man: sudo / sudoedit ←

man: install ←

باز کردن قفل بیومتریک و امنیت ←