EGLB - The First and The Only Egyptian Gnu/Linux Blog

Users In Linux


استكمالاً للرحله اللى كنا بدأناها مع ال Linux Commands 


-خلينا قبل ما نبدأ نتكلم عن نقطه من النقاط اﻻساسيه فى دوره حياه ال Linux  عموما ايه هى !

- عشان تدخل على السيستم اصلاً وتبدأ تعمل run  للـ Commands  اللى عمالين نتكمل عليها  دى لازم يكون عندك  حاجه اسمها  username خاص بيك وال username  ده يكون ليه عضويه فى جروب واحد أو أكثر . 



- ايه هى أنواع الـ users بقى اللى هعمل جواها الـ username ده  !!






  1. أول حاجه هنتكلم عنها هو ال  Root User  ال root ده الـ main user  فى اللينكس             سيستم وهو  automatically بيحصله Create اثناء الـ  installation   هو بيبقى أعلى حاجه فى        السيستم  زى ما  بيقولوا كدا الـ super user  وليه كل الصلاحيات على السيستم ويقدر يعمل     أى حاجه فى   الـ  System زى أنه يـ Create User  أو يـ  Delete User  زى الـ Administrator   فى الـ  Windows  بس  مفيش حد يقدر يمسحه  ( it can’t be deleted )

                - يبيقى ليه حاجه أسمها  UID الـ uid  ده  اختصار لـ  ( User Identifier )  وده 
                 السيستم  بيقدر  يوصله من خلاله وده بيبقى رقم ثابت زى رقم البطاقه كدا وهو رقم
               [0]  لل root user

                                                                                                                  

     2. تانى حاجه بقى هو ال Normal User or Regular User  و ده بيبقى ليه صحيات اليوز العادى  أُثناء  التسطيب يوزر واحد بس اللى بيحصله Create اتوماتيك بس بعد التسطيب ممكن نعمل   Create ﻷكتر من يوزر  
"  one regular user account is created automatically "
  - اليوزر ده بقى بيبقى ليه صلحيات متوسطه زى ايه مثلاً !!
     زى انه يعمل  run للأبليكيشن أو يشتغل على البرامج من الأخر كدا بيعمل ال routine tasks
  - اليوزر ده ممكن نمسحه عاادى جدا أو نقفله
- it can be disabled or deleted
           

                    - ال UID بقى للـ  Normal User  الـ Min= 1000  &   Max = 60000 
                       ممكن نتأكد من الكلام ده من خلال ال command  ده  

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



       3.   تالت حاجه بقى الـ Service account   ايه حكايته دى بقى بص يا سيدى الـ service
            account ده عباره عن account بيحصله creation لما أسطب package معينه 
            [ Service accounts are created by installation packages ] طيب أيه لزمته
            هو المسئول عن التحكم بالبرامج والتطبيقات الموجوده على هذ النظام زى ايه مثلا زى الـ
            Apache



                - الـ UID  للـ service account بينحصر ما بين ال uid للـ Root account
                   والـ  uid للـ Normal account 


                                         Root account <  UID  <  Normal account 

  
طيب الـ Users دى بتتخزن فين !!!

  خلينى اقولك أن معلومات الـ users يتم تخزينها فى 4 ملفات ! طب ايه هى الملفات دى !
 
 
 1-  /etc/passwd

 2-  /etc/shadow

 3-  /etc/group

 4-  /etc/gshadow


 - الملفات دى بيتم تحديثها عند اضافه أو تعديل أو حذف يوزر جديد 

- نفس الملفات يتم استدعاءها عند محاولة الدخول للنظام عن طريق يوزر معين للتأكد من صلاحيته للدخول.


تعالى بقى نشرح الملفات دى فيها ايه وﻻ بتعمل ايه  !


أولاً الملف   /etc/passwd :-

- الملف ده بيحتوى على معلومات الـ user كل سطر فيه بيحتوى على معلومه تخص الـ user

يحتوي كل سطر علي 7 حقول أو اجزاء كل جزء منهم مفصول بـ colon ( : )




Example :-
less /etc/passwd/






خلينا نشرح جزء جزء




1. Username
2. The encrypted password (represented by x, located in the /etc/shadow file)
3. User ID number (known as UID)
4. User group ID (known as GID)
5. User full name
6. User home directory
7. The login shell (by default set to bin/bash)



