Skip to content

Commit

Permalink
Merge pull request #92 from shahinism/master
Browse files Browse the repository at this point in the history
Persian Translation
  • Loading branch information
cindyq committed Jan 3, 2017
2 parents d3b9c33 + 906e2f3 commit 2eb8172
Show file tree
Hide file tree
Showing 186 changed files with 7,617 additions and 0 deletions.
38 changes: 38 additions & 0 deletions lessons/locales/fa-persian/access/file-permissions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# مجوزهای فایل

## محتویات درس

همانطور که پیشتر یاد گرفتیم، فایل‌ها مجوز و مُدهای مختلفی دارند. بگذارید با یک مثال نگاهی دقیق‌تر به آن بیندازیم:

<pre>$ ls -l Desktop/
drwxr-xr-x 2 pete penguins 4096 Dec 1 11:45 .
</pre>

در قسمت مجوز‌های فایل چهار قسمت وجود دارد. قسمت اول نوع فایل است که توسط اولین کارکترِ قسمت مجوز‌ها مشخص شده است. در این مثال، ما در حال بررسی یک دایرکتوری یا به عبارت ساده پوشه هستیم و به همین خاطر این کاراکتر حرف <b>d</b> را برای نوع فایل نشان می‌دهد. در اکثر موراد شما با کاراکتر <b>-</b> برای فایل‌های معمولی مواجه خواهید شد.

سه قسمت بعدی در فایل‌مُد ما مجوزهای موجود فایل است. هر مجوز به سه گروه مجزا که هر کدام به سه بیت تقسیم شده‌اند، دسته‌بندی شده‌اند. سه بیت ابتدایی مجوزهای مربوط به کاربر "user" را نشان می‌دهد و سپس مجوزهای مربوط به گروه "group" و بعد از آن مجوزهای سایر قرار گرفته‌اند. در مثال زیر با توجه به لوله‌های بین آن‌ها می‌توانید تفاوت را به وضوح ببینید.

<pre>d | rwx | r-x | r-x </pre>

هر کاراکتر نشان‌دهنده‌ی مجوزهای متفاوتی است.

<ul>
<li>r: قابل خواندن</li>
<li>w: قابل نوشتن</li>
<li>x: قابل اجرا (در اصل یک برنامه‌ی قابل اجرا)</li>
<li>-: خالی</li>
</ul>

خب در مثال بالا، ما می‌بینیم که کاربر pete تمام مجوزهای مربوط به خواندن، نوشتن و اجرا را دارد. گروه پنگوئن‌ها یا penguins نیز قادر به خواندن و اجرای فایل است. و در نهایت سایر کاربرها (شامل تمام افرادی که فایل در دسترس ایشان است) مجوزهای خواندن و اجرا را دارند.

## تمرین

با استفاده از دستور ls -l بر روی چندین فایل مجوزهای آن‌ها و همچنین گروه و کاربرشان را مشخص کنید.

## سوال آزمون

کدام قسمت مجوز نشان‌دهنده‌ی قابلیت اجرای فایل است؟

## پاسخ آزمون

x
62 changes: 62 additions & 0 deletions lessons/locales/fa-persian/access/modifying-permissions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# دستکاری مجوزها

## محتویات درس

شما با استفاده از فرمان **chmod** به راحتی می‌توانید مجوزها را تغییر دهید.

ابتدا دسته‌ی مجوزی که می‌خواهید تغییر دهید را انتخاب کنید. دسته‌ی کاربر، گروه و یا دیگران. حالا می‌توانید با استفاده از **+** و **-** آن‌ها را اضافه یا حذف کنید. با هم نگاهی به چند مثال می‌اندازیم.

**اضافه کردن یک بیتِ مجوز به فایل**

```$ chmod u+x myfile```

دستور بالا اینگونه خوانده می‌شود: مجوز فایل myfile را با اضافه کردن قابلیت اجرا به مجوزهای دسته‌ی کاربر، تغییر بده. در نتیجه کاربر از این به بعد مجوز اجرا کردن این فایل را خواهد داشت.

