از آنجایی که لینوکس یک سیستم عامل چند کاربره یا 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 نام گروه جدیدی است که می خواهید فایل/دایرکتوری مورد نظر را به آن گروه نسبت دهید. همانند تغییر مالکیت در اینجا نیز باید گروه در سیستم تعریف شده باشد. برای دیدن لیست گروهها در خط فرمان از دستور زیر استفاده کنید:
|