يعنى ايه بقى الكلام ده !!

1- الجزء الاول في الملف
وهو يحتوي علي اليوزر نيم الذي يتم تسجيل الدخول به للسيستيم يمكن كتابة اليوزر نيم حتي 255 حرف
وهنا كمثال اليوزر : newuser


2- الجزء الثاني في الملف وهو يحتوي علي
ال x تسمي بالـ password Place Holder والتي تشير إلي الملف /etc/shadow
والذي يحتوي علي الباسوورد "المشفر" لليوزر



3- الجزء الثالث ويعرف بإسم UID اختصار لـ User ID
هذا الجزء يحمل الرقم الخاص بكل يوزر ويمكنه انه ينشيئ رقم مختلف لكل يوزر ما بين 1 إلي 2 بليون .. منها الرقم 0 محجوز للروت
والارقام ما بين 1 : 999 محجوزة لحسابات النظام وبرامجه
لذلك يبدأ اعطاء الرقم دائما لليوزر الجدد من 1000
مثال : الـ UID لليوزر newuser هو 1001



4- الجزء الرابع ويعرف بإسم GID اختصار لـ Group ID
وهي تكون نفس ال ID الخاص باليوزر " اي انه يتم انشاء ال ID لكلا من اليوزر والجروب بنفس الرقم"
الجروب الموجوده في هذا الملف تمثل الجروب الرئيسية التي ينتمي إليها اليوزر
مثال : الـ GID لليوزر
newuser هو 1001

 

5-  الجزء الخامس يشير إلي الكومنت او التعليق الذي يمكن اضافته لليوزر ( اضافة رقم جواله - عنوانه - ايميله ... إلخ )
مثال انا كتبت New User


6- الجزء السادس يشير إلي المسار المحدد للـ user home directory
اليوزر هوم دايركتري هو المكان الذي يتم تحويل اليوزر عليه بعد عمليه اليوزر مباشرة والذي يكون فيه ملفات اليوزر الخاصة به
والمسار الرئيسي هو /home
مثال : اضفنا يوزر بإسم newuser
فيكون ال user home directory له هو /home/new_newuser
كذلك يوزر ahmed >> /home/ahmed


7- الجزء السابع والاخير يحتوي علي مسار الشيل ( shell) لليوزر الذي يستخدمه اثناء تسجيل الدخول
الشيل الرئيسي والافتراضي الذي يتم انشاءه هو /bin/bash
يمكن ان يتم تعديله لاي باش اخر مثال : Korn or c


ملحوظه على الماشى كدا  :-

التصريح الخاص بالملف /etc/passwd هو 644


ثانياً الملف etc/group/

- الملف دى بقى فيه معلومات الجروب .. كل سطر في الملف فيه جروب مختلف ومعلومات عنه وكل يوزر علي الاقل لازم يكون عضو في جروب واحدة  وزى ما الـ UID هو نفسه الـ GID الى بيتم انشاءه افتراضيا فالإسم برضو  مشابة بمعنى انهُ "افتراضيا اليوزر نيم هو نفسه اسم الجروب "

- كل سطر في الملف عباره عن 4 اجزاء بيفصل بينهم  ( : )


Example :-
less /etc/group/


خلينا نشرح جزء جزء







1- الجزء الاول يحتوي علي اسم الجروب والذي يجيب ان
يبدأ بحرف "وهو افتراضي نفس اسم اليوزر "
يمكن ان يتم انشاء اسم الجروب حتي 255 حرف.



2 - الجزء الثاني
الـ x تشير للملف /etc/gshadow/ والتي تحتوي علي الباسوورد للجروب "إذا تم اضافة باسوورد للجروب"


3 - الجزء الثالث هو الـ GID تم شرحه مسبقا في الملف السابق وهو يحتوي علي نفس الـ ID الموجود في الملف السابق /etc/passwd


4 - الجزء الرابع والاخير يحتوي علي اليوزر الذين لهم عضوية في هذه الجروب


ملحوظه كمان على الماشى كدا  😂😂  :- 

التصريح الخاص بالملف /etc/passwd هو 644.



ثالثاً الملف /etc/shadow/

