SSD Nodes Learn 🎉 VPS من $4.99/شهر
الأدلة Matt Connorبقلم Matt Connor · آخر تحديث في 2026-08-07

شرح drwxr-xr-x وصلاحيات Linux وتحويلها إلى 755

افهم drwxr-xr-x حرفاً حرفاً وحوّله إلى 755، وتعرّف إلى معنى x في الدليل كصلاحية عبور، ولماذا لا يكون chmod 777 حلاً صحيحاً.

ما الذي يعنيه drwxr-xr-x

يصف drwxr-xr-x دليلاً يمكن لمالكه تعديله، ويمكن لكل مستخدم آخر قراءته والعبور إليه دون إجراء أي تغيير. تكون هذه الصلاحيات 755 بالنظام الثماني. يطبع Linux هذه الأحرف العشرة في بداية كل سطر من مخرجات ls -l، وهي تعني دائماً الشيء نفسه بالترتيب نفسه. لذلك، فإن تعلّم هذه السلسلة يعلّمك كيفية قراءة جميع السلاسل المشابهة.

توجد قاعدة تسبق بقية القواعد، لأنها تحدد ما إذا كانت اختباراتك الفعلية ستوضح سلوك الصلاحيات. يتجاهل المستخدم root بتات الصلاحيات. تمنح النواة root إمكانية CAP_DAC_OVERRIDE ‏(تجاوز التحكم الإلزامي بالوصول)، لذلك يستطيع root فتح الملفات حتى عندما تمنعه الصلاحيات المحددة في وضعها. ينجح كل مثال في هذه الصفحة عند تشغيله بواسطة root، مهما كانت قيمة البتات. سجّل الدخول كمستخدم عادي عندما تريد مراقبة تطبيق هذه القواعد.

الأحرف العشرة، حرفاً في كل مرة

أنشئ دليلاً وملفاً لفحصهما. لا يلمس أي شيء هنا ما يقع خارج الدليل الجديد.

mkdir -p ~/permdemo/inner
printf 'hello\n' > ~/permdemo/inner/notes.txt
ls -ld ~/permdemo ~/permdemo/inner ~/permdemo/inner/notes.txt

باستخدام umask الافتراضي الشائع 022، يبدأ سطرا الدليل بالحرف drwxr-xr-x، ويبدأ سطر الملف بالحرف -rw-r--r--.

الحرف 1 هو نوع الملف، وليس صلاحية. يشير d إلى دليل. ويشير - إلى ملف عادي. ويشير l إلى رابط رمزي. ويشير c وb إلى عقدتي جهاز حرفي وجهاز كتلي. ويشير s إلى مقبس، بينما يشير p إلى pipe مسمّى. ويقع هذا الحرف خارج القيمة الثمانية، ولذلك تصبح drwxr-xr-x القيمة 755 بدلاً من أن تبدأ بـd.

الأحرف التسعة التي تليه تتكون من ثلاث مجموعات، كل مجموعة من ثلاثة أحرف، ولا يتغير ترتيبها.

  • الأحرف من 2 إلى 4 هي ثلاثية المالك، أي البتات التي تنطبق على المستخدم الذي يملك الملف.
  • الأحرف من 5 إلى 7 هي ثلاثية المجموعة، أي البتات التي تنطبق على مجموعة الملف.
  • الأحرف من 8 إلى 10 هي ثلاثية الآخرين، أي البتات التي تنطبق على جميع المستخدمين الآخرين.

داخل كل ثلاثية، تكون الخانات دائماً بالترتيب r ثم w ثم x، وتشير الشرطة إلى أن البت معطّل. ولا يتغير موضع الأحرف. تُقرأ r-x من دون كتابة. أما -w- فتعني الكتابة من دون القراءة، وهذا مسموح لكنه نادر.

لذلك تُقسَّم drwxr-xr-x كما يلي: d للدليل، ثم rwx للمالك، ثم r-x للمجموعة، ثم r-x للآخرين.

تطبع بعض الأنظمة حرفاً حادي عشر. تعني النقطة الختامية drwxr-xr-x. أن الملف يحمل سياق SELinux (security enhanced Linux)، وتطبع توزيعات SELinux مثل Fedora وRocky هذا السياق افتراضياً. وتعني علامة الجمع الختامية drwxr-xr-x+ أن الملف يحمل POSIX ACL (access control list)، أي مجموعة إضافية من القواعد تتجاوز هذه البتات التسع. اقرأ هذه القواعد الإضافية باستخدام getfacl <path>.