لازم به ذکر است که منظور از کاربر، کاربری‌ست که خط فرمان را در اختیار دارد و در حال اجرای دستور یا فرمان است.


**حذف بیتِ مجوز از یک فایل**

```$ chmod u-x myfile```

**اضافه کردن چند بیتِ مجوز به یک فایل**

```$ chmod ug+w```

یک راه دیگر نیز برای عوض کردن مجوزها استفاده از فرمت عددی است. این روش به شما اجازه‌ی تغییر تمامی مجوزها را در آن واحد می‌دهد. به جای استفاده از r و w و یا x برای اضافه و کم کردن بیت مجوزها می تواند از یک عدد برای یک دسته از مجوزها استفاده کنید. به عبارتی دیگر لازم نیست که از u برای کاربر و از g برای مشخص کردن گروه استفاده کنید.

نمونه‌های عددی را در زیر می‌توانید ببینید:


+ 4: مجوز خواندن
+ 2: مجوز نوشتن
+ 1: مجوز اجرا شدن

نگاهی به یک مثال بیندازیم:

```$ chmod 755 myfile```

می‌توانید حدس بزنید که در دستور بالا، چه مجوزهایی به فایل مورد نظر ما داده شده است؟ 775 کلِ دسته‌ی مجوزهای ما را مورد پوشش خود قرار می‌دهد. اولین عدد یعنی (7) مجوزهای کاربر، دومین عدد یعنی (5) مجوزهای گروه و سومین عدد یعنی (5) هم مجوزهای سایرین را تعیین می‌کند.

ولی ۵ و ۷ که جزو عددهای بالا نیستند؟ این عددها از کجا آمده‌اند؟ از آنجایی که قرار است کل مجوزهای کاربر یا گروه یا سایرین با استفاده از یک عدد انجام شود، شاید بد نباشد کمی هم ریاضیات را در این کار دخالت دهیم. اما چطور؟

با مجوز کاربر یعنی عدد (7) شروع کنیم. این عدد برابر است با: 7 = 4 + 2 + 1 به عبارتی هفت مجموع عدد سه مجوز خواندن، نوشتن و ا جرا شدن است و در نتیجه کاربر هر سه مجوز را دارد.

گروه و سایرین (تمامی دیگر کاربران) که به ترتیب دو عدد بعدی نماینده‌ی آن‌ها هستند با (5) مشخص شده‌اند. پنج مجموع عددهای 1 و 4 است و به عبارتی گروه و سایرین مجوز خواندن و اجرا کردن فایل مورد نظر را دارند.

و البته یک نکته‌ی دیگر و آن اینکه به صورت هوا و هوسی و دل‌بخواهی مجوزها را دستکاری نکنید چرا که ممکن است فایل‌های حساس را در معرض سوءاستفاده‌ی سایرین قرار دهید و برای خودتان دردسر درست کنید. برای استفاده کاربردی و درست از chmod بهترین کار این است که جانب احتیاط را رعایت کنید و قبل از انجام تغییر مجوزها، دستور را بررسی کنید. به هر حال در بسیاری از مواقع نیاز به آن خواهید داشت و اگر هوشیارانه از آن استفاده کنید هیچگونه خطری را برای خود به جان نخواهید خرید.


## تمرین

مجوزهای چند فایل ساده‌ی متنی را تغییر دهید و تغییرات ایجاد شده در بیت‌های آن را با استفاده از دستور ls -l رویت کنید.


## سوال آزمون

در فرمت عددی مجوزها، چه عددی نشان‌دهنده‌ی مجوز خواندن برای یک فایل است؟


## پاسخ آزمون

4
36 changes: 36 additions & 0 deletions lessons/locales/fa-persian/access/ownership-permissions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# حق مالکیت


## محتویات درس

علاوه بر تغییر در مجوزهای فایل، شما می‌توانید گروه یا حتی کاربر مالک فایل را تغییر دهید.

**تغییر کاربر مالک فایل**

```$ sudo chown patty myfile```

