كيفية سرد المستخدمين في Linux

نشرت: 2022-06-25
كمبيوتر محمول Linux يعرض موجه bash
fatmawati achmad zaenuri / Shutterstock.com

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

حسابات المستخدمين

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

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

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

كيفية حذف مستخدم على Linux (وإزالة كل أثر)
ذات صلة كيفية حذف مستخدم على Linux (وإزالة كل أثر)

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

سرد المستخدمين بأمر القط

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

كيفية تغيير بيانات المستخدم باستخدام chfn و usermod على نظام Linux
ذات صلة كيفية تغيير بيانات المستخدم باستخدام chfn و usermod على نظام Linux

يمكننا استخدام الأمر cat لإرسال محتويات ملف “etc / passwd / / إلى نافذة المحطة الطرفية. سيؤدي هذا إلى سرد محتويات الملف بالكامل. هذا يعني أنك سترى أيضًا إدخالات حسابات المستخدمين المملوكة للعمليات والنظام ، وليس بواسطة الأشخاص.

 cat / etc / passwd 

إرسال محتويات ملف / etc / passwd إلى نافذة المحطة الطرفية باستخدام cat

تم الإبلاغ عن سطر من المعلومات الكثيفة لكل حساب مستخدم.

محتويات ملف / etc / passwd

تحتوي المعلومات الخاصة بحساب المستخدم المسمى "ديف" على هذه الأجزاء من المعلومات ، مع النقطتين " : " بينهما.

  • ديف : اسم حساب المستخدم. عادة اسم الشخص الذي يملك الحساب.
  • س : في وقت من الأوقات ، احتفظ هذا بكلمة المرور للحساب. في الوقت الحاضر ، يتم تخزين كلمات المرور في ملف "/ etc / shadow". يعني "x" أن كلمة المرور موجودة في هذا الملف.
  • 1000 : معرف المستخدم لهذا الحساب. جميع حسابات المستخدمين لها معرف رقمي فريد. تبدأ حسابات المستخدمين العادية عادةً من 1000 ، مع أخذ كل حساب جديد المعرف المجاني التالي ، مثل 1001 و 1002 وما إلى ذلك.
  • 1000 : معرف المجموعة للمجموعة الافتراضية التي ينتمي إليها المستخدم. في الظروف العادية ، يكون للمجموعة الافتراضية نفس قيمة معرف المستخدم.
  • dave ،،، : مجموعة من المعلومات الإضافية الاختيارية حول المستخدم. يحتوي هذا الحقل على بيانات بينها فاصلات " , ". يمكنهم الاحتفاظ بأشياء مثل الاسم الكامل للمستخدم ورقم مكتبهم ورقم هاتفهم. يُظهر إدخال حساب المستخدم "mary" اسمها الكامل هو Mary Quinn.
  • / home / dave : المسار إلى المجلد الرئيسي للمستخدم.
  • / bin / bash : الصدفة الافتراضية لهذا المستخدم.

إذا قمنا بتوجيه الإخراج من هذا الأمر من خلال الأداة المساعدة wc واستخدمنا الخيار -l (الأسطر) ، فيمكننا حساب الأسطر في الملف. سيعطينا ذلك عدد الحسابات التي تم تكوينها على هذا الكمبيوتر.

 القط / الخ / passwd | مرحاض -l 

حساب عدد الحسابات في ملف / etc / passwd

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

مع هذا العدد الكبير من الحسابات ، يكون من الأنسب استخدام less لعرض ملف "/ etc / passwd".

 أقل / الخ / passwd 

فتح ملف / etc / passwd بأقل من ذلك

يسمح لك استخدام less أيضًا بالبحث داخل الإخراج ، إذا كنت تريد البحث عن حساب مستخدم معين.

البحث عن حساب ماري في ملف / etc / passwd ، بأقل من ذلك

أمر awk

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

كيفية استخدام الأمر awk على نظام Linux
ذات صلة كيفية استخدام الأمر awk على نظام Linux

سنطلب من awk استخدام النقطتين ":" كفاصل للحقل ، ولطباعة الحقل الأول. سنستخدم الخيار -F (فاصل المجال).

 awk -F: '{print $ 1}' / etc / passwd 

أمر awk لتحديد أسماء المستخدمين فقط من الملف / etc / passwd

تتم كتابة أسماء حسابات المستخدمين في نافذة الجهاز بدون أي من معلومات الحساب الأخرى.

أسماء حسابات المستخدم المعروضة في نافذة المحطة

أمر القطع

