دسترسی‌ها

از ویکی فارسی اوبونتو
پرش به: ناوبری، جستجو

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

زمانی که دستور ls را با سوئیچ -l اجرا می‌کنید، نتیجه‌ای مشابه زیر را میگیرید:

farooqkz@farooqkz:~$ ls -l .bash_history 
-rw------- 1 farooqkz farooghkz 317949 اوت    2 19:50 .bash_history

اولین ستون از سمت چپ نشان دهنده‌ی خواص‌های(به انگلیسی attributes) پرونده است.

-rw-------

اولین نویسه که در اینجا - است، نشان دهنده‌ی نوع پرونده است،

-

یک پرونده‌ی عادی

d

یک شاخه(دایرکتوری)

l

یک پیوند نمادین(symbolic link)، توجه کنید که دسترسی های یک پیوند نمادین همیشه rwxrwxrwx یا 777 به معنی خواندن، نوشتن و اجرا کردن برای همه است.

c

یک پرونده‌ی ویژه‌ی نویسه‌ای(به انگلیسی: character special file)،به دستگاه‌هایی ارجاع میکند که داده را بصورت جریانی از بایت‌ها مدیریت میکنند مانند یک پایانه یا مودم

b

یک پرونده‌ی ویژه‌ی بلوکی(به انگلیسی: block special file)، به دستگاه‌هایی ارجاع میکند که داده را بصورت بلوک ها مدیریت میکنند، مانند دیسک های سخت یا CD-ROMها

برای مثال دستور زیر انواع بیشتری از پرونده را نشان میدهد:

farooqkz@farooqkz:~$ ls /dev/sd* -l
brw-rw---- 1 root disk 8,  0 ژوئیه 30 19:20 /dev/sda
brw-rw---- 1 root disk 8,  1 ژوئیه 30 19:20 /dev/sda1
brw-rw---- 1 root disk 8,  2 ژوئیه 30 19:22 /dev/sda2
brw-rw---- 1 root disk 8,  3 ژوئیه 30 19:20 /dev/sda3
brw-rw---- 1 root disk 8,  4 ژوئیه 30 19:20 /dev/sda4
brw-rw---- 1 root disk 8, 16 ژوئیه 30 19:20 /dev/sdb
brw-rw---- 1 root disk 8, 17 ژوئیه 30 19:20 /dev/sdb1
brw-rw---- 1 root disk 8, 18 ژوئیه 30 19:20 /dev/sdb2
brw-rw---- 1 root disk 8, 19 ژوئیه 30 19:20 /dev/sdb3
brw-rw---- 1 root disk 8, 20 ژوئیه 30 19:20 /dev/sdb4
brw-rw---- 1 root disk 8, 21 ژوئیه 30 19:20 /dev/sdb5

۹ نویسه‌ی باقی‌مانده به سه گروه سه‌تایی تبدیل میشوند و دسترسی خواندن، نوشتن و اجرا کردن را برای صاحب پرونده، گروه‌کاربری و سایر کاربران مشخص میکنند.

صاحب گروه سایر
rwx rwx rwx

منظور از صاحب، گروه و سایر به ترتیب صاحب پرونده(که میتواند با chown تغییر داده شود)، گروه کاربری صاحب این پرونده(باز هم میتواند با chown تغییر داده شود) و سایر کاربران می‌باشد.

در مثال اول تنها صاحب پرونده(در اینجا farooqkz) اجازه خواندن و نوشتن دارد. در مثال دوم نیز تنها صاحب پرونده(یعنی root) و گروه کاربری صاحب پرونده(disk) اجازه خواندن و نوشتن دارند.

دسترسی اجرا

در یونیکس یک پرونده تنها زمانی میتواند اجرا شود که کاربر دسترسی اجرا کردن داشته باشد، در غیر این صورت یک پیغام Permission Denied به سمت کاربر پرت خواهد شد:

farooqkz@farooqkz:/tmp/foo$ ./prog
bash: ./prog: Permission denied
farooqkz@farooqkz:/tmp/foo$ ls -l prog 
-rw-r--r-- 1 farooqkz farooghkz 28 اوت    5 20:10 prog

همانطور که در مثال بالا مشاهده میکنید، با اینکه کاربر صاحب پرونده‌ی prog است، اما به دلیل نداشتن دسترسی اجرا، نمیتواند پرونده را اجرا کند. دسترسی اجرا کردن برای شاخه‌ها معنی متفاوتی دارد، یک کاربر تنها در صورتی میتواند با cd وارد یک شاخه شود که دسترسی اجرا کردن داشته باشد.

farooqkz@farooqkz:/tmp/foo$ ls -l
total 8
drw-r--r-- 2 farooqkz farooghkz 4096 اوت    5 20:18 bar
-rw-r--r-- 1 farooqkz farooghkz   28 اوت    5 20:10 prog
farooqkz@farooqkz:/tmp/foo$ cd bar
bash: cd: bar: Permission denied
farooqkz@farooqkz:/tmp/foo$ chmod +x bar
farooqkz@farooqkz:/tmp/foo$ cd bar
farooqkz@farooqkz:/tmp/foo/bar$ 

دسترسی خواندن و نوشتن

دسترسی خواندن و نوشتن برای یک پرونده به ترتیب داشتن توانایی مشاهده‌ی محتویات پرونده و یا ویرایش آن است. برای شاخه ها این دو دسترسی معنی اندک متفاوتی دارند: زمانی که کاربری دسترسی خواندن شاخه‌ای را دارد، میتواند تنها مشاهده کند چه پرونده‌هایی در آن شاخه هستند و ممکن است بتواند پرونده‌ها را بخواند یا نه. همچنین دسترسی نوشتن برای یک شاخه به معنی اجازه‌ی اضافه با حذف پرونده‌ها به/از آن شاخه است.

کاربرد مود ۲۲۲(تنها دسترسی نوشتن)

مود ۲۲۲ که به صاحب پرونده، دیگر کاربران در همان گروه کاربری و به بقیه تنها دسترسی نوشتن میدهد، میتواند بوسیله‌ی ترکیب با خاصیت a در سامانه پرونده های لینوکس(که با chattr این خاصیت اضافه میشود) به کاربران تنها دسترسی اضافه کردن به یک پرونده را بدهد.

chmod 222 logfile
chattr +a logfile

در مثال بالا که باید با ابرکاربر اجرا شود، ابتدا به پرونده‌ی logfile تنها دسترسی نوشتن میدهیم، تا به اینجا کاربران میتوانند پرونده را از نو بازنویسی کنند یا محتویات جدید به آن اضافه کنند اما نمیتوانند پرونده را بخوانند.

اما بعد از اجرای دستور دوم و دادن صفت a(که مخفف append است) به پرونده، کاربران تنها میتوانند به آن محتویات را اضافه کنند و نمیتوانند چیزی از آن کم کرده یا آنرا بطور کامل بازنویسی کنند. در نتیجه مدیر سیستم میتواند(در این مثال) کاری کند که کاربران تنها(به معنای دقیق کلمه) log ها را اضافه کنند.