Click Here to Go HomePage index.php
مهمان   به  GNUIran.org  خوش آمدید یكشنبه، ۰۴ فروردین ۱۳۹۸ 
نکته ها و ترفند ها

امروز چندم ماه است؟ برای این که بدانید کافیست در خط فرمان تایپ کنید date و اگر به یک تقویم کامل تر نیاز دارید در کنسول خود تایپ کنید:

cal 2004

--

جستجو در سایت




جستجوی پیشرفته
جستجو در انجمن‌ها

پلاگین فایرفاکس

وضعیت کاربران سایت
مدیر
هیچیک از مدیران حاضر نیست
مدیر افتخاری
هیچ مدیر کمکی حاضر
ناظران
هیچ مدیر کمکی حاضر
اعضا:
جدیدترین:جدید امروز:0
جدیدترین:جدید دیروز:0
جدیدترین:مجموع:1040
جدیدترین:جدیدترین:
RezaJafary
اعضا:حاضر
اعضا:اعضا:0
مهمان‌ها:مهمان‌ها:1
مجموع:مجموع:1
کاربران حاضر
هیچ کاربر حاضری وجود ندارد

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

(4921 مجموع کلمات موجود در متن)
(11717 بار مطالعه شده است)  نسخه چاپی

نام مقاله : مجوزهای دسترسی برای فایل ها و دایرکتوری ها
نویسنده : نوید ٬ عباس


از آنجایی که لینوکس یک سیستم عامل چند کاربره یا Multiuser می باشد و در هر لحظه بیش از یک کاربر می توانند از سیستم استفاده کنند ، این نکته بسیار ضروری است که بتوانیم این کاربران را مدیریت و از لحاظ سطح امنیتی آنها را محدود کنیم تا در آینده دچار مشکلات امنیتی نشویم. برای درک مفهوم مجوزهای دسترسی ما در ابتدا به معرفی مفاهیم اصلی مانند کاربر و گروه و سپس به بررسی نحوه ی مدیریت کاربران خواهیم پرداخت.

I. کاربران در لینوکس
در لینوکس سه دسته ی مختلف از کاربران وجود دارند:
۱. کاربر ریشه یا root
۲. کاربر ساده
۳. کاربران سیستم

کاربر اصلی یا SuperUser با نام root شناخته می شود که بر تمام سیستم کنترل کامل داشته و بالاترین سطح دسترسی یک سیستم را دارا می باشد و قابل ذکر است که این کاربر با شناسه ی کاربری یا UserID به شماره ی 0 شناخته می شود.
کاربر ساده می تواند وارد سیستم شود و کارهای معمولی یک کاربر را انجام دهد. هر کاربر یک دایرکتوری به نام دایرکتوری خانگی یا HomeDirectory دارد که اغلب در home/ و با نام کاربری آن کاربر می باشد و نیز یک شل دارد که در اکثر مواقع bin/bash/ میباشد. این کاربران به منابع سیستم دسترسی ندارند به این معنی که نمی توانند تنظیمات کلی سیستم مثلا سرویس دهنده های وب را تغییر دهند (مگر آنکه کاربر ریشه این مجوز را برای آنها صادر کند). بنابراین این کاربران نمی توانند به سیستم آسیبی برسانند و یا فایل های سیستمی را پاک یا تغییر دهند. در لینوکس هر سیستمی علاوه بر یک کاربر ریشه حداقل یک کابر ساده نیز دارد تا کار های معمولی و حتی کارهای کاربر خانگی توسط این کاربر ساده انجام گیرد تا از آسیب دیدن سیستم جلوگیری شود. (این آسیب می تواند پاک شدن یک فایل سیستمی به دلیل نا آشنایی کاربر ساده باشد.)
کاربران سیستم هرگز Login نمی کنند. حساب های کاربری یا Account های این کاربران برای کارهای خاص استفاده می شود. این کاربران معمولا دایرکتوری خانگی نیز ندارند. نمونه ای از این کاربران ٬ کاربران ftp ، apache ،lp می باشند. کاربر ftp برای دسترسی بی نام (Anonymous) یا همان بدون نام کاربری و پسورد استفاده می شود یا کاربرapache معمولا برای مدیریت درخواست های HTTP استفاده می شود. (البته در برخی توزیع های لینوکس این کاربر nobody یا www-data می باشد.)