يمكننا تحقيق نفس الشيء باستخدام أمر cut . نحتاج إلى استخدام الخيار -d (المحدد) ونطلب منه تحديد الحقل الأول فقط ، باستخدام الخيار -f (الحقول).

 cutr -d: -f1 

استخدام الأمر cut لعرض أسماء المستخدمين فقط من ملف / etc / passwd

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

أمر compgen

يمكن استخدام الأمر compgen مع الخيار -u (المستخدم) لسرد حسابات المستخدمين. سنقوم بتمرير الإخراج من خلال أمر column لسرد حسابات المستخدمين في أعمدة ، بدلاً من قائمة طويلة واحدة مع اسم مستخدم واحد في كل سطر.

 compgen -u | عمودي 

استخدام الأمرين compgen والعمود لسرد أسماء حسابات المستخدمين من ملف / etc / passwd في أعمدة

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

UID MIN و UID MAX

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

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

يتتبع Linux هاتين القيمتين باستخدام معلمات التكوين المسماة UID_MIN و UID_MAX . هذه محفوظة في ملف “/etc/login.defs”. يمكننا بسهولة رؤية هذه القيم باستخدام grep .

سنستخدم الخيار -E (التعبير العادي الموسع). تبحث سلسلة البحث الخاصة بنا عن الأسطر التي تبدأ بـ “UID_MIN” أو “UID_MAX” في ملف “/etc/login.defs”. علامة الإقحام " ^ " تمثل بداية السطر.

 grep -E '^ UID_MIN | ^ UID_MAX' /etc/login.defs 

يتراوح نطاق معرفات المستخدم على هذا الكمبيوتر من 1000 إلى 60.000.

ذات صلة: كيفية استخدام التعبيرات العادية (regexes) على Linux

الأمر getent

يقرأ الأمر getent المعلومات من قواعد بيانات النظام. يمكننا إخباره بسرد الإدخالات في الملف “/ etc / passwd” باستخدام “passwd” كمعامل.

 getent passwd 

استخدام getent لتفريغ ملف etc / passwd / في نافذة المحطة الطرفية

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

 الحصول على كلمة المرور سارة

لاحظ أن اسم حساب المستخدم حساس لحالة الأحرف.

 الحصول على كلمة المرور سارة 

أبحث عن حساب مستخدم واحد مع getent

يمكننا أيضًا تمرير الحدود العليا والسفلى لمعرفات حساب المستخدم التي نريد رؤيتها. للاطلاع على جميع حسابات المستخدمين العادية تمامًا ، يمكننا استخدام القيم من UID_MIN و UID_MAX .

 getent passwd {1000..60000} 

استخدام معرفات الحساب العلوي والسفلي مع getent

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

يتم إرسال محتويات ملف / etc / passwd إلى نافذة المحطة الطرفية بواسطة getent

سبب وقت التنفيذ الطويل هو أن getent يحاول العثور على تطابقات لجميع قيم حساب المستخدم حتى 60000.

دعونا نرى ما هو أعلى معرف حساب مستخدم. سنستخدم الأمر cut ، لكن هذه المرة سنطلب الحقل الثالث ، حقل معرف المستخدم. سنقوم بتوجيه الإخراج من خلال sort واستخدام الخيار -g (الفرز الرقمي العام).

 قطع -d: -f3 / etc / passwd | فرز -g 

الأمر لتوجيه الإخراج من المقطع إلى أمر الفرز

أعلى قيمة معرف لحساب المستخدم المملوك بشريًا هي 1401.

قائمة مصنفة بمعرفات حساب المستخدم

تم تعيين معرف المستخدم 65534 لمفهوم النظام "لا أحد".

 getent passwd {65534..65534} 

مستخدم النظام لا أحد برقم التعريف 65534

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

getent passwd {1000..1500} | قطع -d: -f1

إخراج getent piped خلال قص لقائمة أسماء حسابات المستخدم

يتم سرد المستخدمين وإعادتنا على الفور إلى موجه الأوامر.

بدلاً من توجيه الإخراج عبر cut ، دعنا نمر المخرجات عبر wc الخطوط مرة أخرى. سيعطينا ذلك عدد حسابات المستخدمين "الحقيقية".

 getent passwd {1000..1500} | مرحاض -l 

حساب حسابات المستخدمين العادية مع getent و wc

يمكننا الآن أن نرى أنه على هذا الكمبيوتر ، بشكل نهائي ، هناك 400 حساب مستخدم مهيأ ومملوك للبشر.

القوة والبساطة

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

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