فایل ها و فولدر ها در لینوکس دارای سطح دسترسی ها هستند. بدین معنی که چه کسانی اجازه چه کاری با فایل و فولدر ها داشته باشند. دستور “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