تؤدي الأذونات r وw وx وظائف مختلفة على الدليل

هذه أول قاعدة يخطئ فيها المبتدئون. الحروف نفسها في الملف والدليل، لكن الصلاحيات التي تمنحها مختلفة.

  • تمنح r على الملف إمكانية قراءة محتواه. أما r على الدليل فتتيح سرد الأسماء الموجودة فيه، وهذا ما يحتاج إليه ls العادي.
  • تمنح w على الملف إمكانية تغيير محتواه. أما w على الدليل فتتيح إضافة المدخلات إليه وإزالتها. حذف ملف هو تغيير في الدليل، لذلك فإن صلاحية الكتابة على الدليل هي التي تحدد إمكانية الحذف، ولا تؤثر صلاحيات الملف نفسه في ذلك.
  • تمنح x على الملف إمكانية تشغيله كبرنامج. أما x على الدليل فتتيح اجتيازه، أي إن النواة تستطيع حل اسم واحد داخله أثناء البحث عن المسار.

اجتياز الدليل هو الجزء الذي يفاجئ المستخدمين. لا تنفّذ x على الدليل أي شيء. يتطلب فتح /srv/site/index.html وجود x على /، ثم x على /srv، ثم x على /srv/site، وأخيراً r على الملف. إذا كان أحد الأدلة في هذه السلسلة يفتقد x بالنسبة إليك، يتوقف البحث عنده، ويُبلَّغ المستدعي بالخطأ Permission denied للمسار بأكمله، حتى عندما يكون الملف في نهايته مقروءاً للجميع. يطبع namei -l /srv/site/index.html كل خطوة في السلسلة مع نمط الصلاحيات والمالك، بحيث يمكنك معرفة الرابط الذي يوقف البحث.

يمثل الدليل الذي يملك r ولا يملك x حالة نصفية غير معتادة، ومن المفيد التعرّف إليها. يستطيع المستخدم العادي سرد الأسماء، لأن السرد هو ما تمنحه r، لكنه لا يستطيع تنفيذ stat على أي مدخل. لذلك يملأ ls -l أعمدة الحجم ونمط الصلاحيات بعلامات استفهام، ويطبع ls: cannot access ...: Permission denied لكل مدخل.

تحويل الأحرف إلى 755

كل ثلاثية هي رقم مكوّن من 3 بتات. r تساوي 4، وw تساوي 2، وx تساوي 1. اجمع قيم البتات المفعّلة.

  • rwx تساوي 4 + 2 + 1 = 7
  • rw- تساوي 4 + 2 = 6
  • r-x تساوي 4 + 1 = 5
  • r-- تساوي 4
  • --- تساوي 0

لذلك تساوي drwxr-xr-x القيمة 7 للمالك، و5 للمجموعة، و5 للآخرين: 755. وتساوي -rw-r--r-- القيم 6 و4 و4: 644. أما drwxrwxr-x فتساوي 7 و7 و5: 775، وهي 755 مع إضافة صلاحية الكتابة إلى المجموعة. لا تحتاج إلى عدّ الأحرف يدوياً، لأن stat تطبع الشكلين معاً.

stat -c '%A %a %U %G %n' ~/permdemo ~/permdemo/inner/notes.txt

%A هو الشكل الحرفي، و%a هو النظام الثماني، بينما يحدّد %U و%G المستخدم المالك والمجموعة المالكة.

سلاسل الصلاحيات التي يبحث عنها المستخدمون

