الأذونات في Linux (chown، chmod، SUID، GUID، Sticky bit، ACL، Umask)

أهلاً بكم. هذه ترجمة لمقال من كتاب RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 و EX300.

يدفع: آمل أن تكون المقالة مفيدة ليس فقط للمبتدئين ، بل ستساعد أيضًا المسؤولين الأكثر خبرة على تبسيط معارفهم.

إذا هيا بنا.

الأذونات في Linux (chown، chmod، SUID، GUID، Sticky bit، ACL، Umask)

للوصول إلى الملفات في Linux ، يتم استخدام الأذونات. يتم تعيين هذه الأذونات لثلاثة كائنات: مالك الملف ومالك المجموعة وكائن آخر (أي كل شخص آخر). في هذه المقالة ، ستتعرف على كيفية تطبيق الأذونات.

تبدأ هذه المقالة بنظرة عامة على المفاهيم الأساسية ، تليها مناقشة الأذونات الخاصة وقوائم التحكم في الوصول (ACL). في نهاية هذه المقالة ، نغطي تعيين الأذونات الافتراضية عبر umask ، وكذلك إدارة سمات المستخدم الموسعة.

إدارة ملكية الملفات

قبل مناقشة الأذونات ، يجب أن تكون على دراية بدور مالك الملف والدليل. تعتبر ملكية الملفات والأدلة أمرًا حيويًا للتعامل مع الأذونات. في هذا القسم ، سوف تتعلم أولاً كيف يمكنك رؤية المالك. ستتعلم بعد ذلك كيفية تغيير مالك ومستخدم المجموعة للملفات والأدلة.

إظهار صاحب الملف أو الدليل

في Linux ، لكل ملف وكل دليل مالكان: مستخدم ومالك مجموعة.

يتم تعيين هؤلاء المالكين عند إنشاء ملف أو دليل. يصبح المستخدم الذي أنشأ الملف هو مالك هذا الملف ، كما أن المجموعة الأساسية التي ينتمي إليها نفس المستخدم تصبح أيضًا مالكة لهذا الملف. لتحديد ما إذا كنت ، كمستخدم ، لديك إذن للوصول إلى ملف أو دليل ، تتحقق shell من الملكية.

يحدث هذا بالترتيب التالي:

  1. يتحقق shell لمعرفة ما إذا كنت مالك الملف الذي تريد الوصول إليه. إذا كنت المالك ، فستحصل على أذونات وتتوقف الصدفة عن التحقق.
  2. إذا لم تكن مالك الملف ، فستتحقق shell لمعرفة ما إذا كنت عضوًا في مجموعة لديها أذونات في الملف. إذا كنت عضوًا في هذه المجموعة ، فستصل إلى الملف بالأذونات التي عينتها المجموعة ، وستتوقف shell عن التحقق.
  3. إذا لم تكن مستخدمًا ولا مالكًا لمجموعة ، فسيتم منحك حقوق المستخدمين الآخرين (غير ذلك).

لمشاهدة تعيينات المالك الحالي ، يمكنك استخدام الأمر لس -l. يوضح هذا الأمر مستخدم ومالك المجموعة. أدناه يمكنك رؤية إعدادات المالك للأدلة في الدليل / home.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

مع الأمر ls يمكنك عرض مالك الملفات في دليل معين. قد يكون من المفيد أحيانًا الحصول على قائمة بجميع الملفات على النظام التي لها مستخدم أو مجموعة معينة كمالك. لهذا يمكنك استخدام جد. دعوى العثور على المستخدم يمكن استخدامها لهذا الغرض. على سبيل المثال ، يسرد الأمر التالي جميع الملفات التي يمتلكها المستخدم ليندا:

find / -user linda

تستطيع ايضا استخذام جد للبحث عن الملفات التي لها مجموعة معينة كمالك لها.

على سبيل المثال ، يبحث الأمر التالي عن جميع الملفات التي تنتمي إلى المجموعة المستخدمين:

find / -group users

تغيير المالك

لتطبيق الأذونات المناسبة ، فإن أول شيء يجب مراعاته هو الملكية. هناك أمر لهذا CHOWN. صيغة هذا الأمر سهلة الفهم:

chown кто что

على سبيل المثال ، يغير الأمر التالي مالك الدليل / home / account إلى المستخدم linda:

chown linda /home/account

فريق CHOWN لديه عدة خيارات ، أحدها مفيد بشكل خاص: -R. يمكنك تخمين ما يفعله لأن هذا الخيار متاح للعديد من الأوامر الأخرى أيضًا. يتيح لك هذا تعيين المالك بشكل متكرر ، مما يسمح لك بتعيين مالك الدليل الحالي وكل شيء أدناه. يغير الأمر التالي ملكية الدليل / home وكل شيء أسفله إلى مستخدم linda:

