كيفية استخدام أمر chmod على نظام Linux
نشرت: 2022-10-25 تحكم في من يمكنه الوصول إلى الملفات ، والبحث في الدلائل ، وتشغيل البرامج النصية باستخدام أمر chmod
في Linux. يعدل هذا الأمر أذونات ملفات Linux ، والتي تبدو معقدة للوهلة الأولى ولكنها في الواقع بسيطة جدًا بمجرد معرفة كيفية عملها.
يعدل chmod أذونات الملف
في Linux ، يتم التحكم في من يمكنه فعل ما يتعلق بملف أو دليل من خلال مجموعات من الأذونات. هناك ثلاث مجموعات من الأذونات. مجموعة واحدة لمالك الملف ، ومجموعة أخرى لأعضاء مجموعة الملف ، ومجموعة نهائية لأي شخص آخر.
تتحكم الأذونات في الإجراءات التي يمكن تنفيذها على الملف أو الدليل. فهي إما تسمح بقراءة الملف أو تعديله أو تمنعه ، أو تنفيذه ، إذا كان نصًا أو برنامجًا. بالنسبة إلى الدليل ، تتحكم الأذونات في من يمكنه cd
في الدليل ومن يمكنه إنشاء الملفات أو تعديلها داخل الدليل.
يمكنك استخدام الأمر chmod
لتعيين كل من هذه الأذونات. لمعرفة الأذونات التي تم تعيينها على ملف أو دليل ، يمكننا استخدام ls
.
عرض وفهم أذونات الملفات
يمكننا استخدام الخيار -l
(تنسيق طويل) لجعل ls
يسرد أذونات الملفات للملفات والأدلة.
ls -l
في كل سطر ، يحدد الحرف الأول نوع الإدخال الذي يتم سرده. إذا كانت شرطة ( -
) فهي عبارة عن ملف. إذا كان هو الحرف d
فهو دليل.
تمثل الأحرف التسعة التالية الإعدادات الخاصة بمجموعات الأذونات الثلاث.
- تُظهر الأحرف الثلاثة الأولى الأذونات الممنوحة للمستخدم الذي يمتلك الملف ( أذونات المستخدم ).
- تعرض الأحرف الثلاثة الوسطى الأذونات الممنوحة لأعضاء مجموعة الملف ( أذونات المجموعة ).
- تُظهر الأحرف الثلاثة الأخيرة الأذونات لأي شخص ليس في الفئتين الأوليين ( أذونات أخرى ).
هناك ثلاثة أحرف في كل مجموعة من الأذونات. الأحرف هي مؤشرات على وجود أو عدم وجود أحد الأذونات. هم إما شرطة ( -
) أو حرف. إذا كان الحرف عبارة عن شرطة ، فهذا يعني أنه لم يتم منح الإذن. إذا كان الحرف هو r
أو w
أو x
، فقد تم منح هذا الإذن.
تمثل الحروف:
- r : قراءة الأذونات. يمكن فتح الملف وعرض محتواه.
- w : أذونات الكتابة. يمكن تحرير الملف وتعديله وحذفه.
- x : تنفيذ الأذونات. إذا كان الملف عبارة عن برنامج نصي أو برنامج ، فيمكن تشغيله (تنفيذه).
فمثلا:
-
---
يعني أنه لم يتم منح أي أذونات على الإطلاق. -
rwx
يعني أنه تم منح الأذونات الكاملة. مؤشرات القراءة والكتابة والتنفيذ كلها موجودة.
في لقطة الشاشة الخاصة بنا ، يبدأ السطر الأول بحرف d
. يشير هذا السطر إلى دليل يسمى "أرشيف". مالك الدليل هو "dave" ، واسم المجموعة التي ينتمي إليها الدليل يسمى أيضًا "dave".
الأحرف الثلاثة التالية هي أذونات المستخدم لهذا الدليل. هذه تظهر أن المالك لديه أذونات كاملة. جميع الأحرف r
و w
و x
موجودة. هذا يعني أن المستخدم ديف قد قرأ وكتب ونفذ أذونات لهذا الدليل.
المجموعة الثانية من ثلاثة أحرف هي أذونات المجموعة ، وهذه هي rx
. تظهر هذه أن أعضاء مجموعة ديف قد قرأوا ونفذوا أذونات لهذا الدليل. هذا يعني أنه يمكنهم سرد الملفات ومحتوياتها في الدليل ، ويمكنهم cd
(التنفيذ) في هذا الدليل. ليس لديهم أذونات الكتابة ، لذلك لا يمكنهم إنشاء الملفات أو تحريرها أو حذفها.
المجموعة النهائية المكونة من ثلاثة أحرف هي أيضًا rx
. تنطبق هذه الأذونات على الأشخاص الذين لا تحكمهم أول مجموعتين من الأذونات. قرأ هؤلاء الأشخاص (يطلق عليهم "آخرون") الأذونات وتنفيذها في هذا الدليل.
لذلك ، للتلخيص ، قرأ أعضاء المجموعة وغيرهم الأذونات وتنفيذها. المالك ، وهو مستخدم يُدعى ديف ، لديه أيضًا أذونات الكتابة.
بالنسبة لجميع الملفات الأخرى (باستثناء ملف البرنامج النصي mh.sh) ، قام ديف وأعضاء مجموعة ديف بقراءة وكتابة الخصائص على الملفات ، بينما يمتلك الآخرون أذونات قراءة فقط.
بالنسبة للحالة الخاصة لملف البرنامج النصي mh.sh ، قام المالك ديف وأعضاء المجموعة بقراءة الأذونات وكتابتها وتنفيذها ، بينما قام الآخرون بقراءة الأذونات وتنفيذها فقط.
فهم بناء جملة الإذن
لاستخدام chmod
لتعيين الأذونات ، نحتاج إلى إخباره:
- من: لمن نقوم بتعيين الأذونات.
- ماذا : ما التغيير الذي نقوم به؟ هل نقوم بإضافة أو إزالة الإذن؟
- أي من الأذونات نقوم بتعيينها؟
نستخدم المؤشرات لتمثيل هذه القيم ، ونشكل "بيانات أذونات" قصيرة مثل u+x
، حيث تعني "u" "المستخدم" (who) ، وتعني "+" إضافة (ماذا) ، وتعني "x" إذن التنفيذ (أيّ).
قيم "من" التي يمكننا استخدامها هي:
- u : المستخدم ، ويعني صاحب الملف.
- g : المجموعة ، أي أعضاء المجموعة التي ينتمي إليها الملف.
- o : الآخرون ، أي الأشخاص الذين لا يخضعون لأذونات
u
وg
. - أ : الكل ، أي كل ما سبق.
إذا لم يتم استخدام أي من هؤلاء ، يتصرف chmod
كما لو تم استخدام " a
".
قيم "ماذا" التي يمكننا استخدامها هي:
- - : علامة ناقص. يزيل الإذن.
- + : علامة الجمع. يمنح الإذن. يضاف الإذن إلى الأذونات الموجودة. إذا كنت تريد الحصول على هذا الإذن ومجموعة الأذونات هذه فقط ، فاستخدم الخيار
=
، الموضح أدناه. - = : علامة يساوي. تعيين إذن وإزالة الآخرين.
القيم "التي" يمكننا استخدامها هي:
- r : إذن القراءة.
- w : إذن الكتابة.
- x : إذن التنفيذ.
ضبط وتعديل الأذونات
لنفترض أن لدينا ملفًا يتمتع فيه كل شخص بأذونات كاملة.
ls -l new_ file.txt
نريد أن يكون لدى المستخدم أذونات القراءة والكتابة وأن يكون لدى المجموعة والمستخدمين الآخرين أذونات القراءة فقط. يمكننا القيام به باستخدام الأمر التالي:
chmod u = rw، og = r new_file.txt
استخدام عامل التشغيل "=" يعني أننا نقوم بمسح أي أذونات موجودة ثم تعيين الأذونات المحددة.
دعنا نتحقق من الإذن الجديد لهذا الملف:
ls -l new_file.txt
تمت إزالة الأذونات الحالية ، وتم تعيين الأذونات الجديدة كما توقعنا.
ماذا عن إضافة إذن دون إزالة إعدادات الأذونات الحالية؟ يمكننا القيام بذلك بسهولة أيضًا.
لنفترض أن لدينا ملف نصي انتهينا من تحريره. نحن بحاجة إلى جعله قابلاً للتنفيذ لجميع المستخدمين. تبدو أذوناته الحالية كما يلي:
ls -l new_script.sh
يمكننا إضافة إذن التنفيذ للجميع بالأمر التالي:
chmod a + x new_script.sh
إذا ألقينا نظرة على الأذونات ، فسنرى أنه تم الآن منح إذن التنفيذ للجميع ، ولا تزال الأذونات الحالية سارية.
ls -l new_script.sh
كان بإمكاننا تحقيق نفس الشيء بدون "a" في عبارة "a + x". الأمر التالي سيعمل أيضًا.
chmod + x new_script.sh
تعيين أذونات لملفات متعددة
يمكننا تطبيق أذونات على ملفات متعددة في وقت واحد.
هذه هي الملفات الموجودة في الدليل الحالي:
ls -l
لنفترض أننا نريد إزالة أذونات القراءة للمستخدمين "الآخرين" من الملفات التي لها امتداد ".page". يمكننا القيام بذلك بالأمر التالي:
chmod أو * .page
دعنا نتحقق من تأثير ذلك:
ls -l
كما نرى ، تمت إزالة إذن القراءة من ملفات ".page" لفئة المستخدمين "الأخرى". لم تتأثر أي ملفات أخرى.
إذا أردنا تضمين الملفات في الدلائل الفرعية ، فربما استخدمنا الخيار -R
(العودي).
chmod -R أو * .page
الاختزال العددي
هناك طريقة أخرى لاستخدام chmod
وهي توفير الأذونات التي ترغب في منحها للمالك والمجموعة والآخرين كرقم مكون من ثلاثة أرقام. يمثل الرقم الموجود في أقصى اليسار أذونات المالك. يمثل الرقم الأوسط أذونات أعضاء المجموعة. يمثل الرقم الموجود في أقصى اليمين الأذونات للآخرين.
الأرقام التي يمكنك استخدامها وما تمثله مذكورة هنا:
- 0: (000) لا يوجد إذن.
- 1: (001) إذن التنفيذ.
- 2: (010) إذن كتابة.
- 3: (011) كتابة الأذونات وتنفيذها.
- 4: (100) إذن قراءة.
- 5: (101) قراءة وتنفيذ الأذونات.
- 6: (110) أذونات القراءة والكتابة.
- 7: (111) أذونات قراءة وكتابة وتنفيذ.
يتم تمثيل كل من الأذونات الثلاثة بواحدة من البتات في المكافئ الثنائي للرقم العشري. إذن 5 ، وهو 101 في النظام الثنائي ، يعني القراءة والتنفيذ. 2 ، وهو 010 في ثنائي ، يعني إذن الكتابة.
باستخدام هذه الطريقة ، يمكنك تعيين الأذونات التي ترغب في الحصول عليها ؛ لم تقم بإضافة هذه الأذونات إلى الأذونات الموجودة. لذلك إذا كانت أذونات القراءة والكتابة موجودة بالفعل ، فسيتعين عليك استخدام 7 (111) لإضافة أذونات التنفيذ. سيؤدي استخدام 1 (001) إلى إزالة أذونات القراءة والكتابة وإضافة إذن التنفيذ.
لنقم بإضافة إذن القراءة مرة أخرى إلى ملفات ".page" لفئة المستخدمين الآخرين. يجب علينا أيضًا تعيين أذونات المستخدم والمجموعة ، لذلك نحتاج إلى تعيينها على ما هي عليه بالفعل. هؤلاء المستخدمون لديهم بالفعل أذونات القراءة والكتابة ، وهي 6 (110). نريد أن يكون "الآخرون" قد قرأوا وأذونات ، لذلك يجب ضبطهم على 4 (100).
سينجز الأمر التالي هذا:
chmod 664 * .page
هذا يحدد الأذونات التي نطلبها للمستخدم وأعضاء المجموعة والآخرين لما نطلبه. يتم إعادة تعيين أذونات المستخدمين وأعضاء المجموعة إلى ما كانت عليه بالفعل ، ويتم استعادة إذن القراءة للآخرين.
ls -l
خيارات متقدمة
إذا قرأت صفحة الدليل الخاصة بـ chmod
، فسترى أن هناك بعض الخيارات المتقدمة المتعلقة بتات SETUID و SETGID ، والحذف المقيد أو البت "الثابت".
بالنسبة لـ 99٪ من الحالات التي ستحتاج إليها chmod
، فإن الخيارات الموضحة هنا ستغطيها.
أوامر لينكس | ||
الملفات | tar · pv · cat · tac · chmod · grep · diff _ _ _ _ _ _ _ _ _ _ _ · ذيل · ستات · ls · fstab · صدى · أقل · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · تثبيت · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · تحويل · rclone · shred · srm | |
العمليات | الاسم المستعار · شاشة · أعلى · لطيف · رنيس · تقدم · ستريس · systemd · tmux · chsh · تاريخ · في · دفعة · مجانية · أي · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · نعم · قتل · نوم · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
الشبكات | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · حفر · إصبع · nmap · ftp · curl · wget · who · who · w · iptables · ssh-keygen · ufw |
ذات صلة: أفضل أجهزة كمبيوتر Linux المحمولة للمطورين والمتحمسين