خط فرمان لینوکس

ترجمه فارسی LinuxCommand.org

خط فرمان لینوکس

ترجمه فارسی LinuxCommand.org

مجوزها

مجوزها

سیستم‌های یونیکس-مانند، از قبیل لینوکس با سایر سیستم‌های کامپیوتری تفاوت دارند برای آن که نه فقط چند وظیفه‌ای بلکه چند کاربری نیز هستند.

این دقیقاً به چه معنی است؟ به معنای آن است که در یک زمان بیش از یک کاربر می‌تواند مشغول کار با کامپیوتر باشد. در حالیکه کامپیوتر شما فقط یک صفحه کلید و یک نمایشگر دارد، باز هم می‌تواند توسط بیش از یک کاربر استفاده بشود. برای مثال، اگر کامپیوتر شما به شبکه یا اینترنت متصل باشد، کاربران راه دور می‌توانند از طریق ssh (پوسته امن) به سیستم داخل شده با کامپیوتر کار کنند. به راستی، کاربران راه دور می‌توانند برنامه‌های کاربردی گرافیکی را اجرا کنند و خروجی نمایش یافته روی یک کامپیوتر راه دور را داشته باشند. سیستم پنجره X این را پشتیبانی می‌کند.

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

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

این درس فرمانهای زیر را پوشش خواهد داد:

  • chmod - ویرایش حقوق دسترسی فایل
  • su - به طور موقت کاربر ارشد شدن
  • sudo - به طور موقت از حقوق کاربر ارشد برخوردار شدن
  • chown - تعویض مالکیت فایل
  • chgrp - تعویض مالکیت گروه فایل

مجوزهای فایل

در یک سیستم لینوکس، برای هر فایل و دایرکتوری حقوق دسترسی مالک فایل، اعضای گروه کاربران وابسته، و هر شخص دیگر تعیین می‌گردد. حقوقی که برای خواندن یک فایل، نوشتن فایل، و اجرای فایل (یعنی اجرا کردن فایل به عنوان یک برنامه) می‌توانند تعیین بشوند.

برای دیدن مجوزهای تنظیم شده برای یک فایل، می‌توانیم فرمان ls را به کار ببریم. به عنوان یک مثال، به bash نگاه خواهیم نمود، برنامه‌ای که در دایرکتوری ‎/bin‎ قرار دارد:

[me@linuxbox me]$ ls -l /bin/bash


-rwxr-xr-x 1 root root  316848 Feb 27  2000 /bin/bash

در اینجا می‌توانیم مشاهده کنیم:

  • فایل ‎/bin/bash‎ در مالکیت کاربر root است
  • کاربر ارشد دارای حق خواند، نوشتن، و اجرای این فایل است
  • فایل متعلق به گروه root است
  • اعضای گروه root نیز می‌توانند این فایل را بخوانند و اجرا کنند
  • هر شخص دیگری می‌تواند این فایل را بخواند و اجرا نماید

در نمایش ترسیمی پایین، مشاهده می‌کنیم که جزء نخست چطور تفسیر می‌گردد. این جزء متشکل از یک کاراکترِ نشان دهنده نوع فایل است، که با مجموعه کاراکترهای سه‌تایی دنبال می‌شود که مجوز خواندن، نوشتن، و اجرای فایل برای مالک، گروه، و سایرین را بیان می‌کنند.

permissions diagram

chmod

فرمان chmod برای تعویض مجوزهای یک فایل یا دایرکتوری به کار می‌رود. برای انجام این کار، شما تنظیم مجوزهای مورد نظر و فایل یا فایلهایی را که مایل به ویرایش هستید مشخص می‌کنید. دو روش برای مشخص نمودن مجوزها وجود دارد. در این درس ما بر یکی از آنها که روش نشانه‌گذاری اُکتال نامیده می‌شود، تمرکز خواهیم کرد.

تصور نمودن تنظیم مجوزها به عنوان گروه‌هایی از بیت‌ها (روشی است که کامپیوتر در باره آنها فکر می‌کند) آسان است. این هم چگونگی کار کرد آن است:

rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx --- --- = 111 000 000

 ... و به همین ترتیب

rwx = 111 in binary = 7
rw- = 110 in binary = 6
r-x = 101 in binary = 5
r-- = 100 in binary = 4

اکنون، اگر هر مجموعه سه‌تایی مجوزها (مالک، گروه، و سایرین) را به صورت یک رقم منفرد نمایش بدهید، شما دارای یک روش نسبتاً راحت بیان کردن تنظیمات‌ مجوزها هستید. برای مثال، اگر می‌خواستیم some_file را برای داشتن مجوز خواندن و نوشتنِ مالک تنظیم کنیم، اما می‌خواستیم فایل را از سایرین پوشیده نگاه داریم، به این صورت می‌نوشتیم:

[me@linuxbox me]$ chmod 600 some_file

در اینجا جدولی از اعدادی که تمام تنظیم‌های رایج را پوشش می‌دهد آمده است. آنها که با «7» شروع می‌شوند برای برنامه‌ها به کار می‌روند (چون اجرا را فعال می‌کنند) و بقیه برای سایر انواع فایل هستند.

مقدار
معنی

777

‎(rwxrwxrwx)‎ بدون هرگونه محدودیت مجوز. هر شخصی می‌تواند هر کاری انجام بدهد. به طور کلی تنظیم مطلوبی نیست.

755

‎(rwxr-xr-x)‎ مالک فایل می‌تواند فایل را بخواند، بنویسد، و اجرا کند. تمام افراد دیگر می‌توانند فایل را اجرا کنند. این تنظیم برای برنامه‌هایی که توسط تمام کاربران استفاده می‌شوند رایج است.

700

‎(rwx------)‎ مالک فایل می‌تواند فایل را بخواند، بنویسد، و اجرا نماید. هیچ فرد دیگری هیچ حقی ندارد. این تنظیم برای برنامه‌هایی سودمند است که تنها مالک می‌تواند به کار ببرد و باید پوشیده از سایرین نگهداری بشوند.

666

‎(rw-rw-rw-)‎ تمام کاربران می‌توانند فایل را بخوانند و بنویسند.

644

‎(rw-r--r--)‎ مالک می‌تواند فایل را بخواند و بنویسد، درحالیکه تمام کاربران دیگر فقط می‌توانند فایل را بخوانند. تنظیم رایج برای فایلهای داده‌ها که هر شخصی بنواند بخواند، اما فقط مالک بتواند تغییر بدهد.

600

‎(rw-------)‎ مالک می‌تواند فایل را بخواند و بنویسد. تمام اشخاص دیگر فاقد حقوق هستند. یک تنظیم رایج برای فایلهای داده‌ها که مالک می‌خواهد محرمانه نگاه دارد.

مجوزهای دایرکتوری

فرمان chmod برای کنترل مجوزهای دسترسی به دایرکتوری‌ها نیز می‌تواند به کار برود. دوباره، ما می‌توانیم از نشانه‌گذاری اُکتال برای تنظیم مجوزها استفاده کنیم، اما معنی صفات r، ‏w، و x متفاوت است:

  • r - درصورتیکه صفت x نیز تنظیم باشد، اجازه می‌دهد محتویات دایرکتوری لیست بشود.
  • w - در صورتیکه صفت x نیز تنظیم باشد اجازه می‌دهد فایلها در داخل دایرکتوری ایجاد بشوند، حذف گردند، یا تغییر نام داده شوند.
  • x - وارد شدن به دایرکتوری (یعنی ‎cd dir‎) را مجاز می‌سازد.

این هم برخی تنظیمات متداول برای دایرکتوری‌ها:

مقدار
معنی

777

‎(rwxrwxrwx)‎ بدون محدودیت مجوز. هر شخص می‌تواند فایلها را لیست کند، فایل‌های جدید در دایرکتوری ایجاد نماید و فایلها را از دایرکتوری حذف کند. به طور کلی تنظیم مناسبی نیست.