الآن يبدو الملاك هكذا:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

دعنا نفعل:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

الآن أصبح المستخدم ليزا صاحب دليل الحساب:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

تغيير مالك المجموعة

هناك طريقتان لتغيير ملكية المجموعة. يمكنك القيام بذلك باستخدام CHOWN، ولكن هناك أمر خاص يسمى chgrpيقوم بهذه المهمة. إذا كنت تريد استخدام الأمر CHOWN، يستخدم . أو : أمام اسم المجموعة.

يغير الأمر التالي أي مالك لمجموعة / home / account إلى مجموعة الحسابات:

chown .account /home/account

يمكنك استخدام CHOWN لتغيير مالك المستخدم و / أو المجموعة بعدة طرق. وهنا بعض الأمثلة:

  • chown ليزا myfile1 يعين المستخدم ليزا كمالك لـ myfile1.
  • chown lisa.sales ملفي يقوم بتعيين المستخدم ليزا كمالك لملف myfile ، وكذلك تعيين مجموعة المبيعات كمالك لنفس الملف.
  • chown lisa: مبيعات myfile نفس الأمر السابق.
  • chown. المبيعات myfile يعيّن مجموعة المبيعات كمالك لملفي دون تغيير مالك المستخدم.
  • chown: مبيعات myfile نفس الأمر السابق.

يمكنك استخدام الأمر chgrpلتغيير مالك المجموعة. ضع في اعتبارك المثال التالي ، حيث يمكنك استخدام chgrp اضبط مالك دليل الحساب على مجموعة المبيعات:

chgrp .sales /home/account

كما هو الحال مع CHOWN، يمكنك استخدام الخيار -R с chgrp، وكذلك بشكل متكرر تغيير مالك المجموعة.

فهم المالك الافتراضي

ربما لاحظت أنه عندما ينشئ المستخدم ملفًا ، يتم تطبيق الملكية الافتراضية.
يصبح المستخدم الذي ينشئ الملف تلقائيًا مالك هذا الملف ، وتصبح المجموعة الأساسية لهذا المستخدم تلقائيًا مالك هذا الملف. عادة ما تكون هذه هي المجموعة المدرجة في ملف / etc / passwd كمجموعة أساسية للمستخدم. ومع ذلك ، إذا كان المستخدم عضوًا في أكثر من مجموعة ، فيمكن للمستخدم تغيير المجموعة الأساسية الفعالة.

لإظهار المجموعة الأساسية الفعالة الحالية ، يمكن للمستخدم استخدام الأمر مجموعات:

[root@server1 ~]# groups lisa
lisa : lisa account sales

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

يوضح ما يلي كيفية استخدام المستخدم ليندا لهذا الأمر ، مع اعتبار المبيعات المجموعة الأساسية:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

بعد تغيير المجموعة الأساسية الفعالة ، ستشتمل جميع الملفات الجديدة التي أنشأها المستخدم على تلك المجموعة كمالك للمجموعة. للرجوع إلى إعداد المجموعة الأساسي الأصلي ، استخدم خروج.

لتتمكن من استخدام الأمر newgrp، يجب أن يكون المستخدم عضوًا في المجموعة التي يريد استخدامها كمجموعة أساسية. بالإضافة إلى ذلك ، يمكن استخدام كلمة مرور المجموعة لمجموعة باستخدام الأمر com.gpasswd. إذا كان المستخدم يستخدم الأمر newgrpولكن ليس عضوًا في المجموعة المستهدفة ، تطالب shell بكلمة مرور المجموعة. بعد إدخال كلمة المرور الصحيحة للمجموعة ، سيتم إنشاء مجموعة أساسية جديدة فعالة.

إدارة الحقوق الأساسية

تم اختراع نظام ترخيص Linux في السبعينيات. نظرًا لأن احتياجات الحوسبة كانت محدودة في تلك السنوات ، كان نظام الأذونات الأساسي محدودًا للغاية. يستخدم نظام الأذونات هذا ثلاثة أذونات يمكن تطبيقها على الملفات والأدلة. في هذا القسم ، ستتعلم كيفية استخدام هذه الأذونات وتغييرها.

فهم أذونات القراءة والكتابة والتنفيذ

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

يجب أن يكون لملف البرنامج الذي يحتاج إلى الوصول إلى مكتبة ، على سبيل المثال ، حق الوصول للقراءة إلى تلك المكتبة. ويترتب على ذلك أن إذن القراءة هو الإذن الأساسي الذي تحتاجه للعمل مع الملفات.

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

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

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

فيما يلي تلخيص لاستخدام الأذونات الأساسية:

الأذونات في Linux (chown، chmod، SUID، GUID، Sticky bit، ACL، Umask)