با توجه به قرار گرفتن sudo در ابتدای دستور، و با داشتن مجوزهای لازم برای این کار، بدون توجه به اینکه مالک اولیه فایل کیست، این دستور به اجبار patty را مالک فایل (myfile) می‌کند.

**تغییر مالکیت گروه فایل**

```$ sudo chgrp whales myfile```

این دستور گروه فایل (myfile) را به whales تغییر می‌دهد.

**تغییر کاربر و گروهِ مالک فایل در آن واحد**

اگر شما بین نام کاربر و نام گروه دو نقطه قرار دهید می‌توانید هر دوی این مقادیر را در آن واحد تغییر دهید. ابتدا نام کاربر و سپس نام گروهی که می‌خواهید مالکیت فایل را در اختیار بگیرند قرار دهید.

```$ sudo chown patty:whales myfile```

## تمرین

چند فایل آزمایشی را انتخاب کنید و مالیکت گروه و کاربر آن را تغییر دهید. بعد از آن با استفاده از دستور ls -l نگاهی به مجوزهای آن‌ها بیندازید.

## سؤال آزمون

از چه دستوری برای تغییر کاربر مالک فایل استفاده می‌کنید؟

## پاسخ آزمون

chown
40 changes: 40 additions & 0 deletions lessons/locales/fa-persian/access/process-permissions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# مجوزهای یک پروسه

## محتویات درس

نوبت به مجوزهای پروسه «Process» رسید. یادتان هست که گفتم اجرای دستور passwd وقتی که بیت مجوز SUID فعال است برنامه را با دسترسی روت اجرا می‌کند؟ این موضوع، درست است، ولی آیا به این معناست که زمانی که به صورت موقتی کاربر روت هستید می‌توانید پسورد سایر کاربران را نیز تغییر دهید؟ خوشبختانه خیر!

این اتفاق به خاطر UIDهای زیادی که لینوکس به کار برده است، می‌افتد. سه UID به هر پروسه‌ای گره خورده است:

زمانی که یک پروسه را اجرا می‌کنید، این پروسه با مجوزهایی مشابه با مجوزهای کاربر و گروهی که آن را شروع کرده‌اند، اجرا می‌شود. این مورد به عنوان **شناسه‌ی کاربر تحت تأثیر** یا **effective user ID** شناخته می‌شود. این UID برای اعطای مجوزهای دسترسی به یک پروسه استفاده می‌شود. بنابراین اگر Bob دستور touch را اجرا کند، آن پروسه با شناسه‌ی او اجرا شده و هر فایلی که توسط آن ساخته شود به مالکیت Bob در خواهد آمد.

البته یک UID دیگر به اسم **شناسه کاربر حقیقی** یا **real user ID** نیز هست که به شناسه کاربری که پروسه را شروع کرده اطلاق می‌شود. این شناسه‌ها برای پیگیری کاربری که پروسه را اجرا کرده، مورد استفاده قرار می‌گیرد.

آخرین UID، **شناسه کاربر ذخیره‌شده** یا **saved user ID** است که به یک پروسه اجازه می‌دهد تا از شناسه‌ی تحت تأثیر به شناسه‌ی حقیقی و بالعکس تغییر کند. این UID به این دلیل به دردبخور است که ما همیشه نمی‌خواهیم پروسه‌هایمان با دسترسی‌های اعطا شده‌‌ی دارای مجوزهای بالا اجرا شوند. به عبارتی کار درست این است که در زمان‌های خاص از مجوزهای خاص استفاده کنیم.

اکنون با نگاهی به فرمان passwd تکه‌های پازلمان را به یکدیگر می‌چسبانیم.

زمانی که فرمان passwd اجرا می‌شود، شناسه‌ی کاربر تحت تأثیر همان شناسه‌ی کاربر شماست، فرض کنید اکنون این شناسه 500 است. خب ولی یک نکته اینجاست، دستور passwd یک مجوز فعال SUID نیز دارد. در نتیجه زمانی که شما آن را اجرا می‌کنید، شناسه‌ی کاربر تحت تأثیر 0 است (0 شناسه‌ی کاربر روت است). در نتیجه برنامه به فایل با مجوز روت، دسترسی دارد.

