مجوز سطح دسترسی ها در لینوکس

مجوز دسترسی در لینوکس

فایل ها و فولدر ها در لینوکس دارای سطح دسترسی ها هستند. بدین معنی که چه کسانی اجازه چه کاری با فایل و فولدر ها داشته باشند. دستور “chmod” در لینوکس شما را قادر می سازد تا دسترسی به اسکریپت ها، دایرکتوری ها و فایل های سیستم خود را کنترل کنید.

این دستور برای تغییر مجوزهای فایل لینوکس استفاده می شود، که روشی پیچیده به نظر می رسد اما زمانی که عملکرد آن را درک کنید ساده است. قبل از بحث در مورد دستور chmod، اجازه دهید به اصول مجوز فایل لینوکس بپردازیم.

کاربر و گروه در لینوکس

در لینوکس ما کاربر و گروه داریم. کاربر یک user تکی است. گروه Group مجموعه ای از کاربران هستند. برای ساختن کاربر از دستور useradd استفاده میکنیم. با استفاده از “m-” فولدر خانه نیز برای کاربر ساخته میشود. این کاربر امکان ورود به سیستم را ندارد. توجه داشته باشید برای تمامی مراحل زیر باید ادمین سیستم باشید.

sudo useradd ario
# with home directory use bellow command
sudo useradd -m ario

برای اینکه کاربر اجازه ورود به سیستم و دارای پسورد باشد یک رمز عبور اختصاص میدهیم. Ario نام کاربری یوزری است که میخواهیم پسورد بدهیم. 

sudo passwd ario

یا با دستور زیر در حین ایجاد نام کاربری پسورد هم بدهیم و فولدر خانه هم ایجاد میشود.

sudo useradd -m ario -p PASSWORD

برای حذف یوزر

userdel ario

با دستور groupadd گروه میسازیم و با usermod کاربر را به گروه اختصاص میدهیم. اینجا یک گروه به نام group1 میسازیم و یوزر ario را در آن عضو میکنیم. 

sudo groupadd group1
sudo usermod -a -G group1 ario

برای مشاهده گروه از دستور grep یا members استفاده میکنیم

root@tv:/home# grep group1 /etc/group
group1:x:1006:ario

Or

sudo apt-get install members
root@tv:/home# members group1
ario

برای حدف یوزر از یک گروه از روش های زیر استفاده میکنیم. در اینجا ario از group1 حذف میشود.

sudo gpasswd -d ario group1
or in ubuntu
sudo deluser ario group1

برای حذف کامل گروه

groupdel group1

برای تخصیص کاربر و گروه به یک فولدر از دستور زیر chown استفاده میکنیم. در اینجا کاربر ario و گروه group1 به فولدر share تخصیص می یابد.

chown ario:group1 /home/share

تعیین مجوز دسترسی در لینوکس با chmod

مجوز دسترسی مرتبط به فایل/فولدر است. گروه و دسترسی به مجوز برای سه نوع کاربر اصلی وجود دارد: مالک فایل/فولدر که یک یوزر است، اعضای گروه و دیگران.

هر یک از این کلاس های کاربری دارای سه نوع مجوز کار کردن با فولدر و فایل هستند: مجوز خواندن، نوشتن و اجرا. دانستن مجوز به شما کمک می کند تا مشخص کنید کدام کاربران می توانند فایل را اجرا، بخوانند، یا اجازه نوشتن ( نوشتن، پاک کردن، ایجاد تغییرات در فایل) را داشته باشند.

نحوه بررسی مجوز دسترسی در لینوکس

“ls -l” یا “ll” برای بررسی مجوز فایل های موجود در سیستم شما استفاده می شود. برای مشاهده مجوز یک فایل، نام آن را به دستور “ls -l” اضافه کنید یا در فولدری که اسناد در آن هست دستور “ls -l” را اجرا کنید تا مجوز کلیه فولدر ها و فایل ها را ببینید.به عنوان مثال، ما دستور زیر را برای بررسی مجوزهای فایل “share” اجرا می کنیم.

نحوه بررسی مجوز فایل در لینوکس

اولین کاراکتر در خروجی نوع داکیومنت را مشخص می کند که در آن “–” یک “فایل” را نشان می دهد، و “d” نشان دهنده یک “دایرکتوری” است.  سپس، سه مجموعه شامل نه کاراکتر داریم، که در آن مجموعه سه کاراکتر اول مجوزهای مالک فایل را نشان می‌دهند، مجموعه کاراکترهای بعدی مجوزهای گروه را نشان می‌دهند، و مجموعه آخر نشان ‌دهنده مجوزهایی برای سایر کاربران است که در دو دسته اول در نظر گرفته نمی‌شوند.

علائم در سطح دسترسی

دستور chmod در لینوکس چیست؟

“chmod” مخفف “حالت تغییر” است که مجوز سطح دسترسی ها در لینوکس برای دایرکتوری ها، فایل ها و اسکریپت های سیستم شما را تغییر می دهد. دستور “chmod” حالت های خاصی دارد که مجوز اصلاح را تعیین می کند. این حالت ها با شکل عددی یا حروف نشان داده می شوند.

chmod [Options] [Filename]

هنگامی که از دستور chmod با فرم عددی استفاده می کنید، از دستور زیر پیروی می کند:

"0” represents “no permission”.
"1” represents “execute permission”.
"2” represents “write permission”.
"4” represents “read permission”.

برای استفاده از حروف فرمت زیر استفاده میشود.

“u” indicates file owner.
“g” indicates groups.
“o” indicates others.
“a” indicates all users as owner, group, and others (ugo).

علامت های زیر برای تخصیص یا حذف دسترسی ها به کار میرود.

“+”:  add specified permissions.
“–”:  remove specified permissions.
“=”:  exact file permission for any user.

مثال:

دسترسی کامل به یوزر، خواندن و اجرا به گروه و خواندن تنها به بقیه افراد را به فولدر share میدهیم. دو فرم عددی و حروف به شکل زیر است. در صورتی که بعد از chmod از R- استفاده کنیم، تنظیمات به زیر فولدر ها و فایل های share نیز اضافه میشود.

chmod 754 /home/share
chmod u=rwx,g=rx,o=r /home/share

میخواهیم به تمامی افراد و گروه ها، دسترسی خواندن را برای تمامی فایل های متنی اضافه کنیم.

chmod a+r *.txt

مثال حذف کلیه دسترسی ها از همه افراد و گروه ها، و دسترسی کامل به مالک. 

chmod 700 /home/share
chmod u=rwx,go= /home/share
chmod u=rwx,go=--- /home/share

سطح دسترسی ها برای کاربران متفاوت به فایل و فولدر در لینوکس

در ادامه سطح دسترسی ها در لینوکس ، همانطور که در آموزش chmod دیدیم، ما به یک فایل یا فولدر میتوانیم یک کاربر، یا گروهای از کاربران را با مجوز های مختلف نسبت بدهیم. حال اگر بخواهیم به یک فولدر تعدادی کاربر یا گروه متفاوت با دسترسی های مختلف بدهیم چه باید بکنیم؟ مثلا یوزر A فقط خواندن، یوزر B فقط نوشتن. یا یک گروه فقط خواندن، یک گروه فقط نوشتن و یک گروه دسترسی کامل و بعد کاربران را بین آنها تقسیم کنیم.

در اینجا از ACL استفاده میشود. ابندا آن را نصب میکنیم.

sudo apt-get install acl

اکنون میخواهیم کاربر user1 را به فولدر share با دسترسی کامل اضافه کنیم. ‘گزینه R تنظیمات را به subdirectory ها هم منتقل میکند.

setfacl -R -m u:user1:rwx /home/share

برای افزودن گروه به شکل زیر عمل میکنیم

setfacl -m g:group_read:r /home/share
setfacl -m g:group_read_write:rw /home/share
setfacl -m g:group_read_write_exe:rwx /home/share

برای مشاهده وضعیت مجوز ها

getfacl /home/share

برای حذف مجوز های یوزر و گروه

setfacl -x u:user1 /share
setfacl -x g:group_read_write_exe /share
پیمایش به بالا