باستخدام chmod

يستخدم الأمر لإدارة الأذونات. شمود... استخدام شمود يمكنك تعيين الأذونات للمستخدم (المستخدم)، والمجموعات (المجموعة) والآخرين (أخرى). يمكنك استخدام هذا الأمر في وضعين: الوضع النسبي والوضع المطلق. في الوضع المطلق، يتم استخدام ثلاثة أرقام لتعيين الأذونات الأساسية.

الأذونات في Linux (chown، chmod، SUID، GUID، Sticky bit، ACL، Umask)

عند تعيين الأذونات ، احسب القيمة التي تحتاجها. إذا كنت ترغب في ضبط القراءة / الكتابة / التنفيذ للمستخدم ، فقم بالقراءة / التنفيذ للمجموعة ، والقراءة / التنفيذ للآخرين في / somefile ، فأنت تستخدم الأمر التالي شمود:

chmod 755 /somefile

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

إذا كنت تريد تغيير الأذونات المتعلقة بالأذونات الحالية ، فيمكنك استخدام شمود في الوضع النسبي. استخدام شمود في الوضع النسبي ، فأنت تعمل بثلاثة مؤشرات للإشارة إلى ما تريد القيام به:

  1. تقوم أولاً بتحديد من تريد تغيير الأذونات الخاصة به. للقيام بذلك ، يمكنك الاختيار بين المستخدم (u)، مجموعة (g) و اخرين (o).
  2. يمكنك بعد ذلك استخدام عبارة لإضافة الأذونات أو إزالتها من الوضع الحالي ، أو تعيينها تمامًا.
  3. في النهاية تستخدم r, w и xلتحديد الأذونات التي تريد تعيينها.

عند تغيير الأذونات في الوضع النسبي ، يمكنك تخطي جزء "إلى" لإضافة الإذن لجميع الكائنات أو إزالته. على سبيل المثال ، يضيف هذا الأمر إذن التنفيذ لجميع المستخدمين:

chmod +x somefile

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

chmod g+w,o-r somefile

عند استخدام chmod -R o + rx / data قمت بتعيين إذن التنفيذ لجميع الدلائل بالإضافة إلى الملفات الموجودة في دليل / data. لتعيين إذن التنفيذ للأدلة فقط وليس للملفات ، استخدم chmod -R o + rX / data.

يضمن الحرف الكبير X عدم حصول الملفات على إذن تنفيذ ما لم يكن الملف قد قام بالفعل بتعيين إذن تنفيذ لبعض الكائنات. هذا يجعل X طريقة أكثر ذكاءً للتعامل مع أذونات التنفيذ ؛ سيؤدي ذلك إلى تجنب تعيين هذا الإذن على الملفات التي لا تكون مطلوبة.

حقوق ممتدة

بالإضافة إلى الأذونات الأساسية التي قرأت عنها للتو ، يحتوي Linux أيضًا على مجموعة من الأذونات المتقدمة. هذه ليست الأذونات التي تحددها افتراضيًا ، ولكنها في بعض الأحيان توفر إضافة مفيدة. في هذا القسم ، ستتعرف على ماهيتها وكيفية إعدادها.

فهم أذونات SUID و GUID و Sticky Bit Extended Bit

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

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

ضع في اعتبارك ، على سبيل المثال ، موقف يحتاج فيه المستخدم إلى تغيير كلمة المرور الخاصة به. للقيام بذلك ، يجب على المستخدم كتابة كلمة المرور الجديدة الخاصة به إلى ملف / etc / shadow. ومع ذلك ، فإن هذا الملف غير قابل للكتابة بواسطة المستخدمين غير الجذر:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

يقدم إذن SUID حلاً لهذه المشكلة. تستخدم الأداة المساعدة / usr / bin / passwd هذا الإذن افتراضيًا. هذا يعني أنه عند تغيير كلمة المرور ، يصبح المستخدم جذرًا مؤقتًا ، مما يسمح له بالكتابة إلى ملف / etc / shadow. يمكنك رؤية إذن SUID مع لس -l كيف s في وضع تتوقع رؤيته فيه عادةً x للحصول على أذونات مخصصة:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

قد يبدو إذن SUID مفيدًا (وفي بعض الحالات يكون كذلك) ، ولكنه في نفس الوقت يحتمل أن يكون خطيرًا. إذا لم يتم تطبيقه بشكل صحيح ، يمكنك التخلي عن أذونات الجذر عن طريق الخطأ. لذلك ، أوصي باستخدامه فقط بعناية فائقة.

لن يحتاج معظم المسؤولين إلى استخدامه أبدًا ؛ ستراه فقط في بعض الملفات حيث يجب أن يقوم نظام التشغيل بتعيينه افتراضيًا.