هذه هي الأنماط التي ستصادفها على خادم فعلي، مع القيمة الثمانية الموضع والمواضع التي يظهر فيها كل نمط.

  • -rw-r--r-- قيمته 644. ملفات عادية لا تقرؤها الخدمة إلا، مثل ملف إعداد أو صفحة HTML.
  • -rw------- قيمته 600. الأسرار، مثل مفتاح SSH الخاص أو ملف .env الخاص بتطبيق.
  • -rw-rw-r-- قيمته 664. ملف داخل مجلد مشترك مع مجموعة، حيث يحتاج أعضاء الفريق إلى صلاحية الكتابة.
  • -rwxr-xr-x قيمته 755. البرامج النصية والملفات الثنائية، مثل /usr/local/bin/backup.sh ومعظم ملفات /usr/bin.
  • -rwx------ قيمته 700. برنامج نصي خاص لا يستطيع تشغيله إلا مالكه.
  • drwxr-xr-x قيمته 755. معظم مجلدات النظام، وجذر المستندات لموقع ويب.
  • drwx------ قيمته 700. ~/.ssh، والمجلدات المنزلية على خادم مقيّد الصلاحيات.
  • drwxrwxr-x قيمته 775. مجلد تستطيع مجموعة المالك الكتابة فيه.
  • drwxrwsr-x قيمته 2775. النمط نفسه، مع بت setgid، بحيث ترث الملفات الجديدة داخله مجموعة المجلد.
  • drwxrwxrwt قيمته 1777. /tmp. يشير t الأخير إلى بت sticky، بحيث لا يستطيع المستخدم حذف إلا ملفاته الخاصة.
  • -rwsr-xr-x قيمته 4755. ملف ثنائي يستخدم setuid ويعمل بصلاحيات مالكه، مثل /usr/bin/passwd و/usr/bin/sudo.
  • -rw-rw-rw- قيمته 666، وdrwxrwxrwx قيمته 777. قابل للكتابة من الجميع، وهذا يكاد يكون دائماً خطأ على الخادم.
  • lrwxrwxrwx هو ما يعرضه كل رابط رمزي. يتجاهل Linux بتات النمط في الرابط ويفحص الهدف بدلاً منها، لذلك لا تحمل هذه السلسلة أي معنى على الإطلاق.

ما الثلاثية التي تنطبق عليك

هذه هي القاعدة الثانية التي يخطئ فيها المبتدئون. تختار النواة ثلاثية واحدة فقط وتتوقف عندها.

إذا تطابق معرّف المستخدم الخاص بك مع مالك الملف، تحصل على ثلاثية المالك، ولا تُفحَص بتات المجموعة والآخرين. وإلا، إذا كانت مجموعة الملف إحدى مجموعاتك، تحصل على ثلاثية المجموعة. وإلا تحصل على ثلاثية الآخرين.

ينتج عن ذلك أمران. تنطبق ثلاثية المالك حتى عندما تكون الأكثر تقييداً. الملف ذو النمط 0466، الذي يظهر على شكل -r--rw-rw-، يمنح مالكه صلاحية القراءة فقط، بينما يستطيع جميع الآخرين الكتابة، لأن فحص المالك نجح أولاً ولم تُفحَص أي بتات بعده. هذا مسموح به، ويُربك الجميع عند مواجهته للمرة الأولى.

تُختار ثلاثية المجموعة وفق مجموعة الملف، لا وفق قائمة المجموعات التي تنتمي إليها. يطبع ls -l اسمين في كل سطر: المالك أولاً، ثم المجموعة. للمجموعة الثانية فقط تأثير في ذلك الملف. الانتماء إلى عشرين مجموعة لا يفيد إلا إذا كان الملف مرتبطاً بإحداها.

id
stat -c '%U %G %A %n' ~/permdemo/inner/notes.txt

يطبع id مستخدمك وكل مجموعة تنتمي إليها. ويطبع stat مالك الملف ومجموعته. قارن بين القائمتين، وستعرف أي ثلاثية ستستخدمها النواة لك.

لهذا السبب يحصل الدليل المشترك عادةً على مجموعة وعلى بت setgid. يظهر sudo chmod 2775 /srv/shared على شكل drwxrwsr-x، ثم ترث الملفات التي تُنشأ داخله مجموعة الدليل بدلاً من مجموعة المنشئ الشخصية، ولذلك يستطيع الشخص التالي مواصلة الكتابة فيها. ومنح كل خدمة حساباً خاصاً بها هو النصف الآخر من هذه المسألة، وهو مشروح في مستخدم Linux واحد لكل خدمة على VPS.

يحدِّد umask وضع كل ملف جديد

لا يستمد الملف الجديد وضعه من المستخدم مباشرة. بل يأخذه من البرنامج الذي أنشأه، بعد طرح البتات التي يمسحها umask. يمثّل umask قناعاً للبتات المطلوب إزالتها، لذلك ينتج عن umask الأكبر ملفات أكثر خصوصية.

تأتي معظم التوزيعات مع القيمة 022. يطلب البرنامج الذي ينشئ ملفاً عادياً الوضع 0666. ويطلب البرنامج الذي ينشئ دليلاً الوضع 0777. يمسح umask القيمة 022 من كلا الطلبين، فتحصل على 644 للملفات و755 للأدلة. وهذا هو الزوج الذي تراه في كل مكان تقريباً على VPS جديد.

umask
umask -S
touch ~/permdemo/new.txt && mkdir -p ~/permdemo/newdir
ls -ld ~/permdemo/new.txt ~/permdemo/newdir

يطبع umask -S القيمة نفسها على هيئة أحرف، وهذا أسهل للقراءة من 0022. اضبط umask 027 في ~/.profile للحصول على إعداد افتراضي أكثر تقييداً: 640 للملفات و750 للأدلة، بحيث تتمكن مجموعتك من قراءة عملك ولا يتمكن أي شخص آخر من ذلك.

هناك حدّان مهمان. لا يستطيع umask سوى مسح البتات، ولا يمكنه إضافتها، ولذلك لا يصبح الملف الجديد قابلاً للتنفيذ مهما كانت القيمة التي تضبطها. كما أن خدمة systemd لا تقرأ ملف تعريف الصدفة، لذا اضبط القيمة في ملف الوحدة بدلاً من ذلك.

[Service]
UMask=0027

لماذا تكون ملفات الويب بصلاحيات 644 ومجلدات الويب بصلاحيات 755

يعمل خادم الويب بحساب مستقل، وهو www-data على Debian وUbuntu، وnginx على Rocky وAlma. تحتاج هذه العملية إلى إذن القراءة للملفات التي تقدمها، وإلى إذن العبور للمجلدات الموجودة في مساراتها. ولا يوجد سبب لمنحها إذن الكتابة عليها، كما يجب ألا يسمح الموقع الثابت بذلك أبداً.

تمنح صلاحيات 644 على الملف المالكَ إذن الكتابة، وتمنح الجميع إذن القراءة. بذلك يمكن لمستخدم النشر نشر الملفات، ويمكن لمستخدم الويب تقديمها. وتمنح صلاحيات 755 على المجلد المالكَ إذن الكتابة، وتمنح الجميع إذن العبور. لذلك يستطيع مستخدم الويب اجتياز المسار من دون أن يتمكن من إضافة أي شيء أو حذفه. وإذا احتوى التطبيق على خلل، فلن يستطيع إعادة كتابة الصفحات التي يقدمها.

تظهر أهمية قاعدة العبور هنا تحديداً. إذا كان الموقع موجوداً في /home/deploy/site وكانت صلاحيات /home/deploy هي 750، فلن يتمكن مستخدم الويب من الدخول إلى الدليل الرئيسي إطلاقاً، وينتهي الطلب بحالة HTTP 403 مع سطر مثل هذا في /var/log/nginx/error.log:

open() "/home/deploy/site/index.html" failed (13: Permission denied), client: 203.0.113.5

القيمة 13 هي EACCES، أي رفض النواة لعملية التحقق من الصلاحيات. لا توجد مشكلة في الشبكة: المنفذ يستمع والطلب وصل، وهذا ما يجعل الحالة مربكة أثناء تعلمك كيفية عمل المنافذ المستمعة في Linux. نفّذ namei -l /home/deploy/site/index.html واقرأ سلسلة المسارات بحثاً عن أول دليل لا يتضمن x للآخرين.

يُعد الدليل الذي يكتب التطبيق فيه، مثل مسار رفع الملفات، استثناءً. امنح هذا الإذن عبر الملكية بدلاً من استخدام وضع أوسع: sudo chown -R www-data:www-data /srv/site/uploads واترك الوضع على 755. احصر إذن الكتابة في الدليل الوحيد الذي يحتاج إليه.

chmod من دون تسوية الشجرة بأكملها

chmod له شكلان. يضبط النمط الثماني كل البتات التسع دفعة واحدة: chmod 644 notes.txt. يغيّر النمط الرمزي ما تحدده فقط ويترك الباقي كما هو: chmod u+x deploy.sh يضيف التنفيذ إلى المالك، وchmod go-w notes.txt يزيل الكتابة من المجموعة والآخرين.

التكرار هو الموضع الذي تتعرض فيه الأشجار للتلف. يجعل chmod -R 755 . كل صورة وكل ملف إعداد قابلاً للتنفيذ، لأن chmod لا يستطيع التمييز بين script وJPEG. استخدم الحرف الكبير X بدلاً من ذلك.

chmod -R u=rwX,go=rX ~/permdemo
stat -c '%a %n' ~/permdemo ~/permdemo/inner/notes.txt

يطبّق X الكبير التنفيذ على المجلدات، وعلى الملفات التي كان لديها بت تنفيذ في أي موضع. تصبح المجلدات 755، وتصبح الملفات العادية 644، وتبقى scripts التي كانت قابلة للتنفيذ كذلك. عندما يكون لأحد الملفات نمط تثق به، ينسخه chmod --reference=good.sh other.sh إلى الملفات الأخرى.

