استفاده از امتیازات ما
اکنون که یاد گرفتیم این مجوزها چگونه کار می کند، وقت آن است که آن را به رخ بکشیم. ما می خواهیم راه حل یک مشکل مشترک را نشان دهیم - راه اندازی یک دایرکتوری مشترک. بیایید تصور کنیم که دو کاربر به نامهای «بیل» و «کارن» داریم. آنها هر دو مجموعه سی دی موسیقی دارند و مایلند یک فهرست مشترک راه اندازی کنند، جایی که هر کدام فایل های موسیقی خود را به صورت Ogg Vorbis یا MP3 ذخیره کنند. کاربر لایحه دسترسی به امتیازات ابرکاربر از طریق کد: sudo.
اولین چیزی که باید اتفاق بیفتد ایجاد گروهی است که هر دو را داشته باشد لایحه و کارن به عنوان اعضا با استفاده از ابزار مدیریت گرافیکی کاربر، لایحه گروهی به نام ایجاد می کند موسیقی و کاربران را اضافه می کند لایحه و کارن به آن:
شکل 3: ایجاد یک گروه جدید با GNOME
بعدی، لایحه دایرکتوری فایل های موسیقی را ایجاد می کند:
[bill@linuxbox ~]$ sudo mkdir /usr/local/share/Music
کلمه عبور:
[bill@linuxbox ~]$ sudo mkdir /usr/local/share/Music
کلمه عبور:
پس از لایحه در حال دستکاری فایل های خارج از دایرکتوری اصلی خود است، امتیازات superuser مورد نیاز است. پس از ایجاد دایرکتوری، مالکیت و مجوزهای زیر را دارد:
[bill@linuxbox ~]$ ls -ld /usr/local/share/Music
drwxr-xr-x 2 root root 4096 2016-03-21 18:05 /usr/local/share/Music
[bill@linuxbox ~]$ ls -ld /usr/local/share/Music
drwxr-xr-x 2 root root 4096 2016-03-21 18:05 /usr/local/share/Music
همانطور که می بینیم، دایرکتوری متعلق به ریشه و دارای 755 مجوز است. برای اینکه این دایرکتوری قابل اشتراک گذاری باشد، لایحه برای اجازه نوشتن باید مالکیت گروه و مجوزهای گروه را تغییر دهد:
[bill@linuxbox ~]$ sudo chown :music /usr/local/share/Music [bill@linuxbox ~]$ sudo chmod 775 /usr/local/share/Music [bill@linuxbox ~]$ ls -ld /usr/local/share/Music
drwxrwxr-x 2 root music 4096 2016-03-21 18:05 /usr/local/share/Music
[bill@linuxbox ~]$ sudo chown :music /usr/local/share/Music [bill@linuxbox ~]$ sudo chmod 775 /usr/local/share/Music [bill@linuxbox ~]$ ls -ld /usr/local/share/Music
drwxrwxr-x 2 root music 4096 2016-03-21 18:05 /usr/local/share/Music
خب همه اینها یعنی چی؟ به این معنی است که ما اکنون یک دایرکتوری داریم،
/usr/local/share/Music که متعلق به root است و امکان دسترسی خواندن و نوشتن به موسیقی گروهی را فراهم میکند. موسیقی گروه دارای اعضای بیل و کارن است، بنابراین بیل و کارن میتوانند فایلهایی را در پوشه /usr/local/share/Music ایجاد کنند. سایر کاربران می توانند محتویات دایرکتوری را فهرست کنند اما نمی توانند در آنجا فایل ایجاد کنند.
اما ما همچنان مشکل داریم. با مجوزهای فعلی، فایل ها و دایرکتوری های ایجاد شده در فهرست موسیقی، مجوزهای عادی کاربران را خواهند داشت لایحه و کارن:
[bill@linuxbox ~]$ > /usr/local/share/Music/test_file
[bill@linuxbox ~]$ ls -l /usr/local/share/Music
-rw-r--r-- 1 قبض 0 2016-03-24 20:03 test_file
[bill@linuxbox ~]$ > /usr/local/share/Music/test_file
[bill@linuxbox ~]$ ls -l /usr/local/share/Music
-rw-r--r-- 1 قبض 0 2016-03-24 20:03 test_file
در واقع دو مشکل وجود دارد. اول، پیش فرض umask در این سیستم 0022 است که اعضای گروه را از نوشتن فایل های متعلق به سایر اعضای گروه جلوگیری می کند. اگر دایرکتوری مشترک فقط حاوی فایل باشد، مشکلی نیست، اما از آنجایی که این دایرکتوری موسیقی را ذخیره می کند، و موسیقی معمولاً در سلسله مراتبی از هنرمندان و آلبوم ها سازماندهی می شود، اعضای گروه به توانایی ایجاد فایل نیاز دارند. و دایرکتوری های داخل دایرکتوری های ایجاد شده توسط سایر اعضا. ما باید تغییر دهیم umask استفاده شده توسط لایحه و کارن در عوض به 0002.
دوم، هر فایل و فهرستی که توسط یک عضو ایجاد میشود، بهجای گروه، روی گروه اصلی کاربر تنظیم میشود موسیقی. این را می توان با تنظیم بیت setgid در دایرکتوری برطرف کرد:
[bill@linuxbox ~]$ sudo chmod g+s /usr/local/share/Music
[bill@linuxbox ~]$ sudo chmod g+s /usr/local/share/Music
استفاده از امتیازات ما
[bill@linuxbox ~]$ ls -ld /usr/local/share/Music
drwxrwsr-x 2 root music 4096 2016-03-24 20:03 /usr/local/share/Music
[bill@linuxbox ~]$ ls -ld /usr/local/share/Music
drwxrwsr-x 2 root music 4096 2016-03-24 20:03 /usr/local/share/Music
اکنون ما آزمایش می کنیم تا ببینیم آیا مجوزهای جدید مشکل را برطرف می کنند یا خیر. لایحه خود را تنظیم می کند umask به 0002، فایل آزمایشی قبلی را حذف می کند و یک فایل آزمایشی و دایرکتوری جدید ایجاد می کند:
[bill@linuxbox ~]$ umask 0002
[bill@linuxbox ~]$ rm /usr/local/share/Music/test_file [bill@linuxbox ~]$ > /usr/local/share/Music/test_file [bill@linuxbox ~]$ mkdir /usr/local/share/Music/test_dir [bill@linuxbox ~]$ ls -l /usr/local/share/Music
drwxrwsr-x 2 bill music 4096 2016/03/24 20:24 test_dir
-rw-rw-r-- 1 بیل موسیقی 0 2016-03-24 20:22 test_file [bill@linuxbox ~]$
[bill@linuxbox ~]$ umask 0002
[bill@linuxbox ~]$ rm /usr/local/share/Music/test_file [bill@linuxbox ~]$ > /usr/local/share/Music/test_file [bill@linuxbox ~]$ mkdir /usr/local/share/Music/test_dir [bill@linuxbox ~]$ ls -l /usr/local/share/Music
drwxrwsr-x 2 bill music 4096 2016/03/24 20:24 test_dir
-rw-rw-r-- 1 بیل موسیقی 0 2016-03-24 20:22 test_file [bill@linuxbox ~]$
اکنون هر دو فایل و دایرکتوری با مجوزهای صحیح ایجاد می شوند تا به همه اعضای گروه اجازه دهند موسیقی برای ایجاد فایل ها و دایرکتوری ها در داخل موسیقی دایرکتوری.
یکی از مسائل باقی مانده است umask. تنظیم لازم فقط تا پایان جلسه ادامه دارد و باید تنظیم مجدد شود. در فصل 11، به ایجاد تغییر در آن خواهیم پرداخت umask دائمی