كيفية التحكم في sudo Access على نظام Linux

نشرت: 2022-01-29
نافذة طرفية Linux على سطح مكتب بنمط Ubuntu.
فاطماواتي أحمد زينوري / شاترستوك

يتيح لك الأمر sudo تشغيل الأوامر على Linux كما لو كنت شخصًا آخر ، مثل root . يتيح لك sudo أيضًا التحكم في من يمكنه الوصول إلى إمكانات root's بدقة. امنح المستخدمين حق الوصول الكامل أو اسمح لهم باستخدام مجموعة فرعية صغيرة من الأوامر. نوضح لك كيف.

sudo وأذونات الجذر

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

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

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

الإعلانات

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

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

ذات صلة: ماذا يعني "كل شيء هو ملف" في لينكس؟

قائمة sudoers

تم تثبيت sudo بالفعل على أجهزة كمبيوتر Ubuntu 18.04.3 و Manjaro 18.1.0 و Fedora 31 المستخدمة للبحث في هذه المقالة. هذه ليست مفاجأة. لقد كان sudo موجودًا منذ أوائل الثمانينيات وأصبح الوسيلة القياسية لتشغيل المستخدم المتميز لجميع التوزيعات تقريبًا.

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

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

تشغيل أمر كمستخدم آخر

في الأصل ، كان يطلق عليه "المستخدم المتميز" ، لأنه يمكنك فعل الأشياء بصفتك المستخدم المتميز. تم توسيع نطاقه الآن ، ويمكنك استخدام sudo لتنفيذ الأمر كما لو كنت مستخدمًا. تمت إعادة تسميته ليعكس تلك الوظيفة الجديدة. يطلق عليه الآن "المستخدم البديل".

لاستخدام sudo لتشغيل أمر كمستخدم آخر ، نحتاج إلى استخدام الخيار -u (المستخدم). هنا ، سنقوم بتشغيل الأمر whoami كمستخدم mary . إذا كنت تستخدم الأمر sudo بدون الخيار -u ، فستقوم بتشغيل الأمر root .

الإعلانات

وبالطبع ، نظرًا لأنك تستخدم sudo ، فستتم مطالبتك بكلمة المرور الخاصة بك.

 sudo -u ماري whoami 

يخبرنا الرد من whoami أن حساب المستخدم الذي يقوم بتشغيل الأمر هو mary .

يمكنك استخدام الأمر sudo لتسجيل الدخول كمستخدم آخر دون معرفة كلمة المرور الخاصة به. سيُطلب منك كلمة المرور الخاصة بك. نحتاج إلى استخدام الخيار -i (تسجيل الدخول).

 sudo -i -u ماري
 pwd
 من أنا
 ls -hl
 خروج 

لقد قمت بتسجيل الدخول mary . تتم معالجة ملفات ".bashrc" و ".bash_aliases" و ".profile" لحساب المستخدم mary تمامًا كما لو أن مالك حساب المستخدم mary قد قام بتسجيل الدخول بنفسه.

  • يتغير موجه الأوامر ليعكس هذه جلسة mary حساب المستخدم.
  • يستنسخ الأمر pwd أنك الآن في دليل منزل mary's .
  • يخبرنا whoami أنك تستخدم حساب المستخدم mary .
  • تنتمي الملفات الموجودة في الدليل إلى حساب مستخدم mary .
  • يعيدك أمر exit إلى جلسة حساب المستخدم العادية.

تحرير ملف sudoers

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

الإعلانات

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

على الرغم من بدء عملية التحرير باستخدام الأمر visudo ، visudo ليس محررًا. يستدعي أحد المحررين الحاليين لديك لإجراء تعديلات على الملف. في Manjaro و Ubuntu ، أطلق أمر visudo المحرر البسيط nano . على Fedora ، أطلقت visudo vim قدرة - ولكن الأقل حدسيًا -.

ذات صلة: كيفية الخروج من محرر Vi أو Vim