برای دیدن لیستی از کاربران موجود در سیستم (هر سه دسته ی بالا) می توانید فایل etc/passwd/ را ببینید. در این فایل هر خط نشان دهنده ی یک کاربر می باشد و اطلاعات مربوط به کاربر در مقابل آن کاربر نمایش داده می شود. برای دیدن این اطلاعات می توانید از دستور زیر استفاده کنید:

tux@GNUIran:~$ cat /etc/passwd

نتیجه ی این دستور چیزی شبیه زیر خواهد بود:

tux@GNUIran:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
Debian-exim:x:102:102::/var/spool/exim4:/bin/false
identd:x:100:65534::/var/run/identd:/bin/false
sshd:x:101:65534::/var/run/sshd:/bin/false
gdm:x:103:104:Gnome Display Manager:/var/lib/gdm:/bin/false
mysql:x:104:106:MySQL Server:/var/lib/mysql:/bin/false
tux:x:1000:30:GNUIran.org's Tux,9990011,:/home/tux:/bin/bash

همان طور که می بینید هر کدام از کاربران در یک خط هستند.
برای نمونه اطلاعات مربوط به کاربر tux را مورد بررسی قرار می دهیم:
tux : نام کاربری
x : در این بخش کلمه ی عبور یا پسورد کاربر به صورت رمز نوشته می شود. البته در توزیع های جدید بجای آن یک x نوشته میشود و پسورد در فایل دیگری به نام etc/shadow/ نگهداری می شود.
1000 : شماره ی کاربر یا UserID می باشد که همان طور که می بینید برای کاربر ریشه 0 می باشد.
30 : شماره ی گروه یا GroupID می باشد که در ادامه درباره ی گروه ها توضیح خواهیم داد.
GNUIran.org's Tux : اطلاعات اضافی درباره ی کاربر که می تواند شامل نام و نام خانوادگی و تلفن و غیره باشد. به این فیلد ٬ فیلد GECOS گفته می شود. برای کاربران سیستم این فیلد اغلب توضیحی درباره ی کاربرد آن کاربر می باشد. به توضیحات کاربرgdm توجه کنید.
home/tux/ : این بخش محل دایرکتوری خانگی کاربران را نمایش می دهد. به محل این دایرکتوری در کاربران سیستم دقت کنید!
bin/bash/ : در این بخش به شل یا پوسته ی هر کاربر اشاره شده است که در اغلب توزیع های لینوکس bin/bash/ می باشد.

برای ایجاد یک کاربر جدید در خط فرمان بعد از رفتن به حالت ریشه (با دستور su) می توانید با دستور adduser یک کاربر جدید بسازید:

GNUIran:~# adduser gnu
GNUIran:~# passwd gnu

با وارد کردن این دستورات ابتدا کاربر جدید gnu ساخته می شود و با وارد کردن دستور بعد از شما یک کلمه ی عبور یا پسورد برای کاربر gnu پرسیده خواهد شد. اگر این دستور در توزیع شما غیر فعال است شما می توانید از مدیر های گرافیکی مانند YaST در زوزه ٬ برای مدیریت کاربران استفاده نمایید یا از برنامه ی Kuser در محیط میزکار KDE استفاده کنید و یا به سادگی رکورد آن را در همین فایل اضافه کنید.

نکته:

