دسترسی ها در Unix‌

در سیستم عامل های بر اساس Unix می تونیم دسترسی فایل ها و پوشه ها رو مشخص کنیم.مقدمهتعیین سطوح دسترسی فایل ها و پوشه ها در هر سیستم عاملی اهمیت داره. در سیستم عامل های بر اساس Unix مثل Linux می تونیم با دستور chmod سطوح دسترسی قشر های مختلف کاربری رو برای فایل ها و پوشه ها تعیین کنیم. این طوری می تونیم مطمئن بشیم که فایل های (یا پوشه ها) حساس فقط توسط کاربران دارای صلاحیت قابل دسترسی هستند. در این مقاله به بررسی مفصل دسترسی ها در Unix می پردازیم.مشاهده دسترسی هادر یونیکس، هر فایل یا پوشه یک رشته از دسترسی ها داره که برای راحت تر شدن کار تو این مقاله بهش «رشته دسترسی» میگیم. برای مشاهده رشته های دسترسی همه فایل ها یا پوشه های مسیر جاری می تونیم از دستور ls با آپشن l- استفاده کنیم.ls -lاگه بخایم رشته دسترسی یک فایل یا پوشه خاص رو مشاهده کنیم کافیه به دستور بالا اسم اون فایل یا پوشه رو اضافه کنیم. مثلا کد زیر رشته دسترسی فایل names.txt رو نشون میده:ls -l names.txtرشته دسترسیرشته های دسترسی یا با - شروع میشن یا با d. - (اسم این کاراکتر hyphen عه) نشون دهنده اینه که اون رشته دسترسی متعلق یه یک فایل عه و اگه با d شروع بشه یعنی اون رشته دسترسی متعلق به یک پوشه (directory) هست. برای درک رشته های دسترسی باید سطوح دسترسی در Unix رو بلد باشیم.drwxrwxr-x # directory -rwxrwxrwx # Fileسطوح دسترسی ۳ تا سطح دسترسی در Unix داریم که برای هر کدوم یک حرف از الفبای انگلیسی به اختصار در نظر گرفته میشه (رمز rwx رو یادت باشه):read (r)write (w)execute (x)همون طوری که از اسم این ۳ سطح دسترسی مشخصه read به معنای داشتن اجازه برای خوندن محتویات فایل یا پوشه، write برای دستکاری کردن و execute برای اجرا کردنه. پس برای مثال در رشته های دسترسی بالا حرف r نشان دهنده اینه که اجازه read داده شده. ولی به کی؟!دسترسی های بالا می تونن به مالک فایل (owner) که یک کاربره (user)، یا گروه فایل (group) یا بقیه (other) اختصاص داده بشن. به بقیه world هم میگن. برای هر کدوم از این ۳ تا یک حرف اختصاری وجود داره (رمز ugo رو یادت باشه):owner (u)group (g)other (o)حالا با توجه به ۳ سطح دسترسی و ۳ قشری که میشه بهشون دسترسی ها رو داد می تونیم رشته دسترسی رو تفسیر کنیم. مثلا رشته دسترسی زیر رو در نظر بگیر:-rw-r--r--اول از همه با توجه به این که رشته دسترسی با hyphen شروع شده متوجه میشیم که این رشته دسترسی به یک فایل تعلق داره. بعد از اون سطح دسترسی رو داریم که به ترتیب دسترسی های مالک فایل (user)، گروه فایل (group) و بقیه (other) است. پس رشته دسترسی بالا این طوری تفسیر میشه:user: read + writegroup: readother (world): readبه عبارت دیگه، رشته دسترسی بالا اجازه خواندن و نوشتن رو به کاربر مالک فایل میده، اجازه خواندن رو به گروهی که فایل بهش تعلق داره میده و اجازه خواندن رو به بقیه اقشار (همون world) میده. تغییر دسترسی هاحالا که تونستیم رشته های دسترسی رو درک کنیم به این جا میرسیم که چطوری سطوح دسترسی قشر های مختلف رو عوض کنیم. این کار با دستور chmod انجام میشه که فرمول کلیش این طوریه:chmod [changes] [filename] برای کار کردن با دستور chmod باید تغییراتی که مد نظرمون هست و اسم فایل (یا پوشه) ای که میخایم تغییرات روش اعمال بشه رو داشته باشیم. تغییرات مد نظرمون باید با فرمت خاصی نگارش بشن. به این طریق که اول اسم قشری که میخایم دسترسی اش رو عوض کنیم (یکی از ۳ حالت u, g, o)، سپس عملگر نوع تغییر (+ برای افزودن دسترسی، - برای حذف دسترسی و = برای مشخص کردن دسترسی) و در نهایت سطح دسترسی. بذار با مثال بریم جلو.مثال ۱: افزودن دسترسی x به مالک (u) فایل برای فایل calc.shchmod u+x calc.shمثال ۲: کم کردن دسترسی w از گروه فایل برای فایل calc.shchmod g-w calc.shمثال ۳: مشخص کردن دسترسی world برای فایل calc.shchmod o=r calc.shمثال ۴: مشخص کردن یک جای سطوح دسترسی هر ۳ قشر برای فایل calc.shchmod u=rwx,g=rw,o=r calc.shعدد دسترسیموقع کار کردن با دستور chmod علاوه بر علائم دسترسی (rwx) میشه از اعداد دسترسی هم استفاده کرد. این طوری هم سریع تر و هم راحت تر به هدف مون میرسیم. هر سطح دسترسی یک عدد داره:read (4)write (2)execute (1)no permission (0)با جمع کردن مقادیر این اعداد می تونیم دسترسی های یک قشر رو مشخص کنیم. مثلا عدد ۷ که حاصل جمع ۴ و ۲ و ۱ عه یعنی همه دسترسی ها. از اون جایی که ما با ۳ قشر مختلف سر و کار داریم (ugo) پس باید یک عدد ۳ رقمی درست کنیم که صدگان اش نشان دهنده دسترسی های مالک فایل، دهگانش نشان دهنده دسترسی های گروه فایل و یکانش نشان دهنده دسترسی های world عه. بذار با مثال بریم جلو.مثال ۱: دادن همه دسترسی ها به همه قشر ها برای فایل calc.shchmod 777 calc.shمثال ۲: دادن هر ۳ نوع دسترسی به مالک فایل و فقط read به دو قشر دیگر برای فایل calc.sh:chmod 744 clalc.shمثال ۳: دادن هر ۳ نوع دسترسی به مالک فایل و هیچ نوع دسترسی به ۲ قشر دیگر برای فایل calc.sh:chmod 700 calc.shتغییر مالک فایلجدا از تغییر سطح دسترسی فایل ها گاهی اوقات ممکنه لازم باشه که مالک فایل ها رو عوض کنیم. برای عوض کردن مالک یک فایل باید وارد محیط super user بشیم که با دستور su انجام میشه. بعدش از دستور chown استفاده میکنیم تا مالک فایل رو عوض کنیم که فرمول کلیش این طوریه:chown username filenameبه جای username باید اسم کاربری رو بذاریم که قراره مالک جدید فایل بشه.تغییر گروه فایلاگه یادت باشه تو قشر هایی که می تونستن به فایل دسترسی داشته باشن یک group هم بود که با g نشونش میدادیم. برای عوض کردن مالک یک فایل باید وارد محیط super user بشیم که با دستور su انجام میشه. بعدش برای عوض کردن گروهی که فایل بهش تعلق داره از دستور chgrp استفاده میکنیم که فرمول کلیش این طوریه:chgrp groupname filenameبه جای groupname باید اسم گروهی که قراره گروه جدید فایل باشه رو بذاریم.نتیجه گیریوقتی که به صورت شخصی داریم از سیستم عامل های بر اساس Unix (مثل لینوکس) استفاده میکنیم ممکنه اهمیت سطوح دسترسی درک نشه ولی زمانی که بحث server میاد وسط و یا رایانه هایی در یک سازمان که چندین کاربر دارن ازش استفاده میکنن خیلی مهم میشه که مالک هر فایل مشخص باشه و یا این که سطح دسترسی برای هر قشر رو مشخص کنیم. در نهایت خیلی خوشحال میشم که نظرت رو درمورد مقاله به صورت یک کامنت بگی.