حالا که مزه‌ی قدرت زیر زبانتان آمد شاید بد نباشد که پسورد Sally را هم عوض کنید. Sally شناسه‌ی کاربر 600 دارد. شانس با شما یار نیست چرا که خوشبختانه پروسه، شناسه کاربر حقیقی شما را نیز دارد که در مثال ما 500 است. به عبارتی به این خاطر که شناسه‌ی کاربرتان 500 است و پروسه این موضوع را می‌داند، نمی‌توانید پسورد کسی که شناسه‌ی کاربرش 600 است را تغییر دهید. (البته این مورد اگر شما یک سوپریوزر یا superuser بر روی دستگاه باشید می‌تواند دور زده شود و کنترل تمام قسمت‌های سیستم من جمله تغییر پسوردها را به دستتان بسپارد).

با توجه به اینکه شما passwd را اجرا می‌کنید، فرمان، پروسه را با شناسه کاربر حقیقی (real UID) اجرا کرده و سپس و شناسه‌ی کاربر صاحب فایل را ذخیره می‌کنید (شناسه کاربر تحت تأثیر یا effective UID) در نتیجه شما می‌توانید بین این شناسه‌ها عقب و جلو شوید. در حقیقت نیازی نیست در زمانی که الزام به تغییر با دسترسی روت وجود ندارد، همه‌ی فایل‌ها را با مجوز روت دستکاری کنید.

بیشتر اوقات شناسه کاربر حقیقی و شناسه کاربر تحت تأثیر یکی هستند اما در برخی موقعیت‌ها مانند زمانی که از فرمان passwd استفاده می‌کنید، آن‌ها تغییر می‌کنند.

## تمرین

ما هنوز در خصوص پروسه‌ها صحبت نکرده‌ایم ولی می‌توانیم این تغییرات را در حال حاضر ملاحظه کنیم:

+ یک پنجره ترمینال باز کنید و دستور **watch -n 1 "ps aux | grep passwd"‎** را صادر کنید. این کار پروسه‌ی passwd را زیر نظر می‌گیرد.
+ یک ترمینال دیگر باز کنید و دستور **passwd** را اجرا کنید.
+ حالا به پنجره‌ی اولی که باز کردید نگاه بیندازید. می‌بینید که یک پروسه برای passwd اجرا شده است.
+ اولین ستون در جدول پروسه، شناسه کاربر تحت تأثیر است. و نگاه کنید! اینکه کاربر روت است!

## سؤال آزمون

چه شناسه‌ی کاربری تصمیم می‌گیرد که چه دسترسی‌هایی را به پروسه اعطا کند؟

## پاسخ آزمون

effective
33 changes: 33 additions & 0 deletions lessons/locales/fa-persian/access/setgid-set-group-id.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Setgid

## محتویات درس

مشابه با دسته‌ی بیتِ مجوز شناسه کاربر، یک دسته بیتِ مجوز برای شناسه‌ی گروه با نام SGID وجود دارد. این بیت به برنامه اجازه می‌تواند تا در صورتی که توسط یکی از اعضای آن گروهِ مورد نظر فراخوانده شد، اجرا شود.

نگاهی به یک مثال بیندازیم:

```$ ls -l /usr/bin/wall```

```-rwxr-sr-x 1 root tty 19024 Dec 14 11:45 /usr/bin/wall```

اکنون می‌توانیم ببینیم که بیت مجوز، در دسته‌ی مجوز گروه وجود دارد.

**دستکاریِ SGID**

```$ sudo chmod g+s myfile```

```$ sudo chmod 2555 myfile```

عدد نمایش‌دهنده‌ی SGID دو (2) است.

## تمرین

این درس تمرینی ندارد. خوش بگذرانید!

## سؤال آزمون

چه عددی نمایش‌دهنده‌ی SGID است؟

## Quiz Answer

2
Loading

0 comments on commit 2eb8172

Please sign in to comment.