در اغلب توزیع ها در خط فرمان برای کاربران ساده از کاراکتر دلار ($) و برای کاربر ریشه یا root از کاراکتر پوند (#) استفاده می شود.

II. گروه ها در لینوکس
مفهوم دیگری که در لینوکس پیاده سازی شده است گروه ها یا group می باشد. گروه از یک کاربر یا تعدادی کاربر تشکیل شده است. زمانی که برای یک گروه دسترسی یا عدم دسترسی به منبعی تعریف می شود ٬ این نوع مجوز دهی برای تمام اعضای آن گروه اعمال می شود. بنابراین می توان با گروه بندی کاربران به راحتی به عده ای مجوزی را داد و یا آن را سلب کرد.

برای دیدن گروه های موجود در لینوکس خود می توانید به فایل etc/group/ مراجعه کنید. حال با استفاده از دستور cat بخشی از محتویات این فایل را بررسی می کینم:

tux@GNUIran:~$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
lp:x:7:
mail:x:8:
news:x:9:
ftp:x:50:
dialout:x:20:
tty:x:25:
users:x:100:tux,gnu,deb

در این فایل نیز هر گروه در یک خط (یا رکورد) نوشته شده است. برای نمونه گروه users را بررسی می کنیم.
users : یک نام اختصاصی برای گروه
x : پسورد رمز نگاری شده ی مخصوص گروه که البته در صورت نبودن x پسوردی نیاز نیست.
100 : شماره ی اختصاصی گروه یا GroupID می باشد.
tux,gnu,deb : کاربرانی که عضو این گروه می باشند.
برای نمونه اعضای گروه tty می توانند در ترمینال (خط فرمان) تایپ کنند یا اعضای گروه dialout می توانند از مودم استفاده کنند.
حتما حدس زده اید که برای اضافه کردن یک گروه از دستور groupadd باید استفاده کرد:

GNUIran:~# groupadd gnuusers
GNUIran:~# usermod -G gnuusers tux

در خط اول یک گروه به نام gnuusers ساخته شد و در خط دوم کاربر tux عضو این گروه شد.

III. مجوزهای دسترسی برای فایل ها
مجوزهای دسترسی تعیین کننده ی این مطلب است که هر کاربر یا کاربران یک گروه اجازه ی انجام چه کارهایی را دارند. در اینجا ما قوانین دسترسی به فایل ها را وضع می کنیم. بنابراین بررسی خواهیم کرد که چه کاربری چه اعمالی بر روی یک فایل می تواند انجام دهد. این مجوزها از ابتدا در سیستم عامل لینوکس و بر روی تمام انواع فایل سیستم های آن موجود بوده و در تمام سیستم فایل ها یکسان می باشند. (می توانید با سیستم فایل های مایکروسافت مقایسه کنید که بعد از ورود NTFS این مجوزها به این سیستم عامل معرفی شدند.) مجوزها در سیستم عامل لینوکس شامل سه نوع یا سه mode می باشند:

۱ ) Read ( خواندن ) : بیانگر مجوز خواندن یک فایل می باشد و با r نشان داده می شود.
۲ ) Write ( نوشتن ) : بیانگر مجوز نوشتن و تغییر دادن محتویات یک فایل می باشد و با w نشان داده می شود.
۳ ) eXecute ( اجرا کردن ) : مجوز اجرا کردن را به کاربر مورد نظر می دهد و با x نشان داده می شود. واضح است که این مجوز فقط برای فایل های اجرایی تاثیر گذار می باشد.

لازم به ذکر است که هر یک از کاربران در سیستم عامل گنو/لینوکس می توانند هر ترکیبی از انواع مجوزهای خواندن ٬ نوشتن و اجرا کردن را برای هر فایل داشته باشند.
اگر بخواهیم عملیاتی را روی یک فایل یا دایرکتوری انجام دهیم که مجوز دسترسی لازم را نداشته باشیم با پیغام خطای زیر مواجه خواهیم شد:

tux@GNUIran:~$ cd /root
bash: cd: /root: Permission denied

برای مشاهده مجوزهای دسترسی یک فایل باید از دستور ls که مخفف list می باشد به همراه گزینه (option) l استفاده کرد. به نمونه ی زیر توجه کنید:

tux@GNUIran:~$ ls -l
total 2
drwxr-xr-x 3 tux GNUIran 6553 Sep 1 17:19 Documents
-rw-r--r-- 1 tux GNUIran 1024 Sep 12 17 :49 myfile

که خروجی این دستور را برای myfie بررسی می کنیم:
بیت اول که در اینجا " – " می باشد بیانگر نوع فایل می باشد و فقط یک بیت برای کنترل و اطلاع از نوع فایل یا دایرکتوری بودن آن می باشد و یک بیت برای نشان دادن مجوزها نیست. انواع آن را در زیر مشاهده می کنید:
- : فایل ساده
d : دایرکتوری
l : لینک نمادین یا لینک نرم -Symbolic link
s : سوکت -Socket
p : یک FIFO pipe

بیت های بعدی:
rwxr-xr-x : مجوزهای دسترسی
1 : تعداد لینک های سخت یا Hardlinks [۱]
tux : کاربر
GNUIran : گروه
1024 : حجم فایل به بایت - Byte
Sep 12 : تاریخ آخرین تغییرات
17:19 : ساعت آخرین تغییرات
myfile : نام فایل