الرسائل التي تراها عند وجود خطأ في أحد البتات

bash: ./deploy.sh: Permission denied يعني أن البرنامج النصي لا يحتوي على بت x في الثلاثية المنطبقة عليك، أو أن أحد الأدلة في مساره لا يحتوي على x. يعالج chmod u+x deploy.sh الحالة الأولى.

bash: ./deploy.sh: cannot execute: required file not found خطأ مختلف ذو اسم مربك. بت x سليم، لكن المفسّر المذكور في السطر الأول مفقود. السبب المعتاد هو استخدام نهايات أسطر Windows، لذلك يبحث kernel عن مفسّر اسمه /bin/bash\r. أصلح ذلك باستخدام sed -i 's/\r$//' deploy.sh.

ينتج Permissions 0644 for '/home/deploy/.ssh/id_ed25519' are too open. من عميل SSH، إذ يرفض استخدام مفتاح خاص يمكن لحسابات أخرى قراءته. يجب أن تكون صلاحيات المفتاح 600، ويجب أن تكون صلاحيات ~/.ssh هي 700. ترد تفاصيل إدارة المفاتيح كاملةً في إدارة مفاتيح SSH وصلاحيات ملفاتها.

يظهر Authentication refused: bad ownership or modes for directory /home/deploy/.ssh في سجل الخادم عندما يكون الدليل الرئيسي أو .ssh الخاص به قابلاً للكتابة من المجموعة. يرفض إعداد StrictModes في sshd المفتاح، ويظهر ذلك من جهة العميل كمطالبة غير متوقعة بكلمة مرور من دون تفسير.

يعني sudo: /etc/sudoers is world writable، متبوعاً بـ sudo: no valid sudoers sources found, quitting، أن sudo تحقّق من وضع ملف الإعداد الخاص به ورفض التشغيل. يجب أن تكون صلاحيات هذا الملف 0440. هذه هي النتيجة المعتادة لتنفيذ chmod عودي واسع النطاق، وقد تظهر مع رسالة sshd السابقة، مما يجعل وحدة تحكم المزوّد الوسيلة الوحيدة لاستعادة الوصول.

لماذا لا يُعد 777 حلاً

يمنح 777 صلاحية الكتابة لكل حساب على الجهاز، ولكل عملية تعمل تحت أيٍّ من هذه الحسابات. يشغّل الخادم الخدمات باستخدام حسابات مخصصة لها، لذلك يشمل مفهوم «الجميع» على VPS نطاقاً أوسع بكثير مما يشمله على الحاسوب المحمول. ويمكن لخدمة جرى اختراقها الكتابة في أي مكان تسمح به صلاحيات 777.

يكون الضرر مباشراً تحت جذر الويب. فإذا كان الدليل قابلاً للكتابة من الجميع ويعرضه الخادم أيضاً، يتحول خلل في رفع الملفات إلى وسيلة لزرع script ثم طلبه لاحقاً.

يكون 777 تقريباً دائماً الإجابة الخاطئة عن سؤال الملكية. تكون الأعراض: «لا يستطيع التطبيق الكتابة في هذا الدليل». والسبب هو أن الدليل مملوك للمستخدم الخطأ. يحل sudo chown -R appuser:appuser /srv/app/storage ذلك باستخدام mode 755، ويمنع جميع الحسابات الأخرى من الوصول. ويجب إنشاء هذه الحسابات قبل نشر أي شيء، كما هو موضح في الدقائق العشر الأولى على VPS جديد.

تكون صلاحية الكتابة للجميع مشروعة في مكان مألوف واحد، وهو /tmp، وتُكتب على النحو drwxrwxrwt. تمثل t الأخيرة sticky bit: يكون الدليل قابلاً للكتابة من الجميع، لكن لا يستطيع المستخدم حذف الملفات التي لا يملكها. ومن دون هذه البت، يمكن لأي حساب حذف الملفات المؤقتة التابعة لحساب آخر.

اقرأ الوضع قبل تغييره

تقرأ هذه الأوامر الحالة فقط، لذلك يمكن تشغيلها بأمان في أي مكان.

id
umask
stat -c '%A %a %U %G %n' ~/permdemo ~/permdemo/inner/notes.txt
namei -l ~/permdemo/inner/notes.txt
find ~/permdemo -perm -0002