الإذن الخاص الثاني هو معرف المجموعة (SGID). هذا الإذن له تأثيران. عند تطبيقه على ملف قابل للتنفيذ ، فإنه يمنح المستخدم الذي ينفذ الملف أذونات مالك مجموعة الملف. لذلك يمكن لـ SGID أن تفعل أكثر أو أقل من نفس الشيء مثل SUID. ومع ذلك ، لا يتم استخدام SGID عمليًا لهذا الغرض.

كما هو الحال مع إذن SUID ، يتم تطبيق SGID على بعض ملفات النظام كإعداد افتراضي.

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

هذا ليس مفيدًا دائمًا ، خاصة وأن مستخدمي Red Hat / CentOS قد تم تعيين مجموعتهم الأساسية إلى مجموعة تحمل نفس اسم المستخدم ، ويكون المستخدم هو العضو الوحيد فيها. وبالتالي ، بشكل افتراضي ، ستتم مشاركة الملفات التي ينشئها المستخدم بشكل مجمّع.

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

الوضع الافتراضي هو أنه عندما يقوم أي من هؤلاء المستخدمين بإنشاء ملف ، تصبح المجموعة الأساسية هي المالكة. لذلك ، بشكل افتراضي ، لا تستطيع ليندا الوصول إلى الملفات التي تم إنشاؤها بواسطة لوري ، والعكس صحيح. ومع ذلك ، إذا قمت بإنشاء دليل مجموعة مشترك (قل / groups / account) وتأكدت من تطبيق إذن SGID على هذا الدليل وأن حساب المجموعة قد تم تعيينه كمالك المجموعة لهذا الدليل ، وجميع الملفات التي تم إنشاؤها في هذا الدليل وجميع من الدلائل الفرعية الخاصة به ، يمكنك أيضًا الحصول على حساب المجموعة باعتباره مالك المجموعة افتراضيًا.

لهذا السبب ، يعتبر إذن SGID إذنًا مفيدًا جدًا للتعيين في أدلة المجموعة العامة.

يظهر إذن SGID في الإخراج لس -l كيف s في الموضع الذي تجد فيه عادة إذنًا لتنفيذ مجموعة:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

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

بدون البت اللاصق ، إذا كان بإمكان المستخدم إنشاء ملفات في دليل ، فيمكنه أيضًا حذف الملفات من هذا الدليل. في بيئة المجموعة العامة ، قد يكون هذا مزعجًا. تخيل المستخدمين linda و lori ، اللذين يمتلكان أذونات الكتابة إلى دليل / data / account ويحصلان على هذه الأذونات من خلال كونهما أعضاء في مجموعة الحساب. لذلك ، تستطيع ليندا حذف الملفات التي أنشأتها لوري والعكس صحيح.

عند تطبيق البت اللاصق ، يمكن للمستخدم حذف الملفات فقط إذا تحقق أحد الشروط التالية:

  • المستخدم هو صاحب الملف ؛
  • المستخدم هو مالك الدليل حيث يوجد الملف.

عند استخدام لس -l، يمكنك رؤية الجزء اللاصق مثل t في الوضع الذي ترى فيه عادةً إذن التنفيذ للآخرين:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

تطبيق الحقوق الممتدة

لتطبيق SUID و SGID والبت اللاصق ، يمكنك أيضًا استخدام شمود. تحتوي SUID على قيمة عددية 4 ، و SGID لها قيمة عددية 2 ، وتوجد قيمة رقمية للبت اللاصق 1.

إذا كنت تريد تطبيق هذه الأذونات ، فأنت بحاجة إلى إضافة وسيطة مكونة من أربعة أرقام إلى شمود، الذي يشير رقمه الأول إلى أذونات خاصة. السطر التالي ، على سبيل المثال ، سيضيف إذن SGID إلى الدليل ويضبط rwx للمستخدم و rx للمجموعة وغيرها:

chmod 2755 /somedir

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

  1. لاستخدام SUID chmod u + s.
  2. لاستخدام SGID chmod g + s.
  3. لاستخدام بت لزجة chmod + t، متبوعًا باسم الملف أو الدليل الذي تريد تعيين أذونات له.

يلخص الجدول كل ما تحتاج لمعرفته حول إدارة الأذونات الخاصة.

الأذونات في Linux (chown، chmod، SUID، GUID، Sticky bit، ACL، Umask)