-  كمزيد من الحماية في انظمة لينكس فالباسوورد ليس مشفر ومغير مسار الملف الذي يحتوي علي الباسوورد بس  .. لا  كمان فى خصائص تانيه مثال ( انتهاء الصلاحية للباسوورد - مدة التحذير ... إلخ ) ممكن ان يتم تنفيذها علي اليوزر وتحديدها والتي تسمي بـ "Password aging"


لو عايز تفهم اكتر عن الـ Password aging   ادخل هنا 


- عند تسجيل عملية دخول لليوزر  الاول بيتم  قراءة ملف passwd وبعدها قراءة ملف shadow عشان أتأكد من صلاحية الدخول


ملف الشادو دى عباره عن  معلومات موسعة لعملية تسجيل الدخول .. كل سطر في الملف يشير إلي معلومات تانيه في ملف الـ passwd

 ملف الشادو (shadow) عباره عن 9 اجزاء .. كل جزء منفصل عن التانى ب ( : )



Example :-
less /etc/shadow/



خلينا نشرح جزء جزء






1- الجزء الاول بيكون فيه اليوزر نيم الى استخدمه في تسجيل الدخول زى المثال هنا  root .


2 - الجزء الثاني خليط من الرموز والارقام والحروف وهو باسوورد اليوزر بس متشفر.
 

3- الجزء الثالث وهو عدد الايام اللى مرت علي اخر تغيير للباسوورد.


4 - الجزء الرابع بيشير الى الحد الادني من الايام واللى مينفعش  يتغيير الباسورد فيه قبل ما تنتهتي المده دى وممكن تفعيلها عن طريق ال commands  دى chage -m او passwd -m .


 5 - الجزء الخامس بيشير لأقصي عدد من الايام لصلاحية الباسوورد قبل ما يحذر اليوزر انه لازم يتم تغيير الباسوورد ويمكن ان يتم تفعيل هذه الخاصية عن طريق chage -M او passwd -x.


6- الجزء السادس بيشير لعدد الايام الي هيظهر لليوزر فيها  تحذير بضرورة تغيير الباسوورد يمكن ان يتم تفعيل هذه الخاصية عن طريق chage -W او passwd.


7-الجزء السابع بيشير إلي أقصي عدد من الايام اللى اليوزر مش بيستخدم فيها اليوزر  عشان يكون غير قابل للاستخدام فيما بعد "مثال : لو لم يتم تسجيل دخول لليوزر لمدة شهر يتم ايقاف حسابة " يمكن ان يتم تحديدها من الامر chage -I او passwd -i


8 - الجزء الثامن يشير لعدد الايام اللي بيتم تشغيل اليوزر فيها وبعد انتهاءها بيتم ايقاف اليوزر "Expired" .


9 - الجزء التاسع محجوز للمستقبل .


كمان ملحوظه معلش 😂😂 :-

 ملف /etc/shadow تصريحه 400



رابعاً بقى وأخيراً  الملف  /etc/gshadow

لحماية أكبر في أنظمة لينكس لجزء الجروب بيتم تشفير الباسوورد وتغيير المسار الموجود فيه الباسوورد ( نفس الامر في /etc/shadow - /etc/passwd )
  الملف  ده بيحتوى على الباسوورد المشفر لكل جروب وكل سطر فيه بيحتوي علي معلومات لجروب مختلفه .. يحتوي كل سطر في الملف علي 4 اجزاء كل جزء مفصول عن الاخر بـ ( : )



less  /etc/gshadow

نشرح جزء جزء


1 - الجزء الاول : بيتكون من اسم الجروب وهي نفسها اللى بتظهر في الملف /etc/group


2 - الجزء الثاني بيتكون من خليط من الارقام والرموز "الباسوورد المشفر " دى لو كان فى فعلا فى باسوورد للجروب وممكن نعيد تعيين الباسوورد علي الجروب عن طريق الامر gpasswd



3 - الجزء الثالث بيبين اليوزر الادمسنتراتور (Administrator user )الموجودين في الجروب " ادمين الجروب " اللى ليهم صلاحية لتعديل او حذف او اضافة أعضاء لنفس الجروب عن طريق الامر gpasswd


4 - الجزء الرابع والاخير يوضح اليوزر الذين لهم عضوية في نفس الجروب



