یکبار خودم را با یک فرمان ساده که اشتباه تایپ کرده بودم از فایلهایم قفل کردم. این اولین باری بود که نصب لینوکسام بهصبحغیرقابلاستفاده شد و دلیل آن عدم درک من از مجوزها بود. در حینی که به ترمینال نگاه میکردم، احساس میکردم مهمان در سیستم خودم هستم. آن لحظه به من آموخت که در لینوکس، کنترل به دست میآید نه داده میشود و باید هزینهٔ خودساختگی استفاده از لینوکس را بپردازم.
من یک بار به خاطر یک فرمان اشتباه ساده خودم را از دسترسی به فایلهایم قفل کردم. این اولین باری بود که نصب لینوکس من غیرقابل استفاده شد، و دلیل آن عدم درک مجوزها بود. وقتی به ترمینال نگاه میکردم، احساس میکردم مهمان سیستم خودم هستم. آن لحظه به من آموخت که در لینوکس، کنترل با کسب به دست میآید نه بهصورت دادهشده، و من باید قیمت DIY استفاده از لینوکس را بپردازم.
هنگامی که تسلط پیدا کنید بر اینکه لینوکس فایلها را چگونه مدیریت میکند — چه کسی میتواند بخواند، بنویسد یا اجرا کند — تبدیل به یک مدیر واقعی لینوکس میشوید. من چندین فرمان مرتبط با مجوزهای لینوکس را بهخوبی آموختهام و اینها بهترین فرمانهای ترمینال هستند که به شما توصیه میکنم.
chmod
کنترل اینکه چه کسی میتواند فایلها را بخواند، بنویسد یا اجرا کند
بعد از اینکه فهمیدم چرا یک اسکریپت خاص اجرا نمیشود، شروع به استفاده بیشتر از فرمان «chmod» کردم. همهٔ فایلهای لینوکس یک سطح مجوز دارند: خواندن (r)، نوشتن (w) و اجرا (x). اگر فرمان chmod +x را بههمراه نام اسکریپت اجرا کنید، سیستم فایل را همچون یک برنامه اجرا میکند.
chmod همچنین امکان تغییر مجوزها بهصورت عددی را میدهد. chmod 755 filename دسترسی کامل (rwx) را به مالک میدهد و برای دیگران فقط خواندن و اجرا (r-x) فعال است. پس از دریافت اولین پیام «Permission denied»، این فرمان ممکن است به یک عادت دستورزی تبدیل شود.
من هنگام تنظیم اسکریپتها در یک پوشه پروژه از فرمان chmod -R 755 folder استفاده میکنم. اما باید در مورد پرچم -R محتاط باشید، زیرا تغییر مجوز را بهصورت بازگشتی برای تمام فایلها و دایرکتوریهای درخت اعمال میکند. همچنین، اعمال بازگشتی 755 میتواند بهطور ناخواسته بیتهای اجرا را روی فایلهای معمولی فعال کند.
chown
مالکیت فایلها را مانند یک مدیر بهدست آورید

«chown» فرمانی است که وقتی فایلها را بین دیسکها کپی میکنم و پس از آن نمیتوانم به آنها دسترسی پیدا کنم، نجاتم میدهد. این فرمان بهصورت مستقیم دسترسی را با تغییر مالکیت یک فایل یا پوشه تحت تأثیر قرار میدهد. قالب پایه به شکل زیر است: sudo chown user:group filename.
بعد از انتقال دادههای حیاتی سیستم یا بازگردانی یک بکاپ به این فرمان نیاز خواهید داشت. برای مثال، وقتی نیاز دارم وبسرور (Apache) من یک پوشه را بخواند، از فرمان sudo chown -R www-data:www-data /path/to/project استفاده میکنم که در آن www-data نام کاربری و گروه اختصاصی برای وبسرور Apache است.
نصیح من این است که با احتیاط از آن استفاده کنید، بهویژه اگر پرچم بازگشتی را به کار میبرید. تغییر مالکیت به کاربر دیگری یا روت میتواند مانع از ویرایش فایلها توسط کاربر اصلی بدون sudo شود.
umask
تنظیم مجوزهای پیشفرض برای فایلهای جدید

در لینوکس، umask تعیین میکند که فایلها و دایرکتوریهای جدید چگونه دسترسیها را ارثبری میکنند. لینوکس از مقدار umask فعلی شما استفاده میکند تا مشخص کند کدام مجوزها از مجوز پایه حذف (پوشیده) شوند. فرمان umask به شما امکان میدهد این تنظیم را برای نشست جاری مشاهده یا تغییر دهید.
مقدار پیشفرض معمولی umask برابر ۰۰۲۲ است که دسترسی نوشتن را از کاربران «group» و «other» حذف میکند. میتوانید با نوشتن umask مقدار فعلی خود را ببینید و فرمانی مانند umask 0027 آن را برای نشست جاری تغییر دهد. این تنظیم فایلهای جدید را ایمنتر میکند و معمولاً دسترسی سایر کاربران یا افرادی که خارج از گروه شما هستند را مسدود میسازد.
ممکن است بخواهید یک umask سفارشی را در فایل پیکربندی خود (مانند .bashrc) تنظیم کنید تا یک پایهٔ حریم خصوصی مداوم ایجاد شود. استفاده از این تنظیم ساده امنیت را در محیطهای مشترک بهبود میبخشد و بهصورت خودکار پیشفرضهای ایمن را بر روی تمام اسکریپتها و لاگهای جدید شما اعمال میکند.
sudoers
اعطای یا محدود کردن امتیازات مدیر به‑صورت ایمن