مثال على العمل بحقوق خاصة

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

  1. افتح محطة حيث أنت مستخدم ليندا. يمكنك إنشاء مستخدم باستخدام الأمر useradd ليندا، أضف كلمة المرور باسود ليندا.
  2. قم بإنشاء دليل / data في الجذر والدليل الفرعي / data / sales بالأمر mkdir -p / بيانات / مبيعات. مكتمل القرص المضغوط / البيانات / المبيعاتللذهاب إلى دليل المبيعات. مكتمل المس ليندا 1 и المس ليندا 2لإنشاء ملفين فارغين تملكهما ليندا.
  3. تابع سو ليزا لتحويل المستخدم الحالي إلى المستخدم ليزا ، وهو أيضًا عضو في مجموعة المبيعات.
  4. تابع القرص المضغوط / البيانات / المبيعات ومن هذا الدليل تنفيذ لس -l. سترى ملفين تم إنشاؤهما بواسطة مستخدم ليندا وينتميان إلى مجموعة ليندا. مكتمل rm -f ليندا *. سيؤدي هذا إلى إزالة كلا الملفين.
  5. تابع المس ليزا 1 и المس ليزا 2لإنشاء ملفين يمتلكهما المستخدم ليزا.
  6. تابع سو- لرفع امتيازاتك إلى الجذر.
  7. تابع chmod g + s، o + t / data / salesلتعيين بت معرف المجموعة (GUID) بالإضافة إلى البت اللاصق في دليل المجموعة المشترك.
  8. تابع سو ليندا. ثم افعل المس ليندا 3 и المس ليندا 4. يجب أن ترى الآن أن الملفين اللذين قمت بإنشائهما مملوكان لمجموعة المبيعات ، وهي مالك المجموعة لدليل / data / sales.
  9. تابع rm -rf ليزا *. يمنع البت اللاصق هذه الملفات من الحذف نيابة عن مستخدم ليندا ، لأنك لست مالك هذه الملفات. لاحظ أنه إذا كان مستخدم ليندا هو مالك الدليل / data / sales ، فيمكنه حذف هذه الملفات على أي حال!

إدارة ACL (setfacl ، getfacl) في Linux

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

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

فهم قوائم ACL

على الرغم من أن النظام الفرعي ACL يضيف وظائف رائعة إلى الخادم الخاص بك ، إلا أن له عيبًا واحدًا: لا تدعمه جميع الأدوات المساعدة. لذلك ، قد تفقد إعدادات قائمة التحكم بالوصول (ACL) عند نسخ الملفات أو نقلها ، وقد يفشل برنامج النسخ الاحتياطي في عمل نسخة احتياطية من إعدادات قائمة التحكم بالوصول (ACL).

لا تدعم الأداة المساعدة tar قوائم التحكم في الوصول (ACL). للتأكد من عدم فقدان إعدادات ACL عند إنشاء نسخة احتياطية ، استخدم بدلا من القطران. يعمل مع نفس خيارات القطران ؛ يضيف فقط دعمًا لإعدادات ACL.

يمكنك أيضًا نسخ قوائم ACL احتياطيًا باستخدام com.getfacl، والتي يمكن استعادتها باستخدام الأمر setfacl. لإنشاء نسخة احتياطية ، استخدم getfacl -R / directory> file.acls. لاستعادة الإعدادات من ملف النسخ الاحتياطي ، استخدم setfacl --restore = file.acl.

لا ينبغي أن يكون نقص الدعم من قبل بعض الأدوات مشكلة. غالبًا ما يتم تطبيق قوائم ACL على الدلائل كإجراء هيكلي بدلاً من الملفات الفردية.
لذلك ، لن يكون هناك الكثير منها ، بل القليل منها ، مطبق في الأماكن الذكية في نظام الملفات. لذلك ، فإن استعادة قوائم ACL الأصلية التي عملت معها أمر سهل نسبيًا ، حتى إذا كان برنامج النسخ الاحتياطي لا يدعمها.

تحضير نظام الملفات لقوائم التحكم في الوصول

قبل أن تبدأ العمل مع قوائم ACL ، قد تحتاج إلى تجهيز نظام الملفات الخاص بك لدعم قوائم ACL. نظرًا لأن بيانات تعريف نظام الملفات تحتاج إلى التوسيع ، فلا يوجد دائمًا دعم افتراضي لقوائم التحكم في الوصول في نظام الملفات. إذا تلقيت رسالة "عملية غير مدعومة" عند إعداد قوائم التحكم في الوصول (ACL) لنظام ملفات ، فقد لا يدعم نظام الملفات قوائم التحكم في الوصول.

لإصلاح هذا تحتاج إلى إضافة الخيار جبل ACL in / etc / fstab بحيث يتم تثبيت نظام الملفات مع دعم ACL افتراضيًا.

تغيير وعرض إعدادات ACL مع setfacl و getfacl

لتعيين ACL تحتاج إلى الأمر مجموعة. لرؤية إعدادات ACL الحالية ، أنت بحاجة com.getfacl. فريق لس -l لا يُظهر أي قوائم ACL موجودة ؛ يعرض فقط علامة + بعد قائمة الأذونات ، مما يشير إلى أن قوائم ACL تنطبق على الملف أيضًا.