ملحوظه :-
  - إذا كان في الجزء الثاني علامة ! فده معناه انه غير مسموح لاي يوزر ان يكون عضو فى الجروب ده


- وإذا كان هناك علامة !! فدى معناه  انه مفيش باسوورد علي الجروب ومفيش صلاحية لاي يوزر تانى بان يكون عضو في الجروب




للحديث بقيه ان شاء الله

رَبِّ أَوْزِعْنِي أَنْ أَشْكُرَ نِعْمَتَكَ الَّتِي أَنْعَمْتَ عَلَيَّ وَعَلَىٰ وَالِدَيَّ وَأَنْ أَعْمَلَ صَالِحًا تَرْضَاهُ











Linux Comands

Linux Comands

هنتكلم النهارده عن موضوع من أهم الموضوعات فى اللينكس الا وهى الـ Linux Commands الموضوع ده عامل زى العمود الفقرى للانسان لا غنى عنه لو هتكمل ف تراك اللينكس  


- طيب قبل ما نتكلم عن ال commands خلينا نوضح فكره صغيره كدا  !


- مسألتش نفسك قبل كدا هو ازاى ال command ده بيـ run خلينى اقولك هو بيـ run  على حاجه اسمها ال  shell طيب حلو أووى الكلام ده ايه هو ال shell  دى بقى 🤔 



-الـ shell ده هو البرنامج الوسيط بينك وبين نظام التشغيل لانه هو بياخد الاوامر اللى انت بتديهاله ويقوم بتفسيرها لنظام التشغيل عشان نظام التشغيل او الـ operating system  يروح ينفذها .



- طيب ليه بقى سموه Shell !!

لأنه بيخفى عنك تعقيدات تنفيذ العمليه دى بالاصح كدا مش بيدخلك فى تفاصيل متهمكش فهو بياخد منك اﻻوامر ويرجعلك النتيجه .



- طب ايه بقى انواع ال Shell ده !!

    -( GUI- based-Shell ) وده أختصار ل Graphical User Interface زى GNOME, KDE ,Xfce 

     -( CLI -based-Shell )  وده أختصار ل Command Line Interface وده زى Ksh , bash , csh 



طيب احنا بنكتب على أيه !

احنا بنكتب على الـ BASH لانه ببساطه بيجمع بين مميزات ال csh , Ksh  بالاضافه ﻻنه تحسين ﻻول Shell فى تاريخ ال Unix .



فلنبدأ أولى رحلاتنا مع اﻻوامر  



First :File Commands :-


1- pwd :

وهوأختصارلـ (Print Working Directory)


- Show the path of current Directory .


- وده بيعرفنى مكانى فى الفايل سيستم يعنى أنا واقف فين بالضبط 


Example : open terminal  

هيظهر حاجه زى دى $~root@unix  دى اسمها ال shell prompt 

root@unix ~$ pwd

Output : /home/username                                                             

- معنى كدا انى واقف فى ال home directory  بتاع الـ user اللى انا عامل بيه login 


2- ls

وده اختصار ل ( list )


Show all files and directories in current directory with nice feature .


- وده بيعرفنى كل الفايلات والملفات الموجوده فى المكان اللى أنا واقف فيه .


Example : on terminal

nour@unix ~$ ls

Output : [ Desktop , Documents , Downloads , ....... etc ]



# ll ( it is an alias from ls -l )


وده اختصار لـ ( Long Listing )



- Show all files and directories in current directory arranged alphabetical  with details .


وده بيعرفى كل الفايلات والملفات الموجوده فى المكان اللى أنا واقف فيه بس مترتبه ترتيب أبجدى و بتفاصيل اكتر .

مش فاهم حاجه 🤔😅


خلينا ناخد مثال عشان نفهم اكتر :-


Example : on terminal

nour@unix ~$ ll


Output :drwxr-xr-x  2 nour nour  4096 May 28 16:09 Desktop/



برضو مش فاهم حاجه هتلافى شرح الناتج بتاع ll مشروح بالتفصيل هنا


# ls -l == ll 

نفس الناتج بالضبط


# ls -lt > as same as (# ls -l) , but arranged by access time , from nearest time to furthest time.


