كيفية التحكم في sudo Access على نظام Linux
نشرت: 2022-01-29 يتيح لك الأمر 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 فيه.
إضافة مستخدمين إلى مجموعة sudo
استخدم visudo
لفتح ملف sudoers. استخدم إما هذا الأمر أو الأمر الموصوف أعلاه لتحديد المحرر الذي تختاره:
sudo visudo
قم بالتمرير خلال ملف 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
قم بالتمرير لأسفل خلال الملف حتى تتجاوز تعريفات المجموعة. سنضيف سطرًا لهاري. نظرًا لأن هذا تعريف مستخدم وليس تعريف مجموعة ، لا نحتاج إلى بدء السطر بعلامة النسبة المئوية.
إدخال حساب المستخدم هاري هو:
هاري 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".
بقوة عظيمة ...
... تأتي القدرة على تفويض أجزاء منها للآخرين. الآن أنت تعرف كيفية تمكين المستخدمين الآخرين بشكل انتقائي.