قبل إعداد قوائم ACL ، من الأفضل دائمًا إظهار إعدادات ACL الحالية باستخدام com.getfacl. في المثال أدناه ، يمكنك رؤية الأذونات الحالية ، كما هو موضح بـ لس -l، وأيضًا كما هو موضح في com.getfacl. إذا نظرت عن كثب بما فيه الكفاية ، فسترى أن المعلومات المعروضة هي نفسها تمامًا.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

نتيجة تنفيذ الأمر com.getfacl أدناه يمكنك أن ترى أن الأذونات معروضة لثلاثة كائنات مختلفة: المستخدم والمجموعة وغيرها. الآن دعنا نضيف قائمة التحكم بالوصول (ACL) لمنح أذونات القراءة والتنفيذ لمجموعة المبيعات أيضًا. الأمر لهذا setfacl -mg: المبيعات: rx / dir. في هذا الفريق -m يشير إلى أن إعدادات ACL الحالية بحاجة إلى التغيير. بعد ذلك g: المبيعات: rx يخبر الأمر لتعيين قراءة وتنفيذ ACL (rx) للمجموعة (g) مبيعات. يمكنك أدناه رؤية الشكل الذي يبدو عليه الأمر ، بالإضافة إلى إخراج الأمر getfacl بعد تغيير إعدادات قائمة التحكم بالوصول الحالية.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

الآن بعد أن فهمت كيفية إعداد قائمة ACL للمجموعة ، من السهل فهم قوائم ACL للمستخدمين والمستخدمين الآخرين. على سبيل المثال ، الأمر setfacl -mu: ليندا: rwx / بيانات يمنح أذونات للمستخدم ليندا في دليل البيانات / دون جعله المالك أو تغيير تخصيص المالك الحالي.

فريق مجموعة لديه العديد من الميزات والخيارات. خيار واحد مهم بشكل خاص ، المعلمة -R. في حالة استخدامه ، يقوم الخيار بتعيين قائمة التحكم بالوصول (ACL) لجميع الملفات والأدلة الفرعية الموجودة حاليًا في الدليل حيث قمت بتعيين قائمة التحكم بالوصول (ACL). يوصى دائمًا باستخدام هذا الخيار عند تغيير قوائم التحكم في الوصول (ACL) للأدلة الموجودة.

العمل مع قوائم ACL الافتراضية

تتمثل إحدى مزايا استخدام قوائم التحكم في الوصول (ACL) في أنه يمكنك منح أذونات لعدة مستخدمين أو مجموعات في دليل ما. فائدة أخرى هي أنه يمكنك تمكين الوراثة من خلال العمل مع قوائم ACL الافتراضية.

من خلال تعيين قائمة التحكم بالوصول (ACL) الافتراضية ، فإنك تحدد الأذونات التي سيتم تعيينها لجميع العناصر الجديدة التي تم إنشاؤها في الدليل. اعلم أن قائمة التحكم بالوصول الافتراضية ACL لا تغير الأذونات على الملفات الموجودة والدلائل الفرعية. لتغييرها ، تحتاج إلى إضافة ACL عادي أيضًا!

وهذا هو المهم أن نعرف. إذا كنت تريد استخدام قائمة ACL لتكوين عدة مستخدمين أو مجموعات للوصول إلى نفس الدليل ، فيجب عليك تعيين ACL مرتين. اول استخدام سيتفاكل -R -mلتغيير ACL للملفات الحالية. ثم استخدام setfacl-md:للعناية بجميع العناصر الجديدة التي سيتم إنشاؤها أيضًا.

لتعيين ACL الافتراضي ، تحتاج فقط إلى إضافة الخيار d بعد الخيار -m (الترتيب مهم!). لذا استخدم setfacl -md: g: sales: rx / dataإذا كنت تريد أن تقوم مبيعات المجموعة بقراءة وتنفيذ كل ما تم إنشاؤه في دليل البيانات /.

عند استخدام قوائم ACL الافتراضية ، قد يكون من المفيد أيضًا تعيين قوائم ACL للآخرين. عادة لا يكون هذا منطقيًا لأنه يمكنك أيضًا تغيير الأذونات للآخرين الذين يستخدمون شمود. ومع ذلك ، ما لا يمكنك القيام به شمود، هو تحديد الحقوق التي يجب منحها للمستخدمين الآخرين لكل ملف جديد يتم إنشاؤه على الإطلاق. إذا كنت ترغب في منع الآخرين من الحصول على أي أذونات بشأن أي شيء تم إنشاؤه في / البيانات على سبيل المثال الاستخدام setfacl -md: o :: - / data.