- وده بيعرفى كل الفايلات والملفات الموجوده فى المكان اللى انا واقف فيه بس مترتبه حسب الوقت اللى انشى فيه الفايل من اﻻقرب للابعد .



Example : on terminal

nour@unix ~$ ls -lt

Output :drwxr-xr-x 2 nour nour 4096 May 28 16:09  Desktop


#ls -lr > as same as (# ls -l) , but arranged reversed alphabetical .


- وده بيعرفى كل الفايلات والملفات الموجوده فى المكان اللى انا واقف فيه بس مترتبه ترتيب ابجدى معكوس .


Example : on terminal

nour@unix ~$ ls -lr

Output : drwxr-xr-x 2 nour nour 4096 Oct 10 2019 Music.

drwxr-xr-x 10 nour nour 4096 Apr 17 17:48 movies.



# ls -al > Display all information about files / Directories .


- وده بيعرفنى كل المعلومات عن الفايلات والملفات فى المكان اللى انا واقف فيه



Example : on terminal

nour@unix ~$ ls -al

Output :drwxr-xr-x 2 nour nour 4096 May 28 16:09 Desktop


3- touch

touch test >To Create an Empty file with name test 


- وده بيعرفنى ازاى انشئ فايل جديد .


Example : on terminal

nour@unix ~$ touch test


ملحوظه قلبوظه :-

if you Execute this command again # touch test it will not create a new file but it will update the access time of the file only.



يعنى ايه برضو الكلام ده انا مش فاهم حاجه 😡

- بص يا سيدى يعنى لو قعدت تعمل run لنفس ال command كذا مره هو مش هيعمل create لفايلات جديده ﻻﻻﻻﻻﻻﻻﻻﻻﻻﻻﻻﻻﻻﻻﻻ هو هيحدث الوقت ﻻخر وقت انت عملت فيه run لل Command



4-mkdir


- و ده اختصار لـ (make directory)

- TO Create Directory Like a folder in windows.



- و ده عشان يعمل create لـ ملف جديد .


mkdir directory-name


Example 1 :-

 nour@unix ~$  mkdir dir1


Example 2 :-

nour@unix ~$ mkdir ~/Desktop/Photos Videos Music

- to create 3 directories Videos and Music under current Location and Photos in shown Path.



-و ده معناه انه هيعمل create ل 3 ملفات اللى هما (Photos Videos Music ) ال Videos و ال Music تحت ال home directory بتاعك أما ال Photos هتبقى تحت ال Path ال هو Desktop/~


#mkdir -p ~/Desktop/Mydir/dir1


و p- دى اختصار لـ preserve the parent


- ناخد مثال عشان نفهم :-

nour@unix ~$ mkdir -p ~/Desktop/Mydir/dir


-و ده هيعمل create لـ ملفين تحت بعض بمعنى انه هينشئ ملف Mydir تحتDesktop/~ وتحت ال Mydir هينشئ dir1 .


5- cp


- و ده اختصار لـ Copy


To Copy file from place to another


Example 1 :-

nour@unix ~$ cp ~/Desktop /file1 ~/Desktop/Mydir/newfile


> that will copy 'file1' file and paste it under ' Mydir ' directory with new name newfile.


Example 2 :-

nour@unix ~$ cp -r ~/Desktop /dir ~/unix/Desktop/


> that will copy' dir1' directory and paste it under 'Desktop' directory under unix home directory.


5.1- Scp


- و ده اختصار لـ Secure Copy



is a tool which used to copy files between hosts on a Network .



- و دى اداه تُمكن المستخدم انه ينقل الفايلات ما بين الـ hosts عن طريق الـ Network بس بطريقه آمنه لانه من اسمه كدا اسمه النسخ الآمن , ليه بنستخدمه اصلاً ﻻنه بيتميز عن طرق أخرى بتشفيره للملفات اثناء نقلها .



خلينا نتكلم بتوسع اكتر عن الموضوع احنا بنقول انه يقدر ينقل ملفات ما بين الـ hosts حتى لو بُعاد عن بعض لا وبطريقه آمنه كمان ازاى الكلام ده ﻻنه بيعتمد على الـ SHH  والـ ssh ده هنلاقى شرحه  هنا 



خلينا ناخد مثال عشان نفهم اكتر 



scp   local-machine   username@server-ip : /path-to-remote-directory.


