chmod
chmodهو أمرٌ في سطر الأوامر يُستخدم لتغيير أذونات الوصول وعلامات الوضع الخاص للملفات (بما في ذلك الملفات الخاصة مثل المجلدات ). الاسم اختصارٌ لعبارة " تغيير الوضع " ، حيث يشير "الوضع" إلى الأذونات والعلامات معًا. [ 1 ] [ 2 ]
نشأ هذا الأمر في نظام التشغيل AT&T Unix الإصدار 1 وكان حصريًا لأنظمة التشغيل Unix وأنظمة التشغيل الشبيهة بـ Unix حتى تم نقله إلى أنظمة تشغيل أخرى مثل Windows (في UnxUtils ) [ 3 ] و IBM i . [ 4 ]
في أنظمة التشغيل يونكس وما يشابهها ، يُتيح استدعاء النظام الذي يحمل نفس اسم الأمر، chmod() ، الوصول إلى بيانات التحكم في الوصول الأساسية. ويكشف الأمر إمكانيات استدعاء النظام لمستخدم سطر الأوامر.
مع تزايد الحاجة إلى تحسين أذونات نظام الملفات ، تمت إضافة قوائم التحكم في الوصول [ 5 ] إلى العديد من أنظمة الملفات لتعزيز الأوضاع التي يتم التحكم فيها عبر chmod.
تمت كتابة تنفيذ chmodbundled في GNU coreutils بواسطة ديفيد ماكنزي وجيم مايرينغ. [ 6 ]
يستخدم
على الرغم من اختلاف صيغة الأمر قليلاً باختلاف التطبيق، إلا أنه يقبل عمومًا إما قيمة ثمانية واحدة (تحدد جميع بتات الوضع في كل ملف)، أو قائمة مفصولة بفواصل من المحددات الرمزية (تصف كيفية تغيير بتات الوضع الحالية لكل ملف). أما الوسائط المتبقية فهي قائمة بمسارات الملفات المراد تعديلها. [ 7 ]
لا يُسمح بتغيير الأذونات إلا للمستخدم المتميز (root) ومالك الملف.
إذا تم تحديد رابط رمزي ، فسيتم تعديل بتات الوضع الخاصة بالهدف من الرابط. وعادةً لا تُستخدم الأذونات المرتبطة مباشرةً بإدخال نظام ملفات الرابط الرمزي.
خيارات
قد تتضمن خيارات سطر الأوامر الاختيارية ما يلي:
-Rتكراري؛ يشمل الملفات والمجلدات الفرعية الموجودة في المجلدات المحددة-vمُفصّل؛ سجل أسماء الملفات المُعدّلة
الترميز الثماني
عند إدخال وسيطة أذونات رقمية، chmodيتعامل الأمر معها كرقم ثماني ، [ a ] ويستبدل جميع بتات الوضع لكل ملف. (على الرغم من تحديد أربعة أرقام، 0يمكن حذف الأرقام البادئة.) [ 8 ]
يوجد اثنا عشر بتًا للوضع القياسي، تتألف من ثلاثة بتات خاصة ( setuid وsetgid وsticky)، وثلاث مجموعات أذونات (تتحكم في الوصول بواسطة المستخدم والمجموعة والآخرين ) من 3 بتات لكل منها ( قراءة وكتابة وتنفيذ / مسح ) ؛ يمنح كل بت إذن الوصول إذا تم تعيينه (1) أو يمنع الوصول إذا تم مسحه (0).
بما أن الرقم الثماني يمثل قيمة من 3 بتات، يمكن تمثيل بتات الوضع الاثني عشر بأربعة أرقام ثمانية. chmodيقبل النظام ما يصل إلى أربعة أرقام ويستخدم 0 للأرقام اليسرى غير المحددة (كما هو معتاد في التمثيل العددي). عمليًا، يُحدد عادةً ثلاثة أرقام لأن الأوضاع الخاصة نادرًا ما تُستخدم، وعادةً ما يتم تحديد فئة المستخدم.
في سياق الرقم الثماني، يمثل كل بت من بتات العملية قيمة عددية: القراءة: 4، الكتابة: 2، والتنفيذ: 1. يوضح الجدول التالي العلاقة بين قيم الأرقام الثمانية وقيمة عمليات الفئة.
| 8 | أجزاء | rwx | العمليات الممنوحة |
|---|---|---|---|
| 7 | 4 + 2 + 1 | rwx | القراءة والكتابة والتنفيذ |
| 6 | 4 + 2 | rw- | القراءة والكتابة |
| 5 | 4 + 1 | r-x | اقرأ ونفذ |
| 4 | 4 | r-- | للقراءة فقط |
| 3 | 2 + 1 | -wx | كتابة وتنفيذ |
| 2 | 2 | -w- | للكتابة فقط |
| 1 | 1 | --x | تنفيذ فقط |
| 0 | --- | لا أحد |
يمكن للأمر statعرض أذونات الملف بصيغة ثمانية. على سبيل المثال:
$ stat -c %a findPhoneNumbers.sh 754تشير القيمة المُبلغ عنها 754إلى الأذونات التالية:
- فئة المستخدم: القراءة والكتابة والتنفيذ؛ 7 => (4 + 2 + 1)
- فئة المجموعة: القراءة والتنفيذ؛ 5 => (4 + 1)
- فئة أخرى: للقراءة فقط؛ (4)
يُسمح بتنفيذ الكود إذا كان فرديًا ( أي 1 أو 3 أو 5 أو 7). ويُسمح بقراءة الكود إذا كان أكبر من أو يساوي 4 (أي 4 أو 5 أو 6 أو 7). ويُسمح بكتابة الكود إذا كان 2 أو 3 أو 6 أو 7.
الترميز الرمزي
يقبل الأمر chmodرموزًا تحدد كيفية تعديل الأذونات الحالية. [ 9 ] يقبل الأمر قائمة من المحددات مفصولة بفواصل، مثل:[classes]+|-|=operations
تُحدد الفئات صلاحيات المستخدمين. يمكن لمحدد التغيير اختيار فئة واحدة بتضمين رمزها، أو عدة فئات بتضمين رمز كل فئة بدون فاصل، أو جميع الفئات بعدم تحديد رمز؛ عند استخدام الطريقة الأخيرة، تبقى بتات قناع umask دون تغيير. [ 10 ] تشمل محددات الفئات ما يلي:
| رمز | وصف |
|---|---|
| u | المستخدم: مالك الملف |
| ز | المجموعة: أعضاء مجموعة الملف |
| o | آخرون: المستخدمون الذين ليسوا مالكي الملف ولا أعضاء في مجموعة الملف |
| أ | جميع الفئات الثلاث؛ نفس الشيءugo |
بما أن الملكية هي المفتاح للتحكم في الوصول، وبما أن المواصفات الرمزية تستخدم الاختصار o ، يعتقد البعض خطأً أنها تعني المالك ، بينما هي في الواقع اختصار لكلمات أخرى .
تشمل عوامل التغيير ما يلي:
| رمز | وصف |
|---|---|
| + | إضافة عمليات/علامات |
| - | إزالة العمليات/الأعلام |
| = | يُحدد حقل العمليات/الأعلام بالكامل؛ ويمنح العمليات المحددة ويمنع العمليات الأخرى. |
يمكن تحديد العمليات على النحو التالي:
| رمز | وصف |
|---|---|
| ر | قراءة ملف عادي أو سرد محتويات دليل |
| w | الكتابة إلى ملف |
| x | تنفيذ ملف عادي أو تكرار شجرة دليل |
| X | تنفيذ خاص: يحدد هذا الخيار تطبيق صلاحية التنفيذ على الدلائل (بغض النظر عن أذوناتها الحالية) وعلى الملفات التي مُنحت لها بالفعل صلاحية تنفيذ واحدة على الأقل (لأي فئة)؛ وهو مفيد فقط مع عملية معينة +، وعادةً ما يُستخدم مع خيار آخر -Rلمنح مجموعة أو جهات أخرى حق الوصول إلى شجرة الدلائل دون تعيين صلاحية التنفيذ على الملفات العادية، وهو ما يحدث عادةً مع chmod -R a+rx .خيار آخر؛ بدلاً من ذلك، استخدم خيارًا آخر.chmod -R a+rX . |
| s | وضع s ettuid أو وضع s etgid |
| ت | الوضع اللزج |
تدعم معظم chmodالتطبيقات تحديد الأوضاع الخاصة بالنظام الثماني، لكن بعضها لا يدعم ذلك مما يتطلب استخدام الترميز الرمزي.
يُمكن للأمر lsعرض أذونات الملفات بصيغة رمزية مشابهة لتلك المستخدمة مع الأمر ` chmod.`. ls -lيعرض الأمر `.` الأذونات بصيغة تتكون من 10 أحرف. يشير الحرف الأول إلى نوع مدخل نظام الملفات، مثل شرطة (-) للملفات العادية و'd' للمجلدات. يلي ذلك ثلاث مجموعات من ثلاثة أحرف تشير إلى أذونات القراءة والكتابة والتنفيذ، مُصنفة حسب المستخدم والمجموعة وفئات أخرى. كل خانة إما شرطة (-) للدلالة على عدم وجود إذن، أو اختصار من حرف واحد للإذن للدلالة على منحه. على سبيل المثال:
$ ls -l findPhoneNumbers.sh -rwxr-xr-- 1 dgerman Staff 823 16 ديسمبر 15:03 findPhoneNumbers.shيبدأ مُحدِّد الأذونات -rwxr-xr--بشرطة، مما يدل على أنه findPhoneNumbers.shملف عادي وليس مجلدًا. rwxتشير الأحرف الثلاثة التالية إلى إمكانية قراءة الملف وكتابته وتنفيذه من قِبل المستخدم المالك dgerman. وتشير الأحرف الثلاثة التالية r-xإلى إمكانية قراءة الملف وتنفيذه من قِبل أعضاء المجموعة staff. أما الأحرف الثلاثة الأخيرة r--فتشير إلى أن الملف للقراءة فقط بالنسبة للمستخدمين الآخرين.
أمثلة
أضف إذن الكتابة إلى فئة المجموعة الخاصة بدليل، مما يسمح للمستخدمين في نفس المجموعة بإضافة ملفات:
$ ls -ld dir # قبل drwxr-xr-x 2 jsmitt northregion 96 8 أبريل 12:53 shared_dir $ chmod g+w dir $ ls -ld dir # بعد drwxrwxr-x 2 jsmitt northregion 96 8 أبريل 12:53 shared_dirقم بإزالة إذن الكتابة لجميع الفئات ، مما يمنع أي شخص من الكتابة إلى الملف:
$ ls -l ourBestReferenceFile -rw-rw-r-- 2 tmiller northregion 96 Apr 8 12:53 ourBestReferenceFile $ chmod a-w ourBestReferenceFile $ ls -l ourBestReferenceFile -r--r--r-- 2 tmiller northregion 96 Apr 8 12:53 ourBestReferenceFileقم بتعيين أذونات فئات المستخدم والمجموعة للقراءة والتنفيذ فقط، مع عدم وجود إذن للكتابة ، مما يمنع أي شخص من إضافة ملفات:
$ ls -ld signalLib drwxr----- 2 ebowman northregion 96 أبريل 8 12:53 signalLib $ chmod ug = rx signalLib $ ls -ld signalLib dr-xr-x--- 2 ebowman northregion 96 8 أبريل 12:53 signalLibقم بتمكين القراءة والكتابة لفئة المستخدم مع جعلها للقراءة فقط للمجموعة والآخرين:
$ chmod u = rw,go = r sample $ ls -ld sample drw-r--r-- 2 oschultz warehousing 96 Dec 8 12:53 sampleلتعيين الوصول بشكل متكرر إلى الدليل docs/ والملفات الموجودة بداخله:
chmod -R u+w docs/
لتعيين مستخدم ومجموعة للقراءة والكتابة فقط، وتعيين الآخرين للقراءة فقط:
chmod 664 file
لتعيين المستخدم للقراءة والكتابة والتنفيذ فقط، وتعيين المجموعة والآخرين للقراءة فقط:
chmod 744 file
لتعيين بت التثبيت بالإضافة إلى أذونات المستخدم والمجموعة والأذونات الأخرى:
chmod 1755 file
لتعيين معرّف المستخدم (UID) بالإضافة إلى أذونات المستخدم والمجموعة والأذونات الأخرى:
chmod 4755 file
لتعيين معرّف المجموعة (GID) بالإضافة إلى أذونات المستخدم والمجموعة والأذونات الأخرى:
chmod 2755 file
انظر أيضاً
attribcacls، يقوم بتعديل قوائم التحكم في الوصولchattr، يغير خصائص الملفchgrp، يغير مجموعة الملفاتchown، يغير مالك الملف- معرّف المجموعة – رقم مجموعة حسابات نظام Unix/POSIX؛ قيمة رقمية تُستخدم لتمثيل مجموعة محددة
- قائمة أوامر POSIX
- معرّف المستخدم – قيمة تحدد حساب المستخدم في أنظمة التشغيل يونكس والأنظمة الشبيهة بيونكس
umaskيقيد الأذونات عند إنشاء الملف
ملحوظات
- لماذا النظام الثماني بدلاً من النظام العشري؟ على الرغم من ندرة استخدامه اليوم، إلا أن النظام الثماني كان مفيدًا للغاية خلال المراحل الأولى لتطوير نظام يونكس، وذلك لأن مجموعات متكررة من 3 بتات كانت شائعة في البنية الفيزيائية لأجهزة الكمبيوتر آنذاك، وكانت هذه البتات أسهل في القراءة والفهم عند ترميزها كأرقام ثمانية، تمامًا كما هو الحال مع مجموعات 4 بتات عند تجميعها في أرقام سداسية عشرية. ويُعد التعبير العددي عن أذونات نظام الملفات بالنظام الثماني أحد البقايا القليلة من تلك الحقبة.
مراجع
- ↑ يتم عرض الأوضاع/الأذونات عند سرد الملفات بتنسيق طويل.
- ↑ "دليل استخدام الأمر chmod" . catcode.com . مؤرشف من الأصل بتاريخ 20 مايو 2000. تم الاطلاع عليه بتاريخ 26 أغسطس 2008 .
- ↑ "نسخ أصلية لنظام ويندوز 32 لبعض أدوات جنو" . unxutils.sourceforge.net . مؤرشف من الأصل في 9 فبراير 2006. تم الاطلاع عليه في 9 أغسطس 2025 .
- ↑ آي بي إم . "برمجة Qshell لنظام IBM System i الإصدار 7.2" (ملف PDF) . آي بي إم . مؤرشف (ملف PDF) من الأصل بتاريخ 18 سبتمبر 2020. تم الاطلاع عليه بتاريخ 5 سبتمبر 2020 .
- ↑ "إدارة نظام AIX 5.3" . مركز معارف IBM . IBM. مؤرشف من الأصل في 4 مارس 2016. تم الاطلاع عليه في 30 أغسطس 2015 .
- ↑ "chmod(1): تغيير بتات وضع الملف - صفحة دليل لينكس" . linux.die.net . مؤرشف من الأصل في 9 يناير 2019. تم الاطلاع عليه في 6 يناير 2019 .
- ↑ "صفحة دليل chmod مع أمثلة وحاسبة - لينكس - SS64.com" . ss64.com . مؤرشفة من الأصل بتاريخ 12 فبراير 2003. تم الاطلاع عليها بتاريخ 12 سبتمبر 2020 .(لاحظ أن "الفاصلة بين الأسطر" هي ميزة خاصة بالصدفة ، وليست ميزة خاصة بأمر chmod نفسه.)
- ↑ يختلف هذا عن لغة "C"، حيث أن
0البادئة للأعداد الثمانية هي بقايا من فترتها المبكرة. - ↑ "مرجع أوامر AIX 5.5" . مركز معارف IBM . IBM. مؤرشف من الأصل في 4 مارس 2016. تم الاطلاع عليه في 30 أغسطس 2015 .
- ↑ "إخفاء الأذونات باستخدام umask و chmod والأذونات الثمانية 777" . teaching.idallen.com . مؤرشف من الأصل بتاريخ 22 فبراير 2020. تم الاطلاع عليه بتاريخ 9 مارس 2020 .
روابط خارجية
- تغيير أوضاع الملفات – دليل الأوامر العامة لنظام FreeBSD
- – دليل مبرمج الخطة 9 ، المجلد 1
- – دليل أوامر Inferno العامة
chmod— صفحة دليل من GNU coreutils .- دليل "ضبط الأذونات" الخاص بـ GNU
- CHMOD-Win 3.0 — برنامج مجاني لتحويل ACL ↔ CHMOD في نظام ويندوز.
- برنامج تعليمي للمبتدئين مع مثال "مباشر" عبر الإنترنت
- أذونات نظام الملفات
- أمان أنظمة التشغيل
- برامج يونكس القياسية
- البرامج المتعلقة بنظام ملفات يونكس
- أدوات يونكس SUS2008
- أوامر الخطة 9
- أوامر نظام التشغيل إنفيرنو
- أوامر IBM i Qshell