يسرد find <path> -perm -0002 كل ما يوجد ضمن مسار يكون فيه بت الكتابة للعامة مفعّلاً، وهي أسرع طريقة لتدقيق خادم بعد أن أصلح شخص ما أشياء باستخدام chmod 777.

لمعرفة ما إذا كان حساب خدمة معيّناً يستطيع الدخول إلى دليل، نفّذ الفحص باستخدام ذلك الحساب. يطبع sudo -u www-data test -x /srv/site && echo yes || echo no القيمة yes عندما يملك ذلك المستخدم صلاحية العبور إلى الدليل، ويطبع no عندما لا يملكها. لا يثبت الفحص باستخدام root شيئاً، لأن root يتجاوز هذا التحقق وتكون الإجابة دائماً yes.

FAQ

ماذا يعني drwxr-xr-x في Linux؟

يعني أنه دليل، ويظهر ذلك بالحرف الأول d، مع الوضع 755. ثلاثية المالك هي rwx، ولذلك يملك المالك جميع الأذونات عليه. ثلاثية المجموعة هي r-x، وثلاثية المستخدمين الآخرين هي r-x، ولذلك يستطيع جميع المستخدمين الآخرين عرض الأسماء داخله والعبور خلال الدليل، بينما لا يستطيع إضافة أي عنصر أو حذفه سوى المالك. أكّد أي مسار باستخدام stat -c '%A %a %U %G %n' <path>، الذي يطبع الصيغة الحرفية والصيغة الثمانية جنباً إلى جنب.

لماذا تكون ملفات الويب 644 وأدلة الويب 755؟

يعمل خادم الويب بحساب مختلف، وهو www-data في Ubuntu. يحتاج إلى إذن القراءة للملفات التي يقدّمها، وإلى إذن العبور في كل دليل يقع قبلها، ولا يحتاج إلى الكتابة في أيٍّ منهما. يمنح 644 المالك إذن الكتابة، ويمنح جميع المستخدمين الآخرين إذن القراءة. ويمنح 755 المالك إذن الكتابة، ويمنح جميع المستخدمين الآخرين إذن العبور. يجب تسليم الدليل الذي تحتاج إليه الخدمة فعلياً للكتابة باستخدام chown إلى مستخدم التطبيق، بدلاً من توسيع الوضع ليشمل الجميع.

هل يعني البت x أنني أستطيع تنفيذ دليل؟

لا. في الدليل، يعني x العبور، أي الحق في حل اسم واحد داخله أثناء انتقال النواة عبر المسار. يحتاج cd إليه، وكذلك كل عملية فتح لملف يقع تحته. يحتاج كل دليل على طول المسار إلى x، ولذلك يظل الملف ذو الوضع 644 غير قابل للوصول عندما يفتقر أحد الأدلة السابقة إلى x بالنسبة إليك. يطبع namei -l /path/to/file وضع كل دليل في السلسلة، ويوضح الموضع الذي يتوقف عنده البحث.

هل يُعد chmod 777 حلاً صحيحاً في أي وقت؟

يكاد لا يكون كذلك على الخادم. فهو يمنح إذن الكتابة لكل حساب على الجهاز، بما في ذلك الحسابات التي تعمل الخدمات بها، ولذلك يمكن لخدمة مخترقة إعادة كتابة الملف. عندما يتعذر على تطبيق الكتابة في دليل، تكون المشكلة الفعلية عادةً هي الملكية: يمنح sudo chown -R appuser:appuser /srv/app/storage مع الوضع 755 التطبيق ما يحتاج إليه، ويمنع جميع المستخدمين الآخرين. الاستثناء المعروف هو /tmp مع الوضع 1777، وهذا يعمل فقط لأن البت اللاصق يمنع المستخدمين من حذف ملفات بعضهم بعضاً.

لماذا يطبع ls نقطة أو علامة زائد بعد الأذونات؟

يصف الحرف الحادي عشر قواعد تتجاوز بتات الأذونات التسعة. تعني النقطة، كما في drwxr-xr-x.، إرفاق سياق أمان SELinux، وهذا أمر طبيعي في Fedora وRocky. وتعني علامة الزائد، كما في drwxr-xr-x+، تعيين POSIX ACL (قائمة التحكم في الوصول)، بحيث يملك مستخدم أو مجموعة أذونات لا تعرضها الثلاثيات الثلاث. شغّل getfacl <path> لسرد هذه الإدخالات الإضافية.

#permissions#ls#chmod#linux-basics#octal