همان طور که مشاهده نمودید مجوزهای دسترسی در نه بیت نمایش داده می شوند (--rw-r--r). این ۹ کاراکتر یا در اصلاح دقیق نه بیت (bit) نسبت به سه نوع (mode) مالکیت وضع می شوند:

۱ ) User ( مالک ) : همان ایجاد کننده ی فایل یا دایرکتوری می باشد.
۲ ) Group ( گروه ) : تعدادی از کاربران سیستم عامل می باشند که در یک گروه مشخصی قرار دارند و افراد متعلق به یک گروه می توانند در صورت داشتن مجوزهای لازم به فایل ها و دایرکتوری ها هم گروهی های خود دسترسی داشته باشند.
۳ ) Other ( سایر کاربران ) : می تواند شامل هر کاربر خارج از گروه شما باشد.

برای هر یک از این استفاده کنندگان سه نوع مجوز ( mode ) وجود دارد که شامل خواندن ٬ نوشتن و اجرا کردن فایل ها و دایرکتوری ها می باشد که این دلیل نه کاراکتری بودن مجوزهاست. سه کاراکتر اول از سمت چپ مجوزهای دسترسی مربوط به مالک ( User ) ٬ سه کاراکتر بعدی مجوزهای دسترسی مربوط به گروه و سه کاراکتر آخر مجوزهای دسترسی برای سایر کاربران را مشخص می کنند.
با توجه به مطالب ذکر شده همان طور که مشاهده می شود در مثال مطرح شده یک دایرکتوری بنام Documents و بک فایل بنامmyfile وجود دارد که صاحب و مالک این فایل و دایرکتوری کاربر tux می باشد و عضو گروه GNUIran می باشد. در این مثال مجوزهای دسترسی برای این فایل به صورت زیر خواهد بود:

فایل myfile
مالک : مجاز به خواندن و نوشتن می باشد.
گروه : فقط مجاز به خواندن می باشد.
سایر کاربران : فقط مجاز به خواندن می باشند.

در صورتیکه هر یک از کاربران دارای مجوز دسترسی rwx باشند به معنی این است که همه ی کاربران تمام مجوزهای لازم در مورد فایل را در اختیار دارند یا به عبارت دیگر دارای بیشترین مجوز دسترسی می باشند.

IV. مجوزهای دسترسی دایرکتوری ها
برای دایرکتوری ها هم همان سه مجوز موجود برای فایل ها استفاده می شوند ، اما نحوه ی استفاده با توجه به اینکه دایرکتوری هستند کمی متفاوت می باشد که در زیر این سه مجوز را برای دایرکتوری ها بررسی می کنیم:

۱ ) خواندن : اگر یک دایرکتوری دارای مجوز خواندن باشد شما می توانید لیستی از نام فایل ها و دایرکتوری های داخل آن بگیرید. یا به زبان خط فرمان می توانید از آن یک ls بگیرید.
۲ ) نوشتن : اگر دایرکتوری دارای مجوز نوشتن باشد این بدین معنی است که شما می توانید فایل های داخل آن را پاک کرده یا تغییر نام دهید یا یک فایل جدید در آن ایجاد کنید و فایل ها را ویرایش کنید. نکته ی بسیار مهم این است که این اعمال به شرطی قابل انجام هستند که شما مجوز اجرا کردن (x) را نیز داشته باشید و نوشتن (w) به تنهایی نمی تواند این اعمال را برای شما فراهم کند.
۳ ) اجرا کردن ( جستجو ) : این دستور اجازه ی ورود به دایرکتوری را می دهد یا به زبان خط فرمان شما اجازه ی cd کردن به داخل دایرکتوری را دارید و بدین وسیله شما به محتویات دایرکتوری دسترسی دارید و به شرط داشتن مجوز نوشتن می توانید آنها را تغییر دهید. به این مجوز در دایرکتوری ها ٬ اغلب مجوز جستجو گفته می شود. بنابراین هرگاه درباره ی مجوز جستجو مطلبی گفته شد در واقع درباره ی مجوز x در دایرکتوری صحبت می شود.

با توجه به مطالب گفته شده مجوز دایرکتوری Documents در مثال بالا به شکل زیر خواهد بود:

دایرکتوری Documents
مالک : دارای حداکثر مجوزهای دسترسی می باشد.
گروه : فقط مجاز به خواندن و اجرا کردن می باشد.
سایر کاربران : فقط مجاز به خواندن و اجرا کردن می باشند.

V. تغییر مجوزهای دسترسی
برای تغییر مجوزها می توانید در پنجره ی مدیر فایل خود بر روی فایل مورد نظر کلیک راست کنید و از بخش Properties آن برای تغییر مجوزها استفاده کنید و یا به سادگی از خط فرمان این کار را انجام دهید. در سیستم عامل گنو/لینوکس از دستور chmod که مخفف change mode می باشد برای تغییر مجوزهای دسترسی فایل ها و دایرکتوری ها استفاده می شود. توجه نمایید که برای استفاده از این دستور برای تغییر مجوزهای دسترسی یک فایل/دایرکتوری باید مالکیت آن فایل/دایرکتوری متعلق به شما باشد و یا اینکه کاربر ریشه ( root ) باشید.
از فرمان chmod به دو روش استفاده می شود:

روش اول ( با نشان ها )


chmod USER /= NEW_MODE File/Directory

در این روش به صورت نسبی می توان مجوزهای دسترسی را تغییر داد که در آن USER یکی از حروف زیر یا ترکیبی از آنها می تواند باشد:

u : برای مالک فایل/دایرکتوری
g : برای گروه
o : برای سایر کاربران
a : برای تمام کاربران ( all )

همان طور که گفته شد می توانید ترکیبی از این مقادیر را نیز بکار برد. مثلا از "go" برای group و other می توانید استفاده کنید.
یکی از سه گزینه ی =/-/+ را برای انتساب مجوز جدید به کاربرانی که انتخاب کرده اید را باید بر حسب نیاز خود انتخاب کنید. بدین صورتکه از "+" جهت اضافه کردن ٬ از "-" برای گرفتن و حذف کردن و از "=" برای انتساب مجوز استفاده کنید.
NEW_MODE نیز می تواند یکی از مجوزهایی باشد که در بالا اشاره کردیم ( r برای خواندن ٬ w برای نوشتن و x برای اجرا کردن ). در اینجا نیز می توانید از ترکیب مجوزها استفاده کنید. برای نمونه از "rw" برای مجوز خواندن و نوشتن استفاده کنید.
بنابراین g+r به معنای دادن اجازه ی خواندن فایل/دایرکتوری مورد نظر به گروه می باشد و یا go-wx به معنای این است که اجازه ی نوشتن و اجرا کردن از گروه و سایر کاربران گرفته می شود. حال به مثال زیر توجه کنید:


tux@GNUIran:~$ ls -l
-rw-r--r-- 1 tux GNUIran 29 Oct 4 19:49 myfile

اکنون اگر بخواهیم مجوزهای دسترسی این فایل را طوری عوض کنیم که مجوز نوشتن به اعضای گروه داده شود باید از دستور زیر استفاده کنیم:

tux@GNUIran:~$ chmod g+w myfile

اگر بخواهیم علاوه بر دادن مجوز نوشتن به گروه ٬ مجوز اجرا کردن را نیز به سایر کاربران بدهیم از دستور chmod باید بدین صورت استفاده کنیم:


tux@GNUIran:~$ chmod g+w,o+x myfile

برای حصول اطمینان از تغییر مجوزها یک بار دیگر فرمان ls -l را اجرا کنید.

tux@GNUIran:~$ ls -l
-rw-rw-r-x 1 tux GNUIran 29 Oct 4 19:49 myfile

همانطور که مشاهده می کنید مجوزهای نوشتن برای گروه و اجرا کردن برای سایر کاربران اعمال شده است.
برای اعطای مجوزهای خواندن و نوشتن و اجرا به گروه می توانیم از دستور زیر نیز استفاده کنیم:


tux@GNUIran:~$ chmod g=rwx myfile