نشرح حاجه حاجه فى المثال ده لو عايز أنقل حاجه من الجهاز بتاعى لـ سيرفر 


  • local machine : المسار  على الجهاز بتاعى 
  • username :  الـ user  الموجود على الـ Server 
  • Server-ip : الـ ip  بتاع السيرفر اللى عايز انقل عليه الحاجه 
  • Path to remote directory :  المسار اللى موجود على السيرفر 

Example 1 :-

nour@unix ~$ scp   Source       Destination

nour@unix ~$ scp   /home /unix /Downloads / fedora.iso   ahmed@10.0.0.75 : /media /dir5 /media-server



Example 2 :- 

nour@unix ~$ scp  -r   /home /unix /Downloads    Centos@10.0.0.75 : /media /dir5 /media-server/ 



فى المثال ده هو هينقل ال directory  اللى اسمه Downloads  من عندى للسيرفر  لـ  user ahmed  باستخدام ip 10.0.0.75  



Example 3 :- 

nour@unix ~$ scp  -r   /home /unix /Downloads/*    Centos@10.0.0.75 : /media /dir5 /media-server/ 



الفرق بين  ( example 2 , example 3)  انه example 3  هينسخ ما يحويه المجلد  من ملفات  بينما  example 2  هينسخ المجلد ومحتوياته معا .




- لو انا عايز انقل حاجه من السيرفر للجهاز عندى بقى اعمل ايه !!


scp  username@server-ip:/path-to-source-directory   path-to-the-remote-directory/


Example:-


nour@unix ~$ scp   unix@10.0.0.75:/etc/yum.repos.d/Centos.repo   /tmp/



6- rm

- و ده اختصار لـ remove

To Delete file

Example 1 :-

nour@unix ~$ rm ~/Desktop /file1

nour@unix ~$ rm -r ~/Desktop /dir1 [ that will remove directory dir1]



Note :- if you have a directory and it contain 50 files and you want to delete this directory with all files you will be asked for a confirmation for each file that in this directory .



- يعنى ايه الكلام ده بقى : يعنى لو عندى ملف يحتوى على 50 فايل وعايز امسح الملف ده اكيد مش همسح كل الفايلات فايل فايل طب اعمل ايه بقى

- الحل بقى انى استخدم rf - وده هيمسحلى كل directory بالـ ملفات اللى جواه


nour@unix ~$ rm -rf ~/Desktop /dir [But it Very dangerous as it will delete  directory without ask you ]


- طيب انا لو عايزه امسح الفايلات بس من غير ما امسح الملف نفسه اعمل ايه !!

nour@unix ~$ rm -rf ~/Desktop /dir/*


7- mv

- و ده اختصار لـ Move


> that will move file or directories from one place to another && Rename file.


- وده بيستخدم فى انه ينقل ملف او فايل أو يعمل اعاده تسميه للفايلات او الـ directories.



Example :-

nour@unix ~$ mv ~/Desktop /file1 ~/Desktop /file2 [Rename ]

nour@unix ~$ mv ~/Desktop /Mydir/file1 ~/Desktop /dir1/file1 [Move ]

nour@unix ~$ mv ~/Desktop /Mydir/file1 ~/Desktop /dir1/file2 [Move & Rename ]



8- wc


- و ده اختصار لـ Word Count

من اﻻخر كدا فايده ال Command دة انه بيظهرلك عدد السطور او عدد الكلمات فى الفايل


> Print number of bytes ,word, and lines in files

Example :-

nour@unix ~$ wc ~/Desktop /file1


output :- 12 16 112 ~/Desktop /file1


الرقم 112 بيدل على عدد ال bytes ، الرقم 16 بيدل على عدد الكلمات , الرقم 12 بيدل غلى عدد السطور


وبكده نكون انتهينا من شرح الـ  File Commands اتمنى ينال اعجاب حضراتكوا


رَبِّ أَوْزِعْنِي أَنْ أَشْكُرَ نِعْمَتَكَ الَّتِي أَنْعَمْتَ عَلَيَّ وَعَلَىٰ وَالِدَيَّ وَأَنْ أَعْمَلَ صَالِحًا تَرْضَاهُ










الأشعارات
لا يوجد لديك اليوم اشعارات جديدة
حسناً