إذا كنت تفضل استخدام nano على Fedora ، فيمكنك القيام بذلك بسهولة. أولاً ، قم بتثبيت nano :

sudo dnf تثبيت نانو

ثم كان لا بد من استدعاء visudo بهذا الأمر:

 sudo محرر = nano visudo 

يبدو أنه مرشح جيد لاسم مستعار. يتم فتح محرر nano مع تحميل ملف sudoers فيه.

محرر نانو مع تحميل ملف sudoers فيه

إضافة مستخدمين إلى مجموعة sudo

استخدم visudo لفتح ملف sudoers. استخدم إما هذا الأمر أو الأمر الموصوف أعلاه لتحديد المحرر الذي تختاره:

 sudo visudo 

قم بالتمرير خلال ملف sudoers حتى ترى تعريف إدخال %sudo .

ملف sudoers مع تمييز سطر٪ sudo

الإعلانات

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

يتكسر سطر %sudo مثل هذا:

  • ٪ sudo : اسم المجموعة.
  • ALL = : تنطبق هذه القاعدة على جميع المضيفين على هذه الشبكة.
  • (الكل: الكل) : يمكن لأعضاء هذه المجموعة تشغيل الأوامر مثل جميع المستخدمين وجميع المجموعات.
  • الكل : يمكن لأعضاء هذه المجموعة تشغيل جميع الأوامر.

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

لدينا مستخدمان ، توم وماري ، بحسابات المستخدمين tom mary على التوالي. سنضيف حساب المستخدم tom إلى مجموعة sudo باستخدام الأمر usermod . يحدد الخيار -G (المجموعات) المجموعة التي سنضيف حساب tom إليها. يضيف الخيار -a (إلحاق) هذه المجموعة إلى قائمة المجموعات التي يكون حساب المستخدم موجودًا فيها بالفعل. بدون هذا الخيار ، tom tom المجموعة الجديدة ولكن تتم إزالته من أي مجموعات أخرى.

 sudo usermod -a -G sudo tom 

دعنا نتحقق من المجموعات التي تنتمي إليها ماري:

 مجموعات 

حساب المستخدم mary موجود فقط في مجموعة mary .

دعنا نتحقق مع توم:

 مجموعات 

حساب مستخدم tom - وبالتالي ، Tom - موجود في المجموعتين tom and sudo .

دعنا نحاول جعل ماري تفعل شيئًا يتطلب امتيازات sudo .

 sudo less / etc / shadow 

الإعلانات

لا تستطيع ماري النظر داخل الملف المقيد "/ etc / shadow". حصلت على إفادة لطيفة لمحاولتها استخدام sudo دون إذن. دعونا كيف توم فارس:

 sudo less / etc / shadow 

بمجرد أن يقوم توم بإدخال كلمة المرور الخاصة به ، يتم عرض ملف / etc / shadow.

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

منح المستخدمين حقوق sudo المقيدة

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

دعونا نلتقي هاري ، صاحب حساب المستخدم harry . إنه ليس في مجموعة sudo وليس لديه امتيازات sudo .

 مجموعات 

من المفيد أن يكون هاري قادرًا على تثبيت البرنامج ، لكننا لا نريده أن يتمتع بحقوق sudo كاملة. حسنا لا مشكلة. دعنا visudo :

 sudo visudo 

الإعلانات

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

sudoer ملف دخول هاري

إدخال حساب المستخدم هاري هو:

 هاري ALL = / usr / bin / apt-get

لاحظ أن هناك علامة تبويب بين "harry" و "ALL =."

هذا يقرأ كما يمكن لحساب المستخدم harry استخدام الأوامر المدرجة على جميع المضيفين المتصلين بهذه الشبكة. يوجد أمر واحد مدرج ، وهو "/ usr / bin / apt-get." يمكننا منح هاري الوصول إلى أكثر من أمر واحد عن طريق إضافتها إلى قائمة الأوامر ، مفصولة بفواصل.