روش دوم ( با اعداد )
وقت آن رسیده که کمی با اعداد بازی کنیم! همان طور که در قسمت های قبل مطالعه کردید مجوزهای دسترسی در ۹ کاراکتر نمایش داده می شوند مانند rwxrwxrwx ، به بیان دقیق تر مجوزهای دسترسی در ۹ بیت ذخیره می شوند ، هر بیت می تواند یک یا صفر باشد! خوب بنابراین ۱ به معنی داشتن آن مجوز و ۰ به معنی نداشتن آن مجوز است ، برای نمونه rwxrwxrwx با معادل 111111111 در مبنای دو برابر است و یا مجوز rwx---r-x به صورت صفر و یکی خواهد شد: 111000101 . در واقع rwx برابر 111 خواهد بود و r-w برابر101 خواهد شد. این روش ایده ایست برای مجوز دهی با روشی بسیار آسان به نام روش عددی! در این روش مقدار r برابر ۴ می باشد. به این دلیل که اگر شما فقط مجوز خواندن صادر کنید خواهیم داشت --r که برابر 100 می باشد و می دانیم 100 در مبنای ده برابر ۴ می باشد. مقدار w برابر ۲ می باشد چرا که -w- برابر 010 است که در مبنای ده ۲ می باشد و معادل x برابر ۱ می باشد چرا که x-- برابر 001 است و ۱ در مبنای ده ۱ می شود.
بنابراین در این روش برای اعطای مجوزها باید از اعداد این جدول استفاده بکنید.

خواندن

۴

نوشتن

۲

اجرا کردن

۱

با این حساب می توانیم روش دوم را به صورت زیر بنویسیم:

chmod MODE File/Directory

در این حالت می توان بطور مطلق مجوزهای دسترسی را تعیین کرد. منظور این است که مانند حالت اول مجوزی را اضافه یا کم نمی کنیم بلکه تمام مجوزها از ابتدا وارد می شوند.
MODE همان عدد سه رقمی می باشد که نشان دهنده ی مجوزهای جدید برای فایل/دایرکتوری مورد نظر می باشد. رقم اول مربوط به مجوز دسترسی مالک ٬ رقم دوم مربوط به مجوز دسترسی گروه و رقم سوم مربوط به مجوز دسترسی سایر کاربران می باشد.
با یک مثال طریقه ی استفاده از این اعداد را برای شما شرح می دهیم. برای نمونه اگر بخواهید که مجوز خواندن و نوشتن را به یک کاربر بدهید باید اعداد مربوط به مجوزهای خواندن (۴) و نوشتن (۲) را با هم جمع کنید تا مجوز کاربر را بدست بیاورید.

۴+۲=۶

بنابراین عدد ۶ مجوز جدید کاربر خواهد بود که نشان دهنده ی وجود مجوزهای خواندن و نوشتن برای او می باشد.
حال همان فایل myfile در مثال های بالایی را در نظر بگیرید. می خواهیم مجوزهای آنرا طوری تغییر بدهیم که مالک دارای تمام مجوزها باشد ٬ گروه دارای مجوز خواندن و اجرا کردن باشد و سایر کاربران نیز هیچ مجوزی نداشته باشند. دستور زیر تمام این مجوزها را تعیین می کند.

tux@GNUIran:~$ chmod 750 myfile

همانطور که مشاهده می کنید عدد ۷ برای مالک فایل و نشان دهنده ی تمام مجوزهای خواندن و نوشتن و اجرا کردن ( ۷=۱+۲+۴ ) برای وی می باشد. عدد ۵ برای گروه و نشان دهنده ی مجوزهای خواندن و نوشتن ( ۵=۱+۴ ) برای آن می باشد. عدد صفر نیز برای سایر کاربران می باشد و نشان دهنده ی این است که هیچ مجوزی برای خواندن یا نوشتن و یا اجرا کردن این فایل ندارند.
شما می توانید از هر یک از حالت های گفته شده برای تعیین مجوزها استفاده کنید. هیچ تفاوتی بین دستورهای معادل وجود نخواهد داشت. به دو دستور زیر توجه کنید. این دو دستور دقیقا معادل یکدیگر می باشند و هر دو یک کار را انجام خواهند داد.


tux@GNUIran:~$ chmod a=rx myfile
tux@GNUIran:~$ chmod 555 myfile


نکته:

توجه کنید که اگر مجوزها را طوری تعیین کنید که مالک فایل/دایرکتوری هیچ مجوزی نداشته باشد حتی مالک فایل/دایرکتوری نیز نمی تواند به آن دسترسی داشته باشد. اما چون وی مالک فایل/دایرکتوری می باشد می تواند مجددا مجوزها را تغییر دهد و از آن استفاده کند. ( فراموش نکنید که فقط کاربر ریشه و مالک فایل/دایرکتوری می توانند مجوزها را تغییر بدهند. )


نکته:

برای تغییر مجوزهای یک دایرکتوری با تمام محتویات آن می توانید از گزینه (option) R استفاده کنید:

tux@GNUIran:~$ chmod -R 755 test


در نمونه ی بالا تمام محتویات دایرکتوری test نیز مجوز 755 خواهند گرفت.

VI. تعیین مجوز پیش فرض
شما زمانی که یک فایل یا دایرکتوری می سازید به طور پیش فرض به آن یک مجوز اختصاص پیدا خواهد کرد که این مجوز پیش فرض را می توان با دستور umask تغییر داد. برای اطلاع از مجوز کنونی می توانید این دستور را به تنهایی اجرا کنید. کافیست در خط فرمان تایپ کنید umask تا مجوز پیش فرض برای شما نمایش داده شود.


tux@GNUIran:~$ umask
022

بله 022 ! کمی عجیب است! در واقع خود شما به طور پیش فرض هیچ مجوزی ندارید! اما روش خواندن این عدد کمی متفاوت است ، در واقع این اعداد مجوزهای سلب شده است که به شما نمایش داده می شود. برای نمونه در 022 از مالک هیچ مجوزی سلب نشده است. یعنی مالک تمام مجوزها را داراست و از گروه و دیگران مجوز ۲ یا نوشتن سلب شده است. برای اینکه بتوانید راحت تر این مجوزها را بخوانید می توانید برای دایرکتوری ها مقدار داده شده را از 777 و برای فایل ها از 666 کم کنید. با این کار مجوز پیش فرض برای فایل ها و دایرکتوری ها بدست می آید.

666-022= 644
777-022=755

خوب خواندن راحت تر شد ، بنابراین هر دایرکتوری جدیدی که شما می سازید دارای مجوز پیش فرض 755 می باشد و هر فایل دارای مجوز644 می باشد. اگر باز هم با خواندن اعداد مشکلی دارید می توانید با گزینه (option) S این دستور را اجرا کنید:

tux@GNUIran:~$ umask -S
u=rwx,g=rx,o=rx

که نوع مجوزها دقیقا معلوم است.
اما اگر از مجوزی که در حال حاضر به عنون پیش فرض است ناراضی هستید به راحتی می توانید با همین دستور آن را تغییر دهید:
برای مثال اگر می خواهید جز شما هیچ کس به دایرکتوری یا فایل شما دسترسی نداشته باشد می توانید مقدار umask را 077 بدهید که در این صورت فایل های جدید ایجاد شده دارای مجوز 600 یا -------rw و دایرکتوری های جدید ایجاد شده نیز دارای مجوز 700 یا ------rwx خواهند بود. اما اگر از روش عددی چندان راضی نیستید می توانید از روش ساده استفاده کنید. مانند نمونه ی زیر:


tux@GNUIran:~$ umask u=rwx,g=r,o=

که کاربر یا مالک تمام مجوزها را دارد و هم گروهی های او می توانند فایل ها را بخوانند و دیگران هیچ دسترسی ندارند. به همین سادگی!

VII. بیت Sticky
تا به حال به ۹ بیت برای کنترل مجوزها اشاره کردیم. حال به بیتی دیگری به نام بیت استیکی (Sticky) اشاره می کنیم. این بیت که فقط برای دایرکتوری ها استفاده می شود باعث می شود تا هیچ کاربری نتواند فایلی را که مالک آن نیست پاک کند. برای نمونه اگر یک دایرکتوری به نام mail داشته باشیم که مجوز آن 777 باشد یا به عبارت دیگر مجوز خواندن و نوشتن و جستجو برای همه در آن صادر شده باشد شما می توانید نامه های دوستان خود را که مالک آنها نیستید را پاک کنید اما اگر بیت استیکی در آن قرار داده شود با وجود مجوز برای تمام تغییرات شما دیگر نمی توانید نامه هایی که شما مالک آنها نیستید را پاک کنید.
برای قرار دادن این بیت کافیست دستور chmod را مانند نمونه ی زیر به کار گیرید:


tux@GNUIran:~$ chmod +t mail

حال اگر یک بار دیگر دستور ls را اجرا می کنیم:

tux@GNUIran:~$ ls -l
drwxr-xr-t 2 tux GNUIran 4096 Sep 1 4:02 mail

مشاهده می کنید که در قسمت آخر بیت مربوط به x به t تبدیل شده است. بنابراین در این دایرکتوری شما نمی توانید فایلهایی را که در تملک دیگران قرار دارد را پاک کنید. (فایل هایی که کاربر آنها شما نیستید.)

VIII. تغییر مالکیت فایل یا دایرکتوری
گاهی ممکن است بخواهیم مالکیت یک فایل/دایرکتوری را تغییر بدهیم. برای این کار باید از فرمان chown استفاده کنیم. شکل کلی آن بصورت زیر می باشد:

tux@GNUIran:~$ chown NEW_OWNER File/Directory

NEW_OWNER نام مالک جدید فایل/دایرکتوری می باشد که می خواهیم مالکیت فایل/دایرکتوری را به او نسبت دهیم. باید دقت کرد که فرد مورد نظر که می خواهیم مالکیت فایل/دایرکتوری را به او نسبت بدهیم در سیستم تعریف شده باشد. در غیر این صورت با پیغام زیر مواجه خواهیم شد:

tux@GNUIran:~$ chown tux2 myfile
chown: `tux2': invalid user

برای دیدن لیست کاربران همان طور که در بالا اشاره شد در خط فرمان باید از دستور زیر استفاده کنید:

tux@GNUIran:~$ cat /etc/passwd


هشدار!

به این نکته توجه داشته باشید که پس از تغییر مالکیت فایل/دایرکتوری دیگر نمی توانید مجوزهای آنرا تغییر دهید چون شما دیگر مالک آن فایل/دایرکتوری نیستید! اگر عضو گروه فایل/دایرکتوری باشید ٬ همانند اعضای گروه با شما رفتار خواهد شد. اگر هم عضو گروه فایل/دایرکتوری نباشید در قسمت سایر کاربران قرار خواهید گرفت! پس حواس خود را جمع کنید تا اشتباهی مالکیت فایلی را تغییر ندهید! البته کاربر ریشه می تواند هر گونه تغییری در مالکیت فایل/دایرکتوری ایجاد کند.

IX. تغییر گروه فایل یا دایرکتوری
برای تغییر دادن گروه یک فایل/دایرکتوری باید از فرمان chgrp به شکل زیر استفاده کرد:

tux@GNUIran:~$ chgrp NEW_GROUP File/Directory

NEW_GROUP نام گروه جدیدی است که می خواهید فایل/دایرکتوری مورد نظر را به آن گروه نسبت دهید. همانند تغییر مالکیت در اینجا نیز باید گروه در سیستم تعریف شده باشد. برای دیدن لیست گروهها در خط فرمان از دستور زیر استفاده کنید:


tux@GNUIran:~$ cat /etc/group


امیدواریم این مقاله بتواند شما را در مدیریت بهتر فایل ها و دایرکتوری هایتان کمک کند.
همواره شاد و سربلند باشید.



پی نوشت:
[1].اگر در باره ی لینک سخت اطلاعاتی می خواهید می توانید مقاله ی مربوط به آن را در این جا مطالعه کنید.


امتیاز دهی 1/10
امکانات

اطلاعات

ارتباطات

پروژه‌ها

ورود اعضا




 


 برای ورود مشکل دارید؟
 ثبت نام کاربران جدید


The rest of this site is Copyright © 2004 2005 2006 2007 2008 GNUIran.org
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by Free Software Foundation; A copy of the licence is available at www.gnu.org/copyleft/fdl.html

تمام مطالب این سایت تحت مجوز GNU/FDL نسخه ی ۱.۲ یا هر نسخه ی جدیدی که از سوی بنیاد نرم افزار آزاد منتشر شود قرار دارد شما برای کپی استفاده و/یا تغییر مستندات آزاد هستید.
می توانید یک نسخه از این مجوز را از اینجا تهیه کنید.


GIO Forums RSS   GIO News RSS   GIO Gallery RSS   Licensed under GNU/FDL  Use TW-CMS  Run on Debian GNU/Linux