755

‎(rwxr-xr-x)‎ مالک دایرکتوری دسترسی کامل دارد. تمام افراد دیگر می‌توانند فهرست فایلها را ببینند، اما نه می‌توانند فایل ایجاد کنند نه حذف کنند. این تنظیم برای دایرکتوری‌هایی که شما مایل هستید با کاربران دیگر به اشتراک بگذارید متداول است.

700

‎(rwx------)‎ مالک دایرکتوری دسترسی کامل دارد. هیچ شخص دیگری حقوقی ندارد. این تنظیم برای دایرکتوری‌هایی که فقط مالک می‌تواند استفاده کند و باید از سایرین پوشیده نگاه داشته شود مناسب است.

کاربر ارشد شدن برای یک مدت کوتاه

کاربر ارشد شدن، اغلب برای انجام وظایف مدیریتی مهم سیستم لازم است، اما به طوریکه به شما اخطار شده است، شما نباید به عنوان کاربر ارشد متصل به سیستم بمانید. در اکثر توزیع‌ها، برنامه‌ای وجود دارد که می‌تواند دسترسی به مزایای کاربر ارشد را به طور موقت به شما بدهد. این برنامه su نامیده می‌شود ‎(short for substitute user)‎ و در چنان موقعیت‌هایی که نیاز است شما برای انجام وظایف کوچکی کاربر ارشد باشید می‌تواند به کار برود. برای کاربر ارشد شدن، به سادگی فرمان su را تایپ کنید. آمادگی پذیرفتن کلمه عبور کاربر ارشد به شما اعلام می‌شود:

[me@linuxbox me]$ su
Password:
[root@linuxbox me]#

پس از اجرای فرمان su، شما یک نشست پوسته جدید به عنوان کاربر ارشد خواهید داشت. برای خروج از نشست کاربر ارشد، exit را تایپ کنید و شما به نشست قبلی‌تان باز خواهید گشت.

در برخی توزیع‌ها، به طور برجسته در Ubuntu، یک روش جایگزین به کار می‌رود. به جای استفاده از su، این سیستم‌ها فرمان sudo را به کار می‌گیرند. با فرمان sudo، بر اساس نیاز، به یک یا چند کاربر مزایای کاربر ارشد واگذار می‌شود. برای اجرای یک فرمان به عنوان کاربر ارشد، به سادگی فرمان sudo بر فرمان مورد نظر مقدم می‌گردد. بعد از اینکه فرمان وارد شد، اعلان ورود کلمه عبور کاربر به جای کاربر ارشد نمایش داده می‌شود:

[me@linuxbox me]$ sudo some_command
Password:
[me@linuxbox me]$

تغییر مالکیت فایل

شما می‌توانید مالک یک فایل را به وسیله فرمان chown تغییر بدهید. اکنون یک مثال: فرض کنید من می‌خواستم مالک some_file را از me به you تغییر بدهم. به این شکل می‌توانستم:

[me@linuxbox me]$ su
Password:
[root@linuxbox me]# chown you some_file
[root@linuxbox me]# exit
[me@linuxbox me]$

توجه کنید که به منظور تغییر مالک یک فایل، شما باید کاربر ارشد باشید. برای انجام این کار، مثال ما فرمان su را به کار گرفت، سپس chown را اجرا کردیم، و سرانجام برای برگشت به نشست قبلی exit را تایپ نمودیم.

chown برای دایرکتوری‌ها به همان طریق کار می‌کند که در مورد فایلها عمل می‌کند.

تغییر مالکیت گروه

مالکیت گروه یک فایل یا دایرکتوری می‌تواند با chgrp تغییر داده شود. این فرمان به این شکل به کار می‌رود:

[me@linuxbox me]$ chgrp new_group some_file

در مثال بالا، ما مالکیت گروه فایل some_file را از گروه قبلی‌اش به new_group تغییر دادیم. برای انجام یک chgrp شما باید مالک فایل یا دایرکتوری باشید.