قوائم التحكم في الوصول (ACL) والأذونات العادية ليست دائمًا متكاملة بشكل جيد. يمكن أن تنشأ مشاكل إذا قمت بتطبيق ACL افتراضي على دليل ، ثم تتم إضافة العناصر إلى هذا الدليل ، ثم محاولة تغيير الأذونات العادية. لن تنعكس التغييرات التي تنطبق على الأذونات العادية بشكل جيد في نظرة عامة على قائمة التحكم بالوصول (ACL). لتجنب المشاكل ، قم بتعيين الأذونات العادية أولاً ، ثم قم بتعيين قوائم ACL الافتراضية (وحاول عدم تغييرها مرة أخرى بعد ذلك).

مثال على إدارة الحقوق المرتفعة باستخدام قوائم التحكم في الوصول

في هذا المثال ، ستستمر في دلائل / data / account و / data / sales التي أنشأتها سابقًا. في الأمثلة السابقة ، تأكدت من أن مجموعة المبيعات لديها أذونات على / بيانات / مبيعات وأن مجموعة الحساب لديها أذونات على / بيانات / حساب.

أولاً ، تأكد من حصول مجموعة الحسابات على أذونات قراءة في دليل / data / sales وأن مجموعة المبيعات تحصل على أذونات قراءة في دليل / data / account.

تقوم بعد ذلك بتعيين قوائم ACL الافتراضية للتأكد من تعيين الأذونات الصحيحة لكافة الملفات الجديدة لكافة العناصر الجديدة.

  1. افتح Terminal.
  2. تابع setfacl -mg: الحساب: rx / البيانات / المبيعات и setfacl -mg: المبيعات: rx / البيانات / الحساب.
  3. تابع com.getfaclللتأكد من تعيين الأذونات بالطريقة التي تريدها.
  4. تابع setfacl -md: g: account: rwx، g: sales: rx / data / salesلتعيين قائمة التحكم بالوصول (ACL) الافتراضية لدليل المبيعات.
  5. أضف قائمة ACL افتراضية للدليل / data / account باستخدام setfacl -md: g: sales: rwx، g: account: rx / data / account.
  6. تحقق من أن إعدادات قائمة التحكم بالوصول (ACL) سارية عن طريق إضافة ملف جديد إلى / data / sales. مكتمل اللمس / البيانات / المبيعات / الملف الجديد وافعل getfacl / data / sales / newfile للتحقق من الأذونات الحالية.

تعيين الأذونات الافتراضية مع Umask

أعلاه ، تعلمت كيفية العمل مع قوائم ACL الافتراضية. إذا كنت لا تستخدم قائمة ACL ، فهناك خيار shell الذي يحدد الأذونات الافتراضية التي ستحصل عليها: Umask (قناع عكسي). في هذا القسم ، ستتعلم كيفية تغيير الأذونات الافتراضية باستخدام Umask.

ربما لاحظت أنه عند إنشاء ملف جديد ، يتم تعيين بعض الأذونات الافتراضية. يتم تحديد هذه الأذونات من خلال الإعداد Umask. ينطبق إعداد shell هذا على كافة المستخدمين عند تسجيل الدخول. في المعلمة Umask يتم استخدام قيمة عددية يتم طرحها من الحد الأقصى للأذونات التي يمكن تعيينها تلقائيًا للملف ؛ الحد الأقصى لإعداد الملفات هو 666 والدلائل هو 777.

ومع ذلك ، تنطبق بعض الاستثناءات على هذه القاعدة. يمكنك العثور على نظرة عامة كاملة على الإعدادات Umask في الجدول أدناه.

من الأرقام المستخدمة في Umask، كما في حالة الوسائط الرقمية للأمر شمود، يشير الرقم الأول إلى أذونات المستخدم ، ويشير الرقم الثاني إلى أذونات المجموعة ، ويشير الرقم الأخير إلى الأذونات الافتراضية التي تم تعيينها للآخرين. معنى Umask يعطي 022 الافتراضي 644 لجميع الملفات الجديدة و 755 لجميع الدلائل الجديدة التي تم إنشاؤها على الخادم الخاص بك.

نظرة عامة كاملة على جميع القيم العددية Umask ونتائجها في الجدول أدناه.

الأذونات في Linux (chown، chmod، SUID، GUID، Sticky bit، ACL، Umask)

طريقة سهلة لمعرفة كيفية عمل إعداد umask هي كما يلي: ابدأ بالأذونات الافتراضية للملف المعينة على 666 واطرح umask للحصول على الأذونات الفعالة. افعل الشيء نفسه بالنسبة للدليل والأذونات الافتراضية الخاصة به وهي 777.

