{"id":67945,"date":"2024-07-03T03:47:06","date_gmt":"2024-07-03T00:17:06","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/how-to-automate-the-creation-of-users-and-groups-in-linux-using-bash-script-33am\/"},"modified":"2024-07-03T03:47:06","modified_gmt":"2024-07-03T00:17:06","slug":"how-to-automate-the-creation-of-users-and-groups-in-linux-using-bash-script-33am","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/how-to-automate-the-creation-of-users-and-groups-in-linux-using-bash-script-33am\/","title":{"rendered":"\u0646\u062d\u0648\u0647 \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627 \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Bash Script."},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0645\u0639\u0631\u0641\u06cc\u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u062f \u062f\u0631 \u06cc\u06a9 \u0634\u0631\u06a9\u062a \u0628\u0633\u06cc\u0627\u0631 \u0628\u0632\u0631\u06af \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0634\u0631\u06a9\u062a \u0634\u0645\u0627 \u062d\u062f\u0648\u062f 100 \u06a9\u0627\u0631\u0645\u0646\u062f \u062c\u062f\u06cc\u062f \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u0648 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u062d\u0633\u0627\u0628 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646\u0647\u0627 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0622\u0646\u0647\u0627 \u0628\u0647 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0628\u0631 \u0639\u0647\u062f\u0647 \u0634\u0645\u0627\u0633\u062a.<\/p>\n<p>\u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0633\u06cc\u0627\u0631 \u062e\u0633\u062a\u0647 \u06a9\u0646\u0646\u062f\u0647 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0633\u062a\u0639\u062f \u062e\u0637\u0627 \u0628\u0627\u0634\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0633\u0627\u062f\u0647 BASH \u0622\u0634\u0646\u0627 \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f. <\/p>\n<p>\u0627\u0644\u0632\u0627\u0645\u0627\u062a<\/p>\n<p>\u0645\u0627\u0634\u06cc\u0646 \u0644\u06cc\u0646\u0648\u06a9\u0633<br \/>\n\u062f\u0627\u0646\u0634 \u0627\u0648\u0644\u06cc\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0646\u0648\u06cc\u0633\u06cc<br \/>\n\u06cc\u06a9 \u0641\u0627\u06cc\u0644 txt \u06a9\u0647 \u062d\u0627\u0648\u06cc \u0646\u0627\u0645 \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 (\u06a9\u0627\u0631\u0628\u0631\u0627\u0646) \u0648 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0622\u0646\u0647\u0627 \u0627\u0633\u062a N\/B: \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u00ab;\u00bb \u0627\u0632 \u0647\u0645 \u062c\u062f\u0627 \u0634\u0648\u0646\u062f \u0648 \u062f\u0631 \u0634\u0631\u0627\u06cc\u0637\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0628\u06cc\u0634 \u0627\u0632 \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u062a\u0639\u0644\u0642 \u062f\u0627\u0631\u062f\u060c \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u06a9\u0627\u0645\u0627 (&#8216;,&#8217;) \u0627\u0632 \u0647\u0645 \u062c\u062f\u0627 \u0645\u06cc \u0634\u0648\u0646\u062f.  \u0646\u0645\u0648\u0646\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f\u061b<\/p>\n<p>staff.txt<\/p>\n<p>Onyeka;electronics,devOps<br \/>\nCharles;admin<br \/>\nBukola;marketing<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 1\u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0647 \u0646\u0627\u0645 create_users.sh \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 nano \u06cc\u0627 vim \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>nano create_users.sh<\/p>\n<p>\u06af\u0627\u0645 2\u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0622\u0646\u0647\u0627 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u06af\u0632\u0627\u0631\u0634 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.  \u0645\u0627 \u0645\u0637\u0645\u0626\u0646 \u0645\u06cc \u0634\u0648\u06cc\u0645 \u06a9\u0647 shebang (#!\/bin\/bash) \u0642\u0628\u0644 \u0627\u0632 \u0647\u0631 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631 \u0628\u0627\u0644\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>#!\/bin\/bash<\/p>\n<p>#create main directory to save files<br \/>\nmkdir var<br \/>\ncd var #move inside the created dir<\/p>\n<p>#create log folder and user_mgt.log inside the folder<br \/>\nmkdir log &amp;&amp; touch log\/user_management.log<\/p>\n<p>#create secure folder and user_passwd file inside the folder<br \/>\nmkdir secure &amp;&amp; touch secure\/user_passwords.txt<br \/>\n#Read and Write permission for the owner only<br \/>\nchmod 700 secure<br \/>\n# go back to the home dir<br \/>\ncd ..<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06cc\u06a9 dir \u0628\u0647 \u0646\u0627\u0645 var \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f\u060c \u062f\u0631 \u062f\u0627\u062e\u0644 var dir\u060c \u062f\u0648 \u067e\u0648\u0634\u0647 \u062f\u06cc\u06af\u0631 \u0628\u0627 \u0646\u0627\u0645 \u0647\u0627\u06cc log \u0648 \u0627\u0645\u0646 \u0628\u0627 user_management.log \u0648 user_passwords.txt \u062f\u0631 \u062f\u0627\u062e\u0644 \u0622\u0646\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u0634\u0648\u062f.  \u0633\u067e\u0633 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 #chmod \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u0648\u0634\u0647 \u0627\u0645\u0646 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 3\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627\u060c \u0645\u0627 \u062a\u0648\u0627\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc\u060c \u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f\u060c \u06af\u0631\u0648\u0647 \u062c\u062f\u06cc\u062f \u0648 \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0647 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p>#function to generate password<br \/>\ngenerate_password() {<br \/>\n  local password=$(openssl rand -base64 12)<br \/>\n  echo &#8220;$password&#8221;<br \/>\n}<\/p>\n<p>#Create users, groups and generate password<br \/>\n#for them, then  assign groups to the created users<\/p>\n<p>#function to create users<br \/>\ncreateUser(){<br \/>\n  local user=&#8221;$1&#8243;<br \/>\n  id &#8220;$user&#8221; &amp;&gt;\/dev\/null<br \/>\n  if [ $? -eq 1 ]; then #check if user is existing<br \/>\n     sudo useradd -m &#8220;$user&#8221;<br \/>\n     echo &#8220;user $user created&#8221;<br \/>\n  else<br \/>\n     echo &#8220;$user already created&#8221;<br \/>\n  fi<br \/>\n}<\/p>\n<p>#function to create group<br \/>\ncreateGroup(){<br \/>\n  local group=&#8221;$1&#8243;<br \/>\n  getent group &#8220;$group&#8221; &amp;&gt;\/dev\/null<br \/>\n  if [ $? -eq 2 ]; then #check if group has been created<br \/>\n     sudo groupadd &#8220;$group&#8221;<br \/>\n     echo &#8220;group $group created&#8221;<br \/>\n  else<br \/>\n     echo &#8220;$group already created&#8221;<br \/>\n  fi<br \/>\n}<\/p>\n<p>#function to add users to group<br \/>\naddUser_to_group(){<br \/>\n  local user=&#8221;$1&#8243;<br \/>\n  local group=&#8221;$2&#8243;<\/p>\n<p>  sudo usermod -aG &#8220;$group&#8221; &#8220;$user&#8221;<br \/>\n  echo &#8220;$user added to group: $group&#8221;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 4\u0627\u06cc\u0646 \u0646\u0642\u0637\u0647 \u0648\u0631\u0648\u062f &#8216;MAIN&#8217; \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0633\u062a.  \u0627\u0628\u062a\u062f\u0627\u060c \u0627\u0632 \u06a9\u062f \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0622\u0631\u06af\u0648\u0645\u0627\u0646 (\u0641\u0627\u06cc\u0644 txt \u06a9\u0647 \u0634\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0622\u0646\u0647\u0627\u0633\u062a) \u0628\u0631\u0627\u06cc \u0627\u0647\u062f\u0627\u0641 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 (user_file) \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p>if [[ $# -ne 1 ]]; then<br \/>\n  echo &#8220;error: check the file provided&#8221;<br \/>\n  exit 1<br \/>\nfi<\/p>\n<p># user details<br \/>\nuser_file=&#8221;$1&#8243;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062e\u0637 \u0628\u0647 \u062e\u0637 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u06cc\u0645\u060c \u0627\u0639\u062a\u0628\u0627\u0631 \u0622\u0646 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u06af\u0631\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u067e\u0633\u0648\u0631\u062f\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0642\u0637\u0639\u0647 \u06a9\u062f \u0632\u06cc\u0631 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p># Check if the file exists<br \/>\nif [[ ! -f &#8220;$user_file&#8221; ]]; then<br \/>\n  echo &#8220;user file not found!&#8221;<br \/>\n  exit 1<br \/>\nfi<\/p>\n<p># Read the file line by line<br \/>\nwhile IFS=&#8221;;&#8221; read -r user groups; do<br \/>\n  user=$(echo $user | xargs)<br \/>\n # Check to know if user and group<br \/>\n # contains strings for validation<br \/>\n if [[ -z &#8220;$user&#8221; &amp;&amp; -z &#8220;$groups&#8221; ]];<br \/>\n then<br \/>\n    echo &#8220;Empty entry!!&#8221;<br \/>\n else<br \/>\n    #create group and user if they don&#8217;t exist<br \/>\n    createUser &#8220;$user&#8221;<br \/>\n    createGroup &#8220;$user&#8221;<br \/>\n    #create group with the same name as the user<br \/>\n    sudo usermod -aG &#8220;$user&#8221; &#8220;$user&#8221;<\/p>\n<p>    #extract the groups one by one<br \/>\n    IFS=&#8217;,&#8217; read -ra group_array &gt; .\/var\/secure\/user_passwords.txt #PASSWD_PATH<br \/>\n fi<\/p>\n<p>done <\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06a9\u062f \u06a9\u0627\u0645\u0644<\/p>\n<p>#!\/bin\/bash<\/p>\n<p>#create main directory to save files<br \/>\nmkdir var<br \/>\ncd var #move inside the created dir<\/p>\n<p>#create log folder and user_mgt.log inside the folder<br \/>\nmkdir log &amp;&amp; touch log\/user_management.log<\/p>\n<p>#create secure folder and user_passwd file inside the folder<br \/>\nmkdir secure &amp;&amp; touch secure\/user_passwords.txt<br \/>\n#Read and Write permission for the owner only<br \/>\nchmod 700 secure<br \/>\n# go back to the home dir<br \/>\ncd ..<\/p>\n<p>#LOG_FILE_PATH=.\/var\/log\/user_management.log<br \/>\n#PASSWD_PATH=.\/var\/secure\/user_password.txt<\/p>\n<p>#function to generate password<br \/>\ngenerate_password() {<br \/>\n  local password=$(openssl rand -base64 12)<br \/>\n  echo &#8220;$password&#8221;<br \/>\n}<\/p>\n<p>#Create users, groups and generate password<br \/>\n#for them, then  assign groups to the created users<\/p>\n<p>#function to create users<br \/>\ncreateUser(){<br \/>\n  local user=&#8221;$1&#8243;<br \/>\n  id &#8220;$user&#8221; &amp;&gt;\/dev\/null<br \/>\n  if [ $? -eq 1 ]; then #check if user is existing<br \/>\n     sudo useradd -m &#8220;$user&#8221;<br \/>\n     echo &#8220;user $user created&#8221;<br \/>\n  else<br \/>\n     echo &#8220;$user already created&#8221;<br \/>\n  fi<br \/>\n}<\/p>\n<p>#function to create group<br \/>\ncreateGroup(){<br \/>\n  local group=&#8221;$1&#8243;<br \/>\n  getent group &#8220;$group&#8221; &amp;&gt;\/dev\/null<br \/>\n  if [ $? -eq 2 ]; then #check if group has been created<br \/>\n     sudo groupadd &#8220;$group&#8221;<br \/>\n     echo &#8220;group $group created&#8221;<br \/>\n  else<br \/>\n     echo &#8220;$group already created&#8221;<br \/>\n  fi<br \/>\n}<\/p>\n<p>#function to add users to group<br \/>\naddUser_to_group(){<br \/>\n  local user=&#8221;$1&#8243;<br \/>\n  local group=&#8221;$2&#8243;<\/p>\n<p>  sudo usermod -aG &#8220;$group&#8221; &#8220;$user&#8221;<br \/>\n  echo &#8220;$user added to group: $group&#8221;<br \/>\n}<br \/>\n########## MAIN ENTRY POINT OF THE SCRIPT ##############<br \/>\n#Read and validate .txt file containing<br \/>\n#employees username and groups<\/p>\n<p># Check if the correct number of arguments is provided<br \/>\n(<br \/>\nif [[ $# -ne 1 ]]; then<br \/>\n  echo &#8220;error: check the file provided&#8221;<br \/>\n  exit 1<br \/>\nfi<\/p>\n<p># user details<br \/>\nuser_file=&#8221;$1&#8243;<\/p>\n<p># Check if the file exists<br \/>\nif [[ ! -f &#8220;$user_file&#8221; ]]; then<br \/>\n  echo &#8220;user file not found!&#8221;<br \/>\n  exit 1<br \/>\nfi<\/p>\n<p># Read the file line by line<br \/>\nwhile IFS=&#8221;;&#8221; read -r user groups; do<br \/>\n  user=$(echo $user | xargs)<br \/>\n # Check to know if user and group<br \/>\n # contains strings for validation<br \/>\n if [[ -z &#8220;$user&#8221; &amp;&amp; -z &#8220;$groups&#8221; ]];<br \/>\n then<br \/>\n    echo &#8220;Empty entry!!&#8221;<br \/>\n else<br \/>\n    #create group and user if they don&#8217;t exist<br \/>\n    createUser &#8220;$user&#8221;<br \/>\n    createGroup &#8220;$user&#8221;<br \/>\n    #create group with the same name as the user<br \/>\n    sudo usermod -aG &#8220;$user&#8221; &#8220;$user&#8221;<\/p>\n<p>    #extract the groups one by one<br \/>\n    IFS=&#8217;,&#8217; read -ra group_array &gt; .\/var\/secure\/user_passwords.txt #Log the generated user and password to user_passwords.txt<br \/>\n fi<\/p>\n<p>done <\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0642\u0627\u0628\u0644 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a.<\/p>\n<p>chmod +x create_users.sh<\/p>\n<p>\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/p>\n<p> .\/create_users.sh employee.txt #where employee.txt contains user;group(s)<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0648\u0638\u06cc\u0641\u0647 \u06a9\u0627\u0631\u0622\u0645\u0648\u0632\u06cc HNG \u0645\u0646 \u0627\u0633\u062a\u06a9\u0627\u0631\u0622\u0645\u0648\u0632\u06cc HNG \u06cc\u06a9 \u0628\u0648\u062a \u06a9\u0645\u067e \u0622\u0646\u0644\u0627\u06cc\u0646 \u0631\u0642\u0627\u0628\u062a\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u0627\u0646\u060c \u0637\u0631\u0627\u062d\u0627\u0646 \u0648 \u0633\u0627\u06cc\u0631 \u0627\u0633\u062a\u0639\u062f\u0627\u062f\u0647\u0627\u06cc \u0641\u0646\u06cc \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f\u06cc \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u062e\u0648\u062f \u0631\u0627 \u0627\u0631\u062a\u0642\u0627 \u062f\u0647\u0646\u062f\u060c \u0641\u0646 \u0622\u0648\u0631\u06cc \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u0646\u062f \u0648 \u0645\u062d\u0635\u0648\u0644\u0627\u062a\u06cc \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0645\u0634\u062a\u0631\u06a9 \u0648 \u0633\u0631\u06af\u0631\u0645 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0633\u0627\u0632\u0646\u062f.https:\/\/hng.tech\/internshiphttps:\/\/hng.tech\/premium<\/p>\n<div data-article-id=\"1908262\" id=\"article-body\">\n<p><strong>\u0645\u0639\u0631\u0641\u06cc<\/strong><br \/>\u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u062f \u062f\u0631 \u06cc\u06a9 \u0634\u0631\u06a9\u062a \u0628\u0633\u06cc\u0627\u0631 \u0628\u0632\u0631\u06af \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0634\u0631\u06a9\u062a \u0634\u0645\u0627 \u062d\u062f\u0648\u062f 100 \u06a9\u0627\u0631\u0645\u0646\u062f \u062c\u062f\u06cc\u062f \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u0648 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u062d\u0633\u0627\u0628 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646\u0647\u0627 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0622\u0646\u0647\u0627 \u0628\u0647 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0628\u0631 \u0639\u0647\u062f\u0647 \u0634\u0645\u0627\u0633\u062a.<\/p>\n<p>\u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0633\u06cc\u0627\u0631 \u062e\u0633\u062a\u0647 \u06a9\u0646\u0646\u062f\u0647 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0633\u062a\u0639\u062f \u062e\u0637\u0627 \u0628\u0627\u0634\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0633\u0627\u062f\u0647 BASH \u0622\u0634\u0646\u0627 \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f. <\/p>\n<p><strong>\u0627\u0644\u0632\u0627\u0645\u0627\u062a<\/strong><\/p>\n<ul>\n<li>\u0645\u0627\u0634\u06cc\u0646 \u0644\u06cc\u0646\u0648\u06a9\u0633<\/li>\n<li>\u062f\u0627\u0646\u0634 \u0627\u0648\u0644\u06cc\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0646\u0648\u06cc\u0633\u06cc <\/li>\n<li>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 txt \u06a9\u0647 \u062d\u0627\u0648\u06cc \u0646\u0627\u0645 \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 (\u06a9\u0627\u0631\u0628\u0631\u0627\u0646) \u0648 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0622\u0646\u0647\u0627 \u0627\u0633\u062a N\/B: \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u00ab;\u00bb \u0627\u0632 \u0647\u0645 \u062c\u062f\u0627 \u0634\u0648\u0646\u062f \u0648 \u062f\u0631 \u0634\u0631\u0627\u06cc\u0637\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0628\u06cc\u0634 \u0627\u0632 \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u062a\u0639\u0644\u0642 \u062f\u0627\u0631\u062f\u060c \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u06a9\u0627\u0645\u0627 (&#8216;,&#8217;) \u0627\u0632 \u0647\u0645 \u062c\u062f\u0627 \u0645\u06cc \u0634\u0648\u0646\u062f.  \u0646\u0645\u0648\u0646\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f\u061b<\/li>\n<\/ul>\n<p><em>staff.txt<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>Onyeka;electronics,devOps\nCharles;admin\nBukola;marketing\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0645\u0631\u062d\u0644\u0647 1<\/strong><br \/>\u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0647 \u0646\u0627\u0645 create_users.sh \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 nano \u06cc\u0627 vim \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p><code>nano create_users.sh<\/code><\/p>\n<p><strong>\u06af\u0627\u0645 2<\/strong><br \/>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0622\u0646\u0647\u0627 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u06af\u0632\u0627\u0631\u0634 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.  \u0645\u0627 \u0645\u0637\u0645\u0626\u0646 \u0645\u06cc \u0634\u0648\u06cc\u0645 \u06a9\u0647 shebang (#!\/bin\/bash) \u0642\u0628\u0644 \u0627\u0632 \u0647\u0631 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631 \u0628\u0627\u0644\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>#!\/bin\/bash\n\n#create main directory to save files\nmkdir var\ncd var #move inside the created dir\n\n#create log folder and user_mgt.log inside the folder\nmkdir log &amp;&amp; touch log\/user_management.log\n\n#create secure folder and user_passwd file inside the folder\nmkdir secure &amp;&amp; touch secure\/user_passwords.txt\n#Read and Write permission for the owner only\nchmod 700 secure\n# go back to the home dir\ncd ..\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06cc\u06a9 dir \u0628\u0647 \u0646\u0627\u0645 var \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f\u060c \u062f\u0631 \u062f\u0627\u062e\u0644 var dir\u060c \u062f\u0648 \u067e\u0648\u0634\u0647 \u062f\u06cc\u06af\u0631 \u0628\u0627 \u0646\u0627\u0645 \u0647\u0627\u06cc log \u0648 \u0627\u0645\u0646 \u0628\u0627 user_management.log \u0648 user_passwords.txt \u062f\u0631 \u062f\u0627\u062e\u0644 \u0622\u0646\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u0634\u0648\u062f.  \u0633\u067e\u0633 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 #chmod \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u0648\u0634\u0647 \u0627\u0645\u0646 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p><strong>\u0645\u0631\u062d\u0644\u0647 3<\/strong><br \/>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627\u060c \u0645\u0627 \u062a\u0648\u0627\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc\u060c \u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f\u060c \u06af\u0631\u0648\u0647 \u062c\u062f\u06cc\u062f \u0648 \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0647 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>#function to generate password\ngenerate_password() {\n  local password=$(openssl rand -base64 12)\n  echo \"$password\"\n}\n\n#Create users, groups and generate password\n#for them, then  assign groups to the created users\n\n#function to create users\ncreateUser(){\n  local user=\"$1\"\n  id \"$user\" &amp;&gt;\/dev\/null\n  if [ $? -eq 1 ]; then #check if user is existing\n     sudo useradd -m \"$user\"\n     echo \"user $user created\"\n  else\n     echo \"$user already created\"\n  fi\n}\n\n#function to create group\ncreateGroup(){\n  local group=\"$1\"\n  getent group \"$group\" &amp;&gt;\/dev\/null\n  if [ $? -eq 2 ]; then #check if group has been created\n     sudo groupadd \"$group\"\n     echo \"group $group created\"\n  else\n     echo \"$group already created\"\n  fi\n}\n\n#function to add users to group\naddUser_to_group(){\n  local user=\"$1\"\n  local group=\"$2\"\n\n  sudo usermod -aG \"$group\" \"$user\"\n  echo \"$user added to group: $group\"\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0645\u0631\u062d\u0644\u0647 4<\/strong><br \/>\u0627\u06cc\u0646 \u0646\u0642\u0637\u0647 \u0648\u0631\u0648\u062f &#8216;MAIN&#8217; \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0633\u062a.  \u0627\u0628\u062a\u062f\u0627\u060c \u0627\u0632 \u06a9\u062f \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0622\u0631\u06af\u0648\u0645\u0627\u0646 (\u0641\u0627\u06cc\u0644 txt \u06a9\u0647 \u0634\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0622\u0646\u0647\u0627\u0633\u062a) \u0628\u0631\u0627\u06cc \u0627\u0647\u062f\u0627\u0641 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 (user_file) \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>if [[ $# -ne 1 ]]; then\n  echo \"error: check the file provided\"\n  exit 1\nfi\n\n# user details\nuser_file=\"$1\"\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062e\u0637 \u0628\u0647 \u062e\u0637 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u06cc\u0645\u060c \u0627\u0639\u062a\u0628\u0627\u0631 \u0622\u0646 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u06af\u0631\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u067e\u0633\u0648\u0631\u062f\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0642\u0637\u0639\u0647 \u06a9\u062f \u0632\u06cc\u0631 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Check if the file exists\nif [[ ! -f \"$user_file\" ]]; then\n  echo \"user file not found!\"\n  exit 1\nfi\n\n# Read the file line by line\nwhile IFS=\";\" read -r user groups; do\n  user=$(echo $user | xargs)\n # Check to know if user and group\n # contains strings for validation\n if [[ -z \"$user\" &amp;&amp; -z \"$groups\" ]];\n then\n    echo \"Empty entry!!\"\n else\n    #create group and user if they don't exist\n    createUser \"$user\"\n    createGroup \"$user\"\n    #create group with the same name as the user\n    sudo usermod -aG \"$user\" \"$user\"\n\n    #extract the groups one by one\n    IFS=',' read -ra group_array &gt; .\/var\/secure\/user_passwords.txt #PASSWD_PATH\n fi\n\ndone <\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u06a9\u062f \u06a9\u0627\u0645\u0644<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>#!\/bin\/bash\n\n#create main directory to save files\nmkdir var\ncd var #move inside the created dir\n\n#create log folder and user_mgt.log inside the folder\nmkdir log &amp;&amp; touch log\/user_management.log\n\n#create secure folder and user_passwd file inside the folder\nmkdir secure &amp;&amp; touch secure\/user_passwords.txt\n#Read and Write permission for the owner only\nchmod 700 secure\n# go back to the home dir\ncd ..\n\n#LOG_FILE_PATH=.\/var\/log\/user_management.log\n#PASSWD_PATH=.\/var\/secure\/user_password.txt\n\n#function to generate password\ngenerate_password() {\n  local password=$(openssl rand -base64 12)\n  echo \"$password\"\n}\n\n#Create users, groups and generate password\n#for them, then  assign groups to the created users\n\n#function to create users\ncreateUser(){\n  local user=\"$1\"\n  id \"$user\" &amp;&gt;\/dev\/null\n  if [ $? -eq 1 ]; then #check if user is existing\n     sudo useradd -m \"$user\"\n     echo \"user $user created\"\n  else\n     echo \"$user already created\"\n  fi\n}\n\n#function to create group\ncreateGroup(){\n  local group=\"$1\"\n  getent group \"$group\" &amp;&gt;\/dev\/null\n  if [ $? -eq 2 ]; then #check if group has been created\n     sudo groupadd \"$group\"\n     echo \"group $group created\"\n  else\n     echo \"$group already created\"\n  fi\n}\n\n#function to add users to group\naddUser_to_group(){\n  local user=\"$1\"\n  local group=\"$2\"\n\n  sudo usermod -aG \"$group\" \"$user\"\n  echo \"$user added to group: $group\"\n}\n########## MAIN ENTRY POINT OF THE SCRIPT ##############\n#Read and validate .txt file containing\n#employees username and groups\n\n# Check if the correct number of arguments is provided\n(\nif [[ $# -ne 1 ]]; then\n  echo \"error: check the file provided\"\n  exit 1\nfi\n\n# user details\nuser_file=\"$1\"\n\n# Check if the file exists\nif [[ ! -f \"$user_file\" ]]; then\n  echo \"user file not found!\"\n  exit 1\nfi\n\n# Read the file line by line\nwhile IFS=\";\" read -r user groups; do\n  user=$(echo $user | xargs)\n # Check to know if user and group\n # contains strings for validation\n if [[ -z \"$user\" &amp;&amp; -z \"$groups\" ]];\n then\n    echo \"Empty entry!!\"\n else\n    #create group and user if they don't exist\n    createUser \"$user\"\n    createGroup \"$user\"\n    #create group with the same name as the user\n    sudo usermod -aG \"$user\" \"$user\"\n\n    #extract the groups one by one\n    IFS=',' read -ra group_array &gt; .\/var\/secure\/user_passwords.txt #Log the generated user and password to user_passwords.txt\n fi\n\ndone <\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0642\u0627\u0628\u0644 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a.<\/p>\n<p><code>chmod +x create_users.sh<\/code><\/p>\n<p><strong>\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code> .\/create_users.sh employee.txt #where employee.txt contains user;group(s)\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0627\u06cc\u0646 \u0648\u0638\u06cc\u0641\u0647 \u06a9\u0627\u0631\u0622\u0645\u0648\u0632\u06cc HNG \u0645\u0646 \u0627\u0633\u062a<\/strong><br \/>\u06a9\u0627\u0631\u0622\u0645\u0648\u0632\u06cc HNG \u06cc\u06a9 \u0628\u0648\u062a \u06a9\u0645\u067e \u0622\u0646\u0644\u0627\u06cc\u0646 \u0631\u0642\u0627\u0628\u062a\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u0627\u0646\u060c \u0637\u0631\u0627\u062d\u0627\u0646 \u0648 \u0633\u0627\u06cc\u0631 \u0627\u0633\u062a\u0639\u062f\u0627\u062f\u0647\u0627\u06cc \u0641\u0646\u06cc \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f\u06cc \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u062e\u0648\u062f \u0631\u0627 \u0627\u0631\u062a\u0642\u0627 \u062f\u0647\u0646\u062f\u060c \u0641\u0646 \u0622\u0648\u0631\u06cc \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u0646\u062f \u0648 \u0645\u062d\u0635\u0648\u0644\u0627\u062a\u06cc \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0645\u0634\u062a\u0631\u06a9 \u0648 \u0633\u0631\u06af\u0631\u0645 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0633\u0627\u0632\u0646\u062f.<br \/>https:\/\/hng.tech\/internship<br \/>https:\/\/hng.tech\/premium<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0645\u0639\u0631\u0641\u06cc\u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u062f \u062f\u0631 \u06cc\u06a9 \u0634\u0631\u06a9\u062a \u0628\u0633\u06cc\u0627\u0631 \u0628\u0632\u0631\u06af \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0634\u0631\u06a9\u062a \u0634\u0645\u0627 \u062d\u062f\u0648\u062f 100 \u06a9\u0627\u0631\u0645\u0646\u062f \u062c\u062f\u06cc\u062f \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u0648 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u062d\u0633\u0627\u0628 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646\u0647\u0627 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0622\u0646\u0647\u0627 \u0628\u0647 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0628\u0631 \u0639\u0647\u062f\u0647 \u0634\u0645\u0627\u0633\u062a. \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":67946,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-67945","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/67945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=67945"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/67945\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/67946"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=67945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=67945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=67945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}