مبانی تئوریک :
«مسئله ی دسترسی»، ریشه در سیستم عامل گنو/لینوکس و به طور مشخص «دسترسی ها در لینوکس» دارد. آنچه در اینجا مطرح می شود برای افرادی که تجربه ی زیادی در کار با این سیستم عامل ندارند ممکن است کمی نامانوس باشد ولی جای نگرانی نیست. سعی می کنیم این مفاهیم را به شکلی ساده و قابل فهم بیان کنیم.
در گنو/لینوکس مبنای همه چیز فایل است. هر فایل علاوه بر اینکه «مالک» دارد، مشخصه ای به نام «گروه مالک» نیز دارد و این موضوع در همه ی سیستم عامل های یونیکس-مبنا صادق است. پس هر «چیز» در دنیای لینوکس، یک «فایل» است که مالک و گروه مالکی دارد. با این دید، در برخورد با «چیزها» سه حالت برای شما (بعنوان یک کاربر) اتفاق می افتد: یا شما مالک آن «چیز» هستید، یا عضوی از گروهی که مالک آن «چیز» هستند یا هیچ کدام! اصطلاحا جزء «افراد متفرقه» هستید.. یکی از همان هایی که احتمالا مالک و اعضای گروه مالک به شما «دیگران» می گویند.
در سیستم تعیین دسترسی گنو/لینوکس، با فایل ها به همین شکل رفتار می شود. یعنی در دسترسی به فایل، کاربر در یکی از این سه دسته قرار می گیرد مالک (owner)، گروه مالک (owner group) و یا دیگران (others).
دسته بندی کاربران از دید یک فایل در لینوکس :
به نظر شما این سطح دسترسی کفایت می کند؟
نظر توسعه دهندگان همین بوده است. این سیستم تعیین سطح دسترسی لازم است ولی کافی نیست.
تصور کنید، شما مالک «چیزی» باشید. مثلا یک دفترچه یادداشت. ممکن است بخواهید علاوه بر خودتان گروه دوستانتان هم بتوانند آن را «بخوانند» و حتی در آن یادگاری «بنویسند» ولی دیگران فقط بتوانند آن را «بخوانند». یا اگر یادگاری های شما خیلی خودمانی باشد، ممکن است حتی نخواهید دیگران از وجود آن دفترچه اطلاعی داشته باشند.
در سیستم تعیین دسترسی نیز چیزی شبیه این مکانیزم وجود دارد. مالک فایل می تواند تعیین کند که هر یک از سه دسته افراد «مالک» (یعنی خودش)، «گروه مالک» (احتمالا دوستانش!) و «دیگران» بتوانند کدامیک از اعمال «خواندن»، «نوشتن» و یا «اجرا کردن» را بر روی فایل انجام دهند. مالک می تواند همه ی این دسترسی ها را با هم به یک دسته یا به همه ی دسته ها بدهد.
مجوزهای قابل اعمال بر روی فایل برای «مالک»، «گروه مالک» و «دیگران» :
به عنوان مثال، مالک فایل می تواند تعیین کند که خودش، هم بتواند فایل را بخواند، هم بر روی آن بنویسد و هم آن را اجرا کند. دوستانش فقط بتوانند فایل را بخوانند و بر روی آن بنویسند ولی نتوانند آن را اجرا کنند و دیگران فقط بتوانند فایل را بخوانند، نه چیزی بر روی آن بنویسند و نه بتوانند آن را اجرا کنند.
بسیار خب موافقید که این داده ها را (کمی؟) کاربردی کنیم؟
مبانی عملی :
دو دستور در گنو/لینوکس برای تعیین و تغییر این مجوزها وجود دارد :
دستور تغییر مالک/گروه مالک : chown
دستور تغییر دسترسی کاربران: chmod
اگر فایلی به نام test.txt داشته باشیم، با کمک دستور زیر در ترمینال می توانیم مجوزهای دسترسی و مالک آن را پیدا کنیم :
خروجی این دستور چیزی شبیه این خواهد بود :
خروجی دستور ls :
واضح است که در قسمت مربوط به «مالک» و «گروه مالک»، به ترتیب نام کاربری و گروه کاربری درج می شود. در قسمت مجوزها اوضاع شاید کمی پیچیده به نظر برسد ولی ببینید :
مجوزها در خروجی ls :
در گنو/لینوکس مجوزهای دسترسی با حروف مخفف دسترسی ها مشخص می شوند :
«خواندن»، معادل r
«نوشتن»، معادل w
«اجرا کردن»، معادل x
به این ترتیب، قسمت مجوزهای این خروجی اعلام می کند، مالک فایل test.txt می تواند هم فایل را بخواند و هم بر روی آن بنویسد؛ کاربرانی که عضو گروه مالکان هستند، فقط می توانند فایل را بخوانند و دیگران هم فقط می توانند فایل را بخوانند.
تغییر مالک فایل test.txt :
اگر فایلی به نام test.txt داشته باشیم، برای تغییر مالک آن به کاربر root می توانیم چنین بنویسیم :
خروجی را با دستور ls به شکلی که پیش تر مطرح شد، می توانید ببینید.
توجه کنید که برای اجرای این دستور می بایست یا کاربر root باشید یا اینکه عضوی از گروه مدیران سیستم باشید و این دستور را با sudo اجرا کنید.
برای عوض کردن مالک به root و گروه به video نیز می توانیم بنویسیم :
تغییر مجوزهای دسترسی :
برای تغییر مجوزهای دسترسی، باید از دستور chmod کمک بگیریم.
این دستور را در نظر بگیرید :
توجه کنید که اگر مالک فایل نباشید می بایست دستور را با sudo اجرا کنید.
در این دستور :
مجوزهای rwx (خواندن، نوشتن و اجرا) به مجوزهای قبلی مالک اضافه شده است. (قبل از آن ها علامت + آمده است)
مجوزهای rx (خواندن و اجرا) به مجوزهای قبلی گروه مالک اضافه (+) شده و مجوز w (نوشتن) از این گروه گرفته شده (قبل از آن علامت منها (-) آمده است)
مجوز w (نوشتن) به مجوزهای قبلی دیگران اضافه (+) شده است.
به بیان تصویری :
دستور chmod :
چند نکته :
می توانید مجوز را برای مالک یا گروه مالک یا دیگران تعریف کنید، نیازی نیست در تعیین مجوزها هر سه را با هم ذکر کنید.
فراموش نکنید که بین تعریف مجوزها برای مالک، گروه مالک و دیگران از کاراکتر ویرگول «,» استفاده کنید.
جمع بندی :
در این مقاله تلاش کردیم به بیانی ساده به بررسی سیستم تعیین دسترسی لینوکس بپردازیم. برای اینکه مقاله از حالت تئوری محض خارج شود، دو دستور chmod و chown را نیز مختصرا مطرح کردیم. متشکریم از اینکه این مقاله را تا اینجا خواندید، امیدوارم این مقاله مفید واقع شده باشد.
خسته نباشید!
«مسئله ی دسترسی»، ریشه در سیستم عامل گنو/لینوکس و به طور مشخص «دسترسی ها در لینوکس» دارد. آنچه در اینجا مطرح می شود برای افرادی که تجربه ی زیادی در کار با این سیستم عامل ندارند ممکن است کمی نامانوس باشد ولی جای نگرانی نیست. سعی می کنیم این مفاهیم را به شکلی ساده و قابل فهم بیان کنیم.
در گنو/لینوکس مبنای همه چیز فایل است. هر فایل علاوه بر اینکه «مالک» دارد، مشخصه ای به نام «گروه مالک» نیز دارد و این موضوع در همه ی سیستم عامل های یونیکس-مبنا صادق است. پس هر «چیز» در دنیای لینوکس، یک «فایل» است که مالک و گروه مالکی دارد. با این دید، در برخورد با «چیزها» سه حالت برای شما (بعنوان یک کاربر) اتفاق می افتد: یا شما مالک آن «چیز» هستید، یا عضوی از گروهی که مالک آن «چیز» هستند یا هیچ کدام! اصطلاحا جزء «افراد متفرقه» هستید.. یکی از همان هایی که احتمالا مالک و اعضای گروه مالک به شما «دیگران» می گویند.
در سیستم تعیین دسترسی گنو/لینوکس، با فایل ها به همین شکل رفتار می شود. یعنی در دسترسی به فایل، کاربر در یکی از این سه دسته قرار می گیرد مالک (owner)، گروه مالک (owner group) و یا دیگران (others).
دسته بندی کاربران از دید یک فایل در لینوکس :
به نظر شما این سطح دسترسی کفایت می کند؟
نظر توسعه دهندگان همین بوده است. این سیستم تعیین سطح دسترسی لازم است ولی کافی نیست.
تصور کنید، شما مالک «چیزی» باشید. مثلا یک دفترچه یادداشت. ممکن است بخواهید علاوه بر خودتان گروه دوستانتان هم بتوانند آن را «بخوانند» و حتی در آن یادگاری «بنویسند» ولی دیگران فقط بتوانند آن را «بخوانند». یا اگر یادگاری های شما خیلی خودمانی باشد، ممکن است حتی نخواهید دیگران از وجود آن دفترچه اطلاعی داشته باشند.
در سیستم تعیین دسترسی نیز چیزی شبیه این مکانیزم وجود دارد. مالک فایل می تواند تعیین کند که هر یک از سه دسته افراد «مالک» (یعنی خودش)، «گروه مالک» (احتمالا دوستانش!) و «دیگران» بتوانند کدامیک از اعمال «خواندن»، «نوشتن» و یا «اجرا کردن» را بر روی فایل انجام دهند. مالک می تواند همه ی این دسترسی ها را با هم به یک دسته یا به همه ی دسته ها بدهد.
مجوزهای قابل اعمال بر روی فایل برای «مالک»، «گروه مالک» و «دیگران» :
به عنوان مثال، مالک فایل می تواند تعیین کند که خودش، هم بتواند فایل را بخواند، هم بر روی آن بنویسد و هم آن را اجرا کند. دوستانش فقط بتوانند فایل را بخوانند و بر روی آن بنویسند ولی نتوانند آن را اجرا کنند و دیگران فقط بتوانند فایل را بخوانند، نه چیزی بر روی آن بنویسند و نه بتوانند آن را اجرا کنند.
بسیار خب موافقید که این داده ها را (کمی؟) کاربردی کنیم؟
مبانی عملی :
دو دستور در گنو/لینوکس برای تعیین و تغییر این مجوزها وجود دارد :
دستور تغییر مالک/گروه مالک : chown
دستور تغییر دسترسی کاربران: chmod
اگر فایلی به نام test.txt داشته باشیم، با کمک دستور زیر در ترمینال می توانیم مجوزهای دسترسی و مالک آن را پیدا کنیم :
کد PHP:
ls -l test.txt
خروجی دستور ls :
واضح است که در قسمت مربوط به «مالک» و «گروه مالک»، به ترتیب نام کاربری و گروه کاربری درج می شود. در قسمت مجوزها اوضاع شاید کمی پیچیده به نظر برسد ولی ببینید :
مجوزها در خروجی ls :
در گنو/لینوکس مجوزهای دسترسی با حروف مخفف دسترسی ها مشخص می شوند :
«خواندن»، معادل r
«نوشتن»، معادل w
«اجرا کردن»، معادل x
به این ترتیب، قسمت مجوزهای این خروجی اعلام می کند، مالک فایل test.txt می تواند هم فایل را بخواند و هم بر روی آن بنویسد؛ کاربرانی که عضو گروه مالکان هستند، فقط می توانند فایل را بخوانند و دیگران هم فقط می توانند فایل را بخوانند.
تغییر مالک فایل test.txt :
اگر فایلی به نام test.txt داشته باشیم، برای تغییر مالک آن به کاربر root می توانیم چنین بنویسیم :
کد PHP:
chown root test.txt
توجه کنید که برای اجرای این دستور می بایست یا کاربر root باشید یا اینکه عضوی از گروه مدیران سیستم باشید و این دستور را با sudo اجرا کنید.
برای عوض کردن مالک به root و گروه به video نیز می توانیم بنویسیم :
کد PHP:
chown root:video test.txt
برای تغییر مجوزهای دسترسی، باید از دستور chmod کمک بگیریم.
این دستور را در نظر بگیرید :
کد PHP:
chmod u+rwx,g+rx-w,o+w test.txt
در این دستور :
مجوزهای rwx (خواندن، نوشتن و اجرا) به مجوزهای قبلی مالک اضافه شده است. (قبل از آن ها علامت + آمده است)
مجوزهای rx (خواندن و اجرا) به مجوزهای قبلی گروه مالک اضافه (+) شده و مجوز w (نوشتن) از این گروه گرفته شده (قبل از آن علامت منها (-) آمده است)
مجوز w (نوشتن) به مجوزهای قبلی دیگران اضافه (+) شده است.
به بیان تصویری :
دستور chmod :
چند نکته :
می توانید مجوز را برای مالک یا گروه مالک یا دیگران تعریف کنید، نیازی نیست در تعیین مجوزها هر سه را با هم ذکر کنید.
فراموش نکنید که بین تعریف مجوزها برای مالک، گروه مالک و دیگران از کاراکتر ویرگول «,» استفاده کنید.
جمع بندی :
در این مقاله تلاش کردیم به بیانی ساده به بررسی سیستم تعیین دسترسی لینوکس بپردازیم. برای اینکه مقاله از حالت تئوری محض خارج شود، دو دستور chmod و chown را نیز مختصرا مطرح کردیم. متشکریم از اینکه این مقاله را تا اینجا خواندید، امیدوارم این مقاله مفید واقع شده باشد.
خسته نباشید!