ممکن است برخی استدلال کنند که تنها پس از ویرایش موفقیتآمیز فایل sudoers به یک مدیر واقعی لینوکس تبدیل میشوید. فایل /etc/sudoers شما تعیین میکند که چه کسی حق sudo دارد و چه فرمانهایی میتواند اجرا کند. بهعنوان قاعدهای، من همیشه آن را با sudo visudo ویرایش میکنم تا از خطاهای نحوی که ممکن است من را قفل کند، جلوگیری کنم.
در لینوکسمینت، اگر نیاز داشته باشم به کاربر دیگری حقوق مدیریتی بدهم، از فرمان sudo usermod -aG sudo username استفاده میکنم. این روش نسبت به ویرایش دستی یک فایل تمیزتر و ایمنتر است، حتی اگر برای تنظیمات پیشرفته نیاز به مجوزهای خاص فرمانها داشته باشید.
بهخاطر داشته باشید که برخی توزیعها از نامهای گروه متفاوتی بهجز sudo استفاده میکنند (مانند «wheel» در فدورا).
لینوکس مدل امنیتی محکمی دارد، بنابراین هنگام ویرایش فایل sudoers باید محتاط باشید. یک ورودی اشتباه میتواند دسترسی روت شما را حذف کند، اما در صورت استفاده صحیح، میتوانید وظایف مدیریتی خود را بهصورت خودکار و تمیز انجام دهید.
groups
مشاهدهٔ دایرههای دسترسی که به آنها تعلق دارید

گروهها در لینوکس تعیین میکنند که به چه چیزی دسترسی دارید و به شما میگویند در ساختار سلسلهمراتبی کجا قرار دارید. بهعنوان مثال، اگر فرمان groups afam را اجرا کنم، ممکن است خروجی afam sudo adm lp را بدهد که نشان میدهد من کاربری با امتیازهای مدیریتی هستم و به پرینترها دسترسی دارم.
اجرای فرمان sudo usermod -aG project afam میتواند تمام تفاوت را ایجاد کند اگر به یک پروژه جدید بپیوندم. این فرمان به من امکان میدهد اسکریپتها را اجرا کرده و فایلها را همراه با همکاران و بدون نیاز به sudo برای هر فرمان ویرایش کنم.
من هنگام پیکربندی داکر یا ماشینهای مجازی، بسیار از فرمان groups استفاده میکنم تا به کاربرم دسترسیهای لازم برای اجرای دیمون یا دسترسی به دستگاههای سختافزاری را بدهد. درک این فرمان باعث جریان کاری روانتر و کمتر شدن موانع ناشی از مجوزها میشود.
id
شناسایی خود برای سیستم

فرمان id به شما میگوید که در نگاه سیستم چه کسی هستید، که پیش از اصلاح مجوزها لازم است. اجرای سادهٔ فرمان id شناسهٔ کاربری شما (UID)، شناسهٔ گروه (GID) و فهرست تمام گروههایی که عضوشان هستید را نمایش میدهد. اگرچه مستقیماً نوع کاربری شما را نشان نمیدهد، UID شما میتواند نشان دهد که در چهار نوع اصلی حساب کاربری لینوکس که تحت آن قرار میگیرید، کدام دسته قرار میگیرید.
من هنگام نیاز به رفع اشکال دسترسیها به این فرمان متکی هستم. بنابراین اگر پوشهٔ اشتراکی خاصی باز نشود، ممکن است از id استفاده کنم تا ببینم آیا کاربرم با مالک یا گروه مطابقت دارد یا خیر، و تأیید کنم که آیا مشکل «Permission denied» مربوط به هویت است یا بهمجوزها.
من «id» را به همراه پرچمهای «-u» و «-g» ترکیب میکنم تا تصویری واضحتر از مالکیت فایلها به دست آورم. پرچم «-u» شناسهٔ عددی کاربرم را نشان میدهد و «-g» شناسهٔ گروهی من را. اگرچه id فرمانی جذاب نیست، شناخت هویتتان اغلب نیمی از حل مشکل است وقتی به مانعی برخورد میکنم.
از کاربر به مدیر: جایی که کنترل حقیقتاً آغاز میشود
من چند نفر را دیدهام که لینوکس را رها کرده و به ویندوز روی آوردهاند، و عدم درک مجوزهای لینوکس ممکن است به اصطکاکی که آنها را اینگونه رانده باشد، کمک کرده باشد. تمام فرمانهایی که به اشتراک گذاشتیم نشان میدهد سیستم شما را چگونه میبیند و چه کنترلهایی دارید. اینها در لینوکس مهم هستند چون بیش از آنچه فکر میکنید با خطاهای «Permission denied» مواجه میشوید.
اکنون میتوانید از احساس ترس نسبت به لینوکس دست بکشید و در اکوسیستمی که کنترل تقریباً مطلق را دوباره به دست شما میدهد، شکوفا شوید.