أضف السطر إلى ملف sudoers ، واحفظ الملف. إذا كنت ترغب في التحقق مرة أخرى من صحة الخط من الناحية التركيبية ، فيمكننا أن نطلب من visudo مسح الملف والتحقق من بناء الجملة لنا ، باستخدام الخيار -c (تحديد فقط):

 sudo visudo -c 

تتم عمليات الفحص ويبلغ visudo أن كل شيء على ما يرام. يجب أن يكون Harry قادرًا الآن على استخدام apt-get لتثبيت البرنامج ولكن يجب رفضه إذا حاول استخدام أي أمر آخر يتطلب sudo .

 sudo apt-get تثبيت الإصبع 

تم منح حقوق sudo المناسبة لـ Harry ، وهو قادر على تثبيت البرنامج.

الإعلانات

ماذا يحدث إذا حاول Harry استخدام أمر مختلف يتطلب sudo ؟

 sudo الاغلاق الآن 

هاري ممنوع من تشغيل الأمر. لقد منحناه بنجاح إمكانية الوصول المحددة والمقيدة. يمكنه استخدام الأمر المعين ولا شيء آخر.

استخدام الأسماء المستعارة لمستخدم sudoers

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

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

دعونا ننشئ User_Alias في ملف sudoers الخاص بنا.

 sudo visudo 

 قم بالتمرير لأسفل في الملف حتى تصل إلى سطر مواصفات User_Alias.

أضف User_Alias عن طريق كتابة:

 User_Alias ​​INSTALLERS = هاري ، ماري

يتم فصل كل عنصر بمسافة وليس بعلامة تبويب. ينقسم المنطق إلى:

  • User_Alias : هذا يخبر visudo أن هذا سيكون User_Alias .
  • المثبتون : هذا اسم عشوائي لهذا الاسم المستعار.
  • = harry، mary : قائمة المستخدمين المراد تضمينهم في هذا الاسم المستعار.
الإعلانات

الآن سنقوم بتحرير السطر الذي أضفناه سابقًا لحساب المستخدم harry :

 هاري ALL = / usr / bin / apt-get

قم بتغييره بحيث يصبح نصه كما يلي:

 المثبتات ALL = / usr / bin / apt-get

يشير هذا إلى أن جميع حسابات المستخدمين الواردة في تعريف "المثبتات" User_Alias يمكنها تشغيل الأمر apt-get . يمكننا اختبار ذلك مع ماري ، التي يجب أن تكون الآن قادرة على تثبيت البرنامج.

 sudo apt-get install colordiff 

ماري قادرة على تثبيت البرنامج لأنها في "المثبتات" User_Alias ، وقد تم منح User_Alias هذه الحقوق.

ثلاث حيل sudo سريعة

عندما تنسى إضافة sudo إلى الأمر ، اكتب

 sudo !!

وسيتم تكرار الأمر الأخير مع إضافة sudo إلى بداية السطر.

بمجرد استخدام sudo والمصادقة باستخدام كلمة مرورك ، لن تضطر إلى استخدام كلمة مرورك مع أوامر sudo الأخرى لمدة 15 دقيقة. إذا كنت تريد أن تُنسى مصادقتك على الفور ، فاستخدم:

 sudo -k
الإعلانات

هل تساءلت يومًا أين يمكنك رؤية محاولات أوامر sudo الفاشلة؟ يذهبون إلى ملف “/var/log/auth.log”. يمكنك مشاهدته مع:

 أقل /var/log/auth.log 

يمكننا رؤية الإدخال الخاص بحساب المستخدم Mary الذي قام بتسجيل الدخول في TTY pts / 1 عندما حاولت تشغيل أمر shutdown كمستخدم "root".

بقوة عظيمة ...

... تأتي القدرة على تفويض أجزاء منها للآخرين. الآن أنت تعرف كيفية تمكين المستخدمين الآخرين بشكل انتقائي.