هناك طريقتان لتغيير إعداد Umask: لجميع المستخدمين وللمستخدمين الفرديين. إذا كنت ترغب في تعيين umask لجميع المستخدمين ، فيجب عليك التأكد من مراعاة إعداد umask عند بدء تشغيل ملفات بيئة shell ، كما هو محدد في / etc / profile. الطريقة الصحيحة هي إنشاء نص برمجي يسمى umask.sh في الدليل /etc/profile.d وتحديد umask الذي تريد استخدامه في برنامج shell script. إذا تم تغيير umask في هذا الملف ، فسيتم تطبيقه على جميع المستخدمين بعد تسجيل الدخول إلى الخادم.

إن أحد البدائل لتعيين umask عبر / etc / profile والملفات ذات الصلة ، حيث ينطبق على جميع المستخدمين الذين يسجلون الدخول ، هو تغيير إعدادات umask في ملف يسمى .profile الذي تم إنشاؤه في الدليل الرئيسي لكل مستخدم.

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

العمل مع سمات المستخدم الموسعة

هذا هو القسم الأخير حول أذونات Linux.

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

كما هو الحال مع قوائم ACL ، قد تحتاج سمات الملف إلى تضمين الخيار جبل.

هذا خيار user_xattr. إذا تلقيت رسالة "عملية غير مدعومة" عند التعامل مع سمات المستخدم الموسعة ، فتأكد من تعيين المعلمة جبل في / etc / fstab.

تم توثيق العديد من السمات. تتوفر بعض السمات ولكن لم يتم تنفيذها بعد. لا تستخدمها. لن يجلبوا لك أي شيء.

فيما يلي السمات الأكثر فائدة التي يمكنك تطبيقها:

A تضمن هذه السمة عدم تغيير وقت الوصول إلى ملف الملف.
عادةً ، في كل مرة يتم فيها فتح ملف ، يجب تسجيل وقت وصول الملف في البيانات الوصفية للملف. هذا يؤثر سلبا على الأداء. لذلك بالنسبة للملفات التي يتم الوصول إليها بانتظام ، فإن السمة A يمكن استخدامها لتعطيل هذه الميزة.

a تسمح لك هذه السمة بإضافة ملف وليس إزالته.

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

D تضمن هذه السمة كتابة التغييرات على الملفات على القرص فورًا بدلاً من تخزينها مؤقتًا أولاً. هذه سمة مفيدة لملفات قاعدة البيانات المهمة للتأكد من عدم ضياعها بين ذاكرة التخزين المؤقت للملفات والقرص الصلب.

d تضمن هذه السمة عدم حفظ الملف في النسخ الاحتياطية حيث يتم استخدام أداة التفريغ.

I تتيح هذه السمة فهرسة الدليل الذي تم تمكينه فيه. يوفر هذا وصولاً أسرع للملفات لأنظمة الملفات البدائية مثل Ext3 التي لا تستخدم قاعدة بيانات B-tree للوصول السريع إلى الملفات.

i هذه السمة تجعل الملف غير قابل للتغيير. لذلك ، لا يمكن إجراء أي تغييرات على الملف ، وهو أمر مفيد للملفات التي تحتاج إلى حماية إضافية.

j تضمن هذه السمة ، في نظام الملفات ext3 ، كتابة الملف أولاً في المجلة ثم إلى كتل البيانات الموجودة على القرص الثابت.

s الكتابة فوق الكتل التي تم حفظ الملف فيها إلى 0 ثانية بعد حذف الملف. هذا يضمن أنه لا يمكن استعادة الملف بمجرد حذفه.

u هذه السمة تخزن معلومات حول الحذف. يتيح لك ذلك تطوير أداة مساعدة تعمل مع هذه المعلومات لإنقاذ الملفات المحذوفة.

إذا كنت تريد تطبيق السمات ، يمكنك استخدام الأمر الدردشة. على سبيل المثال ، استخدم chattr + s شيء مالتطبيق السمات على ملف ما. تحتاج إلى إزالة سمة؟ ثم استخدام chattr-s somefileوستتم إزالته. للحصول على نظرة عامة على جميع السمات المطبقة حاليًا ، استخدم الأمر lsattr.

ملخص

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

إذا كنت تحب هذه الترجمة ، فيرجى الكتابة عنها في التعليقات. سيكون هناك دافع أكبر لعمل ترجمات مفيدة.

تصحيح بعض الأخطاء المطبعية والنحوية في المقالة. تم تقليل بعض الفقرات الضخمة إلى فقرات أصغر لتسهيل القراءة.

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

شكرا على التعليقات بيريز.

تم استبداله:
إذا لم تكن مالك المستخدم ، فستتحقق shell لمعرفة ما إذا كنت عضوًا في مجموعة ، تُعرف أيضًا باسم مجموعة الملف.

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

شكرا لك على تعليقك CryptoPirate

المصدر: www.habr.com

إضافة تعليق