دسترسیها: تفاوت بین نسخهها
سطر ۷۰: | سطر ۷۰: | ||
در مثال اول تنها صاحب پرونده(در اینجا farooqkz) اجازه خواندن و نوشتن دارد. | در مثال اول تنها صاحب پرونده(در اینجا farooqkz) اجازه خواندن و نوشتن دارد. | ||
در مثال دوم نیز تنها صاحب پرونده(یعنی root) و گروه کاربری صاحب پرونده(disk) اجازه خواندن و نوشتن دارند. | در مثال دوم نیز تنها صاحب پرونده(یعنی root) و گروه کاربری صاحب پرونده(disk) اجازه خواندن و نوشتن دارند. | ||
+ | == دسترسی اجرا == | ||
+ | در [[یونیکس]] یک پرونده تنها زمانی میتواند اجرا شود که کاربر دسترسی اجرا کردن داشته باشد، در غیر این صورت یک پیغام Permission Denied به سمت کاربر پرت خواهد شد: | ||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
+ | همانطور که در مثال بالا مشاهده میکنید، با اینکه کاربر صاحب پروندهی prog است، اما به دلیل نداشتن دسترسی اجرا، نمیتواند پرونده را اجرا کند. | ||
+ | دسترسی اجرا کردن برای شاخهها معنی متفاوتی دارد، یک کاربر تنها در صورتی میتواند با [[cd]] وارد یک شاخه شود که دسترسی اجرا کردن داشته باشد. | ||
+ | <pre> | ||
+ | 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$ | ||
+ | </pre> | ||
+ | |||
+ | == دسترسی خواندن و نوشتن == | ||
+ | دسترسی خواندن و نوشتن برای یک پرونده به ترتیب داشتن توانایی مشاهدهی محتویات پرونده و یا ویرایش آن است. برای شاخه ها این دو دسترسی معنی اندک متفاوتی دارند: زمانی که کاربری دسترسی خواندن شاخهای را دارد، میتواند تنها مشاهده کند چه پروندههایی در آن شاخه هستند و ممکن است بتواند پروندهها را بخواند یا نه. همچنین دسترسی نوشتن برای یک شاخه به معنی اجازهی اضافه با حذف پروندهها به/از آن شاخه است. | ||
+ | |||
+ | == کاربرد مود ۲۲۲(تنها دسترسی نوشتن) == | ||
+ | مود ۲۲۲ که به صاحب پرونده، دیگر کاربران در همان گروه کاربری و به بقیه تنها دسترسی نوشتن میدهد، میتواند بوسیلهی ترکیب با خاصیت a در [[File_System|سامانه پرونده]] های [[لینوکس]](که با [[chattr]] این خاصیت اضافه میشود) به کاربران تنها دسترسی اضافه کردن به یک پرونده را بدهد. | ||
+ | <pre> | ||
+ | chmod 222 logfile | ||
+ | chattr +a logfile | ||
+ | </pre> | ||
+ | در مثال بالا که باید با [[ابرکاربر]] اجرا شود، ابتدا به پروندهی logfile تنها دسترسی نوشتن میدهیم، تا به اینجا کاربران میتوانند پرونده را از نو بازنویسی کنند یا محتویات جدید به آن اضافه کنند اما نمیتوانند پرونده را بخوانند. | ||
+ | |||
+ | اما بعد از اجرای دستور دوم و دادن صفت a(که مخفف append است) به پرونده، کاربران تنها میتوانند به آن محتویات را اضافه کنند و نمیتوانند چیزی از آن کم کرده یا آنرا بطور کامل بازنویسی کنند. در نتیجه [[مدیر سیستم]] میتواند(در این مثال) کاری کند که کاربران تنها(به معنای دقیق کلمه) log ها را اضافه کنند. |
نسخهٔ ۱۴ مرداد ۱۳۹۶، ساعت ۱۹:۳۰
بر خلاف سیستم عامل هایی که از سنت داس(مانند ویندوز) پیروی میکنند و تککاره و تککاربره هستند، یونیکس و شبهیونیکس ها از همان آغاز برای تعداد زیادی کاربر برای انجام کار های مختلف طراحی شده بودند.
زمانی که دستور 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 ها را اضافه کنند.