Chmod
صيغة الأمر > symbolic mode

في هذا الوضع تم الاستعاضة عن الأرقام بالرموز العادية، ما أقصده بالرموز العادية هي r، w، x بمعنى حينما تود وضع تصريح القراءة أضف r، كذلك تود وضع تصريح الكتابة أضف w، كذلك تصريح التنفيذ x ولكن السؤال كيف ذلك ؟؟
يتم ذلك باستخدام الحروف u، g، o حيث يرمز الحرف u إلى كلمة user والتي تعنى تصريح المالك، ويرمز الحرف g إلى كلمة مجموعة والتي تعنى تصريح المجموعة، ويرمز الحرف o إلى كلمة other والتي تعنى تصريح أي شخص آخر على النظام ويتم إضافة التصريح للملف باستخدام ثلاثة رموز هي +، -، == حيث ترمز العلامة + إلى كلمة add أو إضافة وترمز العلامة- إلى كلمة minus أو إنقاص (تنبه هي نفس علامة- والاستخدام هنا نوعاً ما مختلف) وترمز العلامة == إلى كلمة equal أو يساوي ولفهم ذلك كله نفترض المثال السابق:
إذا أردنا إعطاء التصريحات التالية للملف one.txt لكل من: المالك، المجموعة، أي مستخدم آخر بالترتيب التالي:
بالنسبة للمالك القراءة والكتابة.
بالنسبة للمجموعة القراءة فقط.
بالنسبة لأى مستخدم آخر لا شيء.
فيكون بالشكل التالي:
بالنسبة للمالك التصريح المطلوب هو تصريح القراءة والكتابة: u=rw
النسبة للمجموعة التصريح المطلوب هو تصريح القراءة فقط: g=r
بالنسبة لأى مستخدم آخر التصريح المطلوب هو لا شيء: o-rwx
إذا لوضع التصريح بشكل كامل تكون صيغته الكاملة كالتالى: chmod u=rw,g=r,o-rwx filename
في البداية وضع تصريح المالك مستخدماً الرمز = أو يساوى وبعد ذلك قمت بكتابة "،" أو comma لوضع تصريح آخر مع تصريح المالك هو تصريح المجموعة ثم قمت بكتابة، أو comma أخرى لإضافة تصريح المستخدمين الآخرين ولكن لاحظ معى أنى قمت باستخدام الرمز - أو minus لسحب أي تصريح بالنسبة لأى مستخدم آخر وفي السؤال كان المطلوب عدم إعطاء أي تصريح لأى مستخدم آخر.
وبالتالى حينما تود إضافة تصريحات متشابهة سواء للمالك أو المجموعة أو أي مستخدم آخر فلا يتطلب ذلك فصل كل عملية باستخدام، أو comma ولكن تستطيع إضافة العناصر المتشابهة إلى بعضها البعض.
مثال: قم بإعطاء تصريح القراءة والكتابة والتنفيذ لكل من المالك والمجموعة وتصريح القراءة والتنفيذ لأى مستخدم آخر للملف one.txt
chmod ug=rwx,o=rx one.txt
مثال: قم بسحب تصريح الكتابة والتنفيذ للمجموعة وسحب أيضا تصريح التنفيذ من أي مستخدم آخر:
chmod go-wx one.txt
لاحظ معى قمت بإضافة كلام من المجموعة وأى مستخدم آخر إلى بعضهما البعض مع أنى أريد تنفيذ مهام مختلفة فكيف ذلك ؟
لو لاحظت معى أن الملف one.txt يوجد عليه التصريح rwxrwxr-x وما طلبته في سؤالى سحب كل من تصريح القراءة والتفيذ للمجموعة وتصريح التنفيذ لأى مستخدم آخر وذلك لأن تصريح الكتابة بالنسبة لأى مستخدم آخر في الأصل هو غير متوافر على التصريح الكامل للملف ولكن يوجد عامل مشترك وهو سحب تصريح التنفيذ لكلٍ من المجموعة وأى مستخدم آخر وذلك لمجرد التسهيل ليس إلا فكان من الممكن كتابة التصريح بالشكل التالي:
chmod g-wx,o-x one.txt
وسوف تكون النتيجة مطابقة لما بأعلى وأود تنبيهك إلى شيء مهم أن كلا ً من الرمزين +، - يقومان بإضافة وسحب تصريح موجود بالفعل بمعنى لو كان تصريح ملف معين بالشكل التالي:
rw-r--r-x
وأردت إضافة تصريح الكتابة لكل من المجموعة وأى مستخدم آخر فسيتم إضافة التصريحات الجديدة دون احداث تغيير في أي تصريح موجود بالفعل ولاحظ ذلك:
chmod go+w filenmae
يكون ناتج التصريح عند عمل الأمر ls -l بالشكل التالي:
rwxrw-rwx
ولكن ماذا لو أردنا وضع تصريح مماثل للأقسام الثلاثة أعنى المالك والمجموعة وأى مستخدم آخر ألا يوجد بديل ل u، g، o ؟؟
بالطبع يوجد الحرف a والذي يرمز إلى كلمة all أو الكل بمعنى تود أضافة تصريح التنفيذ لملف ما لكل من المالك والمجموعة وأى مستخدم آخر كل ما عليك فعله التالي:
chmod a+x filename
والجدول التالي ملخص لكل من الحروف والرموز الخاصة بالوضع symbolic mode: