كيفية سرد المستخدمين في Linux
نشرت: 2022-06-25Linux هو نظام تشغيل متعدد المستخدمين ، لذا فإن إنشاء العديد من حسابات المستخدمين أمر سهل. بمرور الوقت ، من السهل أن تفقد أي الحسابات المطلوبة. يساعدك سرد حسابات المستخدمين على إدارتها.
حسابات المستخدمين
غالبًا ما تجلب التطورات في التكنولوجيا مشاكلها الجديدة. بمجرد أن تمكنت أجهزة الكمبيوتر من دعم العديد من المستخدمين ، أصبحت الحاجة إلى ربط عمل كل شخص وتغليفه من أي شخص آخر واضحًا. أدى ذلك إلى مفهوم حسابات المستخدمين. كل مستخدم لديه معرف مسمى وكلمة مرور. هذه هي بيانات الاعتماد التي تسمح لهم بتسجيل الدخول إلى حساباتهم. يتم الاحتفاظ بملفاتهم في منطقة خاصة لكل مستخدم.
في نظام مشغول ، من السهل أن تغيب عن بالنا الحسابات التي قمت بإنشائها والتي لم تعد هناك حاجة إليها. من وجهة نظر الأمان ، من الممارسات السيئة الاحتفاظ بحسابات المستخدمين التي لم تعد بحاجة إلى تكوينها والوصول إليها على جهاز الكمبيوتر الخاص بك. يجب عليك إزالة هؤلاء المستخدمين.
حتى إذا لم يكن لديك أشخاص آخرون يستخدمون جهاز الكمبيوتر الخاص بك ، فربما تكون قد أنشأت بعض الحسابات فقط لتتعلم كيفية القيام بذلك ، أو لتعلم وممارسة عمليات الإدارة.
تتمثل الخطوة الأولى في سرد حسابات المستخدمين التي تم تكوينها على جهاز الكمبيوتر الخاص بك. يتيح لك ذلك مراجعتها وإصدار حكم بشأن ما يمكن حذفه. هناك عدة طرق لسرد المستخدمين. بغض النظر عن التوزيع الذي تستخدمه ، يجب أن تعمل هذه التقنيات من أجلك دون الحاجة إلى تثبيت أي تطبيقات أو أدوات مساعدة.
سرد المستخدمين بأمر القط
يتم الاحتفاظ بقائمة بالمستخدمين الذين تم تكوينهم ، جنبًا إلى جنب مع معلومات حول كل مستخدم ، في ملف "/ etc / passwd". هذا ملف نصي يمكن للمستخدمين العاديين إدراجه في نافذة المحطة الطرفية. لا تحتاج إلى استخدام sudo
للنظر في ملف "/ etc / passwd".
يمكننا استخدام الأمر cat
لإرسال محتويات ملف “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
يتضمن هذا الرقم حسابات النظام والمستخدمين الذين تم إنشاؤهم بواسطة التطبيقات. يوجد حوالي 400 مستخدم عادي تم تكوينهم على هذا الكمبيوتر. من المرجح أن تكون نتيجتك أقل بكثير.
مع هذا العدد الكبير من الحسابات ، يكون من الأنسب استخدام less
لعرض ملف "/ etc / passwd".
أقل / الخ / passwd
يسمح لك استخدام less
أيضًا بالبحث داخل الإخراج ، إذا كنت تريد البحث عن حساب مستخدم معين.
أمر awk
باستخدام الأمر awk
يمكننا عرض اسم المستخدم فقط. يمكن أن يكون هذا مفيدًا عند كتابة برنامج نصي يحتاج إلى القيام بشيء ما للعديد من حسابات المستخدمين. يمكن أن يكون إدراج أسماء حسابات المستخدم وإعادة توجيهها إلى ملف نصي بمثابة توفير كبير للوقت. كل ما عليك فعله بعد ذلك هو نسخ بقية الأمر ولصقه في كل سطر.
سنطلب من awk استخدام النقطتين ":" كفاصل للحقل ، ولطباعة الحقل الأول. سنستخدم الخيار -F (فاصل المجال).
awk -F: '{print $ 1}' / etc / passwd
تتم كتابة أسماء حسابات المستخدمين في نافذة الجهاز بدون أي من معلومات الحساب الأخرى.
أمر القطع
يمكننا تحقيق نفس الشيء باستخدام أمر cut
. نحتاج إلى استخدام الخيار -d
(المحدد) ونطلب منه تحديد الحقل الأول فقط ، باستخدام الخيار -f
(الحقول).
cutr -d: -f1
يسرد هذا جميع حسابات المستخدمين ، بما في ذلك النظام والحسابات الأخرى غير البشرية.
أمر compgen
يمكن استخدام الأمر compgen
مع الخيار -u
(المستخدم) لسرد حسابات المستخدمين. سنقوم بتمرير الإخراج من خلال أمر column
لسرد حسابات المستخدمين في أعمدة ، بدلاً من قائمة طويلة واحدة مع اسم مستخدم واحد في كل سطر.
compgen -u | عمودي
مرة أخرى ، تنتمي حسابات المستخدمين الأولى المدرجة إلى العمليات ، وليس البشر.
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
هذا يعطينا نفس القراءة التي يمكننا الحصول عليها باستخدام cat
. ولكن حيث تتألق getent
بقبول القيم المعروفة باسم "المفاتيح". المفتاح يملي المعلومات التي getent
على التقارير. إذا أردنا رؤية الإدخال لمستخدم واحد ، فيمكننا تمرير اسم حساب المستخدم الخاص به في سطر الأوامر.
الحصول على كلمة المرور سارة
لاحظ أن اسم حساب المستخدم حساس لحالة الأحرف.
الحصول على كلمة المرور سارة
يمكننا أيضًا تمرير الحدود العليا والسفلى لمعرفات حساب المستخدم التي نريد رؤيتها. للاطلاع على جميع حسابات المستخدمين العادية تمامًا ، يمكننا استخدام القيم من UID_MIN
و UID_MAX
.
getent passwd {1000..60000}
هذا يستغرق بعض الوقت للتشغيل. في النهاية ، ستتم إعادتك إلى موجه الأوامر.
سبب وقت التنفيذ الطويل هو أن getent
يحاول العثور على تطابقات لجميع قيم حساب المستخدم حتى 60000.
دعونا نرى ما هو أعلى معرف حساب مستخدم. سنستخدم الأمر cut
، لكن هذه المرة سنطلب الحقل الثالث ، حقل معرف المستخدم. سنقوم بتوجيه الإخراج من خلال sort
واستخدام الخيار -g
(الفرز الرقمي العام).
قطع -d: -f3 / etc / passwd | فرز -g
أعلى قيمة معرف لحساب المستخدم المملوك بشريًا هي 1401.
تم تعيين معرف المستخدم 65534 لمفهوم النظام "لا أحد".
getent passwd {65534..65534}
لذلك نحن نعلم أنه بدلاً من استخدام قيمة UID_MAX
البالغة 60000 ، يمكننا استخدام قيمة أكثر واقعية على هذا الكمبيوتر مثل 1500. سيؤدي ذلك إلى تسريع الأمور بشكل جيد. سنقوم أيضًا بتوجيه الإخراج عبر cut
لاستخراج أسماء حسابات المستخدمين فقط.
getent passwd {1000..1500} | قطع -d: -f1
يتم سرد المستخدمين وإعادتنا على الفور إلى موجه الأوامر.
بدلاً من توجيه الإخراج عبر cut
، دعنا نمر المخرجات عبر wc
الخطوط مرة أخرى. سيعطينا ذلك عدد حسابات المستخدمين "الحقيقية".
getent passwd {1000..1500} | مرحاض -l
يمكننا الآن أن نرى أنه على هذا الكمبيوتر ، بشكل نهائي ، هناك 400 حساب مستخدم مهيأ ومملوك للبشر.
القوة والبساطة
من المؤكد أن إحدى هذه التقنيات تناسب احتياجاتك عندما تحتاج إلى مراجعة حسابات المستخدمين على كمبيوتر Linux. يجب أن تكون هذه الأوامر موجودة في جميع التوزيعات ، ولا يتطلب أي منها وصول sudo
، لذا فهي جميعًا متاحة لكل مستخدم.
ذات صلة: كيفية التحكم في sudo Access على نظام Linux