{"id":67950,"date":"2024-07-03T04:48:35","date_gmt":"2024-07-03T01:18:35","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/automating-user-creation-and-management-with-bash-a-step-by-step-guide-3afm\/"},"modified":"2024-07-03T04:48:35","modified_gmt":"2024-07-03T01:18:35","slug":"automating-user-creation-and-management-with-bash-a-step-by-step-guide-3afm","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/automating-user-creation-and-management-with-bash-a-step-by-step-guide-3afm\/","title":{"rendered":"\u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 Bash: \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u0635\u0631\u0641\u0647 \u062c\u0648\u06cc\u06cc \u06a9\u0646\u062f\u060c \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u062f \u0648 \u0627\u0645\u0646\u06cc\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0647\u0646\u062f\u0633\u0627\u0646 SysOps \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a Bash \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0647\u0627\u06cc \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0627\u06cc\u0645\u0646 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u062e\u0648\u0627\u0646\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0647\u0631 \u062e\u0637 \u0627\u0632 \u06cc\u06a9 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0622\u0646\u0647\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0647\u0631 \u0627\u0642\u062f\u0627\u0645\u06cc \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u06af\u0632\u0627\u0631\u0634 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u06a9\u0627\u0646 \u0627\u0645\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f. .csv \u0641\u0627\u06cc\u0644 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0645\u0627\u0644\u06a9 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a bash \u0634\u06cc\u0631\u062c\u0647 \u0628\u0632\u0646\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0645\u0631\u062d\u0644\u0647 \u0628\u0647 \u0645\u0631\u062d\u0644\u0647 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062a\u0648\u0636\u06cc\u062d \u062e\u0637 \u0628\u0647 \u062e\u0637<\/p>\n<p>1.) \u0627\u0648\u0644 \u0627\u0632 \u0647\u0645\u0647\u060c \u0645\u0627 \u0634\u0628\u0627\u0646\u06af \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<p>#!\/bin\/bash<\/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 \u0646\u0648\u0639 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0641\u0633\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0622\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f.  \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a &#8220;bash&#8221; \u0627\u0633\u062a\u060c \u0628\u0627\u06cc\u062f \u0628\u0627 \u0645\u062a\u0631\u062c\u0645 Bourne Again Shell (Bash) \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.  \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0628\u0631\u062e\u06cc \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062f\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062e\u0627\u0631\u062c \u0627\u0632 Bash \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062a\u0641\u0633\u06cc\u0631 \u0646\u0634\u0648\u0646\u062f.<\/p>\n<p>2.) \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 log \u0648 \u0641\u0627\u06cc\u0644 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062a\u06a9\u0631\u0627\u0631 \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u062f\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p># Define log and password storage files<br \/>\nLOG_FILE=&#8221;\/var\/log\/user_management.log&#8221;<br \/>\nPASSWORD_FILE=&#8221;\/var\/secure\/user_passwords.csv&#8221;<\/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>3.) \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a bash \u0628\u0627 \u062d\u0642\u0648\u0642 \u0631\u06cc\u0634\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f\u060c \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 if \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0624\u062b\u0631 (EUID) \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 \u0635\u0641\u0631 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.  EUID \u0645\u062c\u0648\u0632\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u0648 0 \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0631\u06cc\u0634\u0647 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0627\u0633\u062a.  \u0641\u0642\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0647\u0633\u062a\u0646\u062f (\u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0632 sudo \u06cc\u0627 \u062e\u0648\u062f \u06a9\u0627\u0631\u0628\u0631 \u0631\u06cc\u0634\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f) \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f.  \u0627\u06af\u0631 \u0634\u062e\u0635\u06cc \u0633\u0639\u06cc \u06a9\u0646\u062f \u0622\u0646 \u0631\u0627 \u0628\u062f\u0648\u0646 \u0686\u0646\u06cc\u0646 \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0648 \u0631\u0648\u0646\u062f \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u0627\u062a\u0645\u0647 \u0645\u06cc \u06cc\u0627\u0628\u062f.<\/p>\n<p># Check if the script is run with root privileges<br \/>\nif [[ $EUID -ne 0 ]]; then<br \/>\n  echo &#8220;This script must be run with root privileges.&#8221; &gt;&amp;2<br \/>\n  exit 1<br \/>\nfi<\/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>4.) \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0648\u0631\u0648\u062f\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f if \u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u0627\u0631\u0627\u0626\u0647 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u060c \u062f\u0633\u062a\u0648\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u062e\u0627\u062a\u0645\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u0628\u06cc\u0627\u0646\u06cc\u0647\u060c $# \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0633\u062a.  \u0627\u06af\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 \u0635\u0641\u0631 \u0628\u0627\u0634\u062f (\u0622\u06af\u0648\u0645\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a) \u06cc\u0627 \u0627\u06af\u0631 \u0628\u0632\u0631\u06af\u062a\u0631 \u06cc\u0627 \u0645\u0633\u0627\u0648\u06cc 2 \u0628\u0627\u0634\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u063a\u0627\u0645 \u062e\u0637\u0627 \u0686\u0627\u067e \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p># Check if the input file is provided<br \/>\nif [[ $# -eq 0 || $# -ge 2 ]]; then<br \/>\n  echo &#8220;Usage: $0 &#8221; &gt;&amp;2<br \/>\n  exit 1<br \/>\nfi<\/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>5.) \u0628\u0639\u062f\u06cc \u0627\u0633\u062a log_action \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u06a9\u0647 \u06af\u0632\u0627\u0631\u0634\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062d\u0631\u0648\u0641 \u067e\u0631\u0631\u0646\u06af (\u0642\u0627\u0644\u0628\u200c\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0627 \u06a9\u062f\u0647\u0627\u06cc \u0641\u0631\u0627\u0631 ANSI) \u0636\u0628\u0637 \u0645\u06cc\u200c\u06a9\u0646\u062f: \\033[1m and \\033[0m) and a timestamp (using the date command to get the current date and the specified date format: &#8216;%Y-%m-%d %H:%M:%S&#8217;). This function is used to log important steps, success messages, and error messages in the script.<\/p>\n<p># Log function<br \/>\nlog_action() {<br \/>\n  echo &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n  echo -e &#8220;$(date +&#8217;%Y-%m-%d %H:%M:%S&#8217;) &#8211; \\033[1m$1\\033[0m&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n  echo &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n}<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>6.) Next is the create_user_account function that manages the entire process of creating a user, setting up their home directories with appropriate permissions and ownership, adding them to specified groups, and assigning randomly generated passwords. Every important step is logged.<\/p>\n<p>create_user_account function<\/p>\n<p>create_user_account() {<br \/>\n  local username=&#8221;$1&#8243;<br \/>\n  local groups=&#8221;$2&#8243;<\/p>\n<p>  log_action &#8220;Creating user account &#8216;$username&#8217;&#8230;&#8221;<\/p>\n<p>  # Check if user already exists<br \/>\n  if id &#8220;$username&#8221; &amp;&gt; \/dev\/null; then<br \/>\n    echo &#8220;User &#8216;$username&#8217; already exists. Skipping&#8230;&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n    return 1<br \/>\n  fi<\/p>\n<p>  # Create user with home directory and set shell<br \/>\n  if useradd -m -s \/bin\/bash &#8220;$username&#8221;; then<br \/>\n    echo &#8220;User $username created successfully.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n  else<br \/>\n    echo &#8220;Error creating user $username.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n    return 1<br \/>\n  fi<\/p>\n<p>  # Create user group if it does not exist (in case the script is run in other linux distributions that do not create user groups by default)<br \/>\n  if ! getent group &#8220;$username&#8221; &gt;\/dev\/null; then<br \/>\n    groupadd &#8220;$username&#8221;<br \/>\n    usermod -g &#8220;$username&#8221; &#8220;$username&#8221;<br \/>\n    log_action &#8220;Group $username created.&#8221;<br \/>\n  fi<\/p>\n<p>  # Set up home directory permissions<br \/>\n  echo &#8220;Setting permissions for \/home\/$username&#8230;&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n  chmod 700 &#8220;\/home\/$username&#8221; &amp;&amp; chown &#8220;$username:$username&#8221; &#8220;\/home\/$username&#8221;<br \/>\n  if [[ $? -eq 0 ]]\u061b  \u0633\u067e\u0633 &#8220;\u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \/home\/$username&#8221; \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f.  |  tee -a &#8220;$LOG_FILE&#8221; other echo &#8220;\u062e\u0637\u0627 \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0645\u062c\u0648\u0632\u0647\u0627 \u0628\u0631\u0627\u06cc \/home\/$username.&#8221;  |  tee -a &#8220;$LOG_FILE&#8221; return 1 fi # \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc (\u0628\u0627 \u06a9\u0627\u0645\u0627 \u0627\u0632 \u0647\u0645 \u062c\u062f\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a) echo &#8220;\u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631 $username \u0628\u0647 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647&#8230;&#8221; |  tee -a &#8220;$LOG_FILE&#8221; IFS=&#8217;,&#8217; read -ra group_array \/dev\/null;  \u0633\u067e\u0633 \u0627\u06af\u0631 &#8220;$group&#8221; \u0631\u0627 \u0628\u0647 \u06af\u0631\u0648\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.  \u0633\u067e\u0633 echo &#8220;Group $group \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a. \u0627\u06a9\u0646\u0648\u0646 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f.&#8221;  |  tee -a &#8220;$LOG_FILE&#8221; other Echo &#8220;\u062e\u0637\u0627 \u062f\u0631 \u0627\u06cc\u062c\u0627\u062f \u06af\u0631\u0648\u0647 $group.&#8221;  |  tee -a &#8220;$LOG_FILE&#8221; \u0627\u062f\u0627\u0645\u0647 fi fi # \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u06af\u0631\u0648\u0647 if gpasswd -a &#8220;$username&#8221; &#8220;$group&#8221;;  \u0633\u067e\u0633 &#8220;User $username \u0628\u0647 \u06af\u0631\u0648\u0647 $group \u0627\u0636\u0627\u0641\u0647 \u0634\u062f&#8221; \u0628\u0627\u0632\u062a\u0627\u0628 \u062f\u0647\u06cc\u062f.  |  tee -a &#8220;$LOG_FILE&#8221; other echo &#8220;\u062e\u0637\u0627 \u062f\u0631 \u0627\u0641\u0632\u0648\u062f\u0646 username $ \u0628\u0647 \u06af\u0631\u0648\u0647 $group.&#8221;  |  \u0627\u06af\u0631 \u06af\u0631\u0648\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0627\u06af\u0631 \u06af\u0631\u0648\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0646\u06cc\u062f [[ -z &#8220;$groups&#8221; ]]\u061b  \u0633\u067e\u0633 &#8220;\u0647\u06cc\u0686 \u06af\u0631\u0648\u0647 \u0627\u0636\u0627\u0641\u06cc \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647&#8221; \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f.  |  tee -a &#8220;$LOG_FILE&#8221; fi # \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 echo \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f &#8220;\u062a\u0646\u0638\u06cc\u0645 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 $username&#8230;&#8221; |  tee -a &#8220;$LOG_FILE&#8221; \u0631\u0645\u0632 \u0639\u0628\u0648\u0631=$(head \/dev\/urandom | tr -dc A-Za-z0-9 | head -c 12) echo &#8220;$username:$password&#8221; |  chpasswd if [[ $? -eq 0 ]]\u061b  \u0633\u067e\u0633 \u0639\u0628\u0627\u0631\u062a &#8220;Password set for user $username&#8221; \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f.  |  tee -a &#8220;$LOG_FILE&#8221; echo &#8220;$username,$password&#8221; >> &#8220;$PASSWORD_FILE&#8221; else echo &#8220;\u062e\u0637\u0627 \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 $username. \u062d\u0630\u0641 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc $username&#8221; |  tee -a &#8220;$LOG_FILE&#8221; userdel -r &#8220;$username&#8221; \u0628\u0627\u0632\u06af\u0634\u062a 1 fi }<\/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 \u062a\u0627\u0628\u0639\u060c \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0645 \u062a\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u0646\u062f \u062a\u0627 \u0627\u0632 \u062a\u06a9\u0631\u0627\u0631 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f.<\/p>\n<p>local username=&#8221;$1&#8243;<br \/>\nlocal groups=&#8221;$2&#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>\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc\u060c \u0645\u0646 \u0627\u0632 log_action \u0639\u0645\u0644\u06a9\u0631\u062f \u062b\u0628\u062a \u0634\u0631\u0648\u0639 \u0627\u06cc\u062c\u0627\u062f \u0647\u0631 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc.  \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u0646 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u0645 \u06a9\u0647 \u0622\u06cc\u0627 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0642\u0628\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06cc\u0627 \u062e\u06cc\u0631.  \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>log_action &#8220;Creating user account &#8216;$username&#8217;&#8230;&#8221;<\/p>\n<p>  # Check if user already exists<br \/>\n  if id &#8220;$username&#8221; &amp;&gt; \/dev\/null; then<br \/>\n    echo &#8220;User &#8216;$username&#8217; already exists. Skipping&#8230;&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n    return 1<br \/>\n  fi<\/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>\u0628\u0639\u062f\u060c \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 if \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0627\u0632 \u0639\u0628\u0627\u0631\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f useradd \u0641\u0631\u0645\u0627\u0646 \u0628\u0627 -m \u0648 -s \u067e\u0631\u0686\u0645 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u067e\u0648\u0633\u062a\u0647 \u0648\u0631\u0648\u062f (\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u067e\u0648\u0633\u062a\u0647 \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a \/bin\/bash.  \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0627\u0635\u0644\u0627\u062d \u06cc\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f -s \/bin\/bash \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0627\u0645\u0644) \u0648 \u06cc\u06a9 \u0641\u0647\u0631\u0633\u062a \u0627\u0635\u0644\u06cc \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u062e\u062a\u0635\u0627\u0635 \u0645\u06cc \u062f\u0647\u062f.  \u0627\u06af\u0631 \u062f\u0631 \u062d\u06cc\u0646 \u0627\u062c\u0631\u0627\u06cc \u0641\u0631\u0645\u0627\u0646 \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0647\u062f\u060c \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p># Create user with home directory and set shell<br \/>\n  if useradd -m -s \/bin\/bash &#8220;$username&#8221;; then<br \/>\n    echo &#8220;User $username created successfully.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n  else<br \/>\n    echo &#8220;Error creating user $username.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n    return 1<br \/>\n  fi<\/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 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631 \u0631\u0648\u06cc \u0633\u0627\u06cc\u0631 \u062a\u0648\u0632\u06cc\u0639\u200c\u0647\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u06a9\u0647 \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u0627\u0635\u0644\u06cc \u0628\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0648 \u0627\u062e\u062a\u0635\u0627\u0635 \u0646\u0645\u06cc\u200c\u062f\u0647\u0646\u062f\u060c \u062f\u0633\u062a\u0648\u0631 if \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06af\u0631\u0648\u0647\u06cc \u0628\u0627 \u0647\u0645\u0627\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06af\u0631\u0648\u0647 \u0627\u0635\u0644\u06cc \u06a9\u0627\u0631\u0628\u0631.<\/p>\n<p># Create user group if it does not exist (in case the script is run in other linux distributions that do not create user groups by default)<br \/>\n  if ! getent group &#8220;$username&#8221; &gt;\/dev\/null; then<br \/>\n    groupadd &#8220;$username&#8221;<br \/>\n    usermod -g &#8220;$username&#8221; &#8220;$username&#8221;<br \/>\n    log_action &#8220;Group $username created.&#8221;<br \/>\n  fi<\/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 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0627\u0632 \u062a\u0627\u0628\u0639\u060c \u06a9\u0627\u0631\u0628\u0631 \u062a\u0627\u0632\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0627\u0644\u06a9 \u0641\u0647\u0631\u0633\u062a \u0627\u0635\u0644\u06cc \u062a\u0627\u0632\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u0634\u0648\u062f.  \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 \u0645\u0627\u0644\u06a9 \u062a\u0645\u0627\u0645\u06cc \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u06cc \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u0647\u0645\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 chmod \u0648 chown \u062f\u0633\u062a\u0648\u0631\u0627\u062a  \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0686\u0627\u067e \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u062c\u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p># Set up home directory permissions<br \/>\n  echo &#8220;Setting permissions for \/home\/$username&#8230;&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n  chmod 700 &#8220;\/home\/$username&#8221; &amp;&amp; chown &#8220;$username:$username&#8221; &#8220;\/home\/$username&#8221;<br \/>\n  if [[ $? -eq 0 ]]; then<br \/>\n    echo &#8220;Permissions set for \/home\/$username.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n  else<br \/>\n    echo &#8220;Error setting permissions for \/home\/$username.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n    return 1<br \/>\n  fi<\/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 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u06a9\u0627\u0631\u0628\u0631 \u062a\u0627\u0632\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0647 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0648\u0631\u0648\u062f\u06cc \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 Internal Field Separator (IFS) \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062c\u062f\u0627 \u0634\u062f\u0647 \u0628\u0627 \u06a9\u0627\u0645\u0627 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 read \u0641\u0631\u0645\u0627\u0646 \u0628\u0627 -ra \u067e\u0631\u0686\u0645 \u0647\u0627\u060c \u06af\u0631\u0648\u0647 \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0622\u0631\u0627\u06cc\u0647 \u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f group_array \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u062d\u0644\u0642\u0647 for \u0628\u0639\u062f\u06cc.  \u062f\u0631 \u062f\u0627\u062e\u0644 \u062d\u0644\u0642\u0647\u060c \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0642\u062f\u0627\u0631 \u062f\u0631 group_array\u060c \u0645\u0642\u062f\u0627\u0631 xargs \u062f\u0633\u062a\u0648\u0631 \u0647\u0631 \u0641\u0636\u0627\u06cc \u062e\u0627\u0644\u06cc \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f\u060c \u06af\u0631\u0648\u0647 \u0631\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u0648\u062c\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0628\u0647 \u06af\u0631\u0648\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f. gpasswd \u0641\u0631\u0645\u0627\u0646 \u0628\u0627 -a \u067e\u0631\u0686\u0645.  \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0647\u06cc\u0686 \u06af\u0631\u0648\u0647\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0648\u0631\u0648\u062f\u06cc \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u067e\u06cc\u0627\u0645\u06cc \u0686\u0627\u067e \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<p># Add user to additional groups (comma separated)<br \/>\n  echo &#8220;Adding user $username to specified additional groups&#8230;&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n  IFS=&#8217;,&#8217; read -ra group_array \/dev\/null; then<br \/>\n      if groupadd &#8220;$group&#8221;; then<br \/>\n        echo &#8220;Group $group did not exist. Now created.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n      else<br \/>\n        echo &#8220;Error creating group $group.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n        continue<br \/>\n      fi<br \/>\n    fi<\/p>\n<p>    # Add user to group<br \/>\n    if gpasswd -a &#8220;$username&#8221; &#8220;$group&#8221;; then<br \/>\n      echo &#8220;User $username added to group $group.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n    else<br \/>\n      echo &#8220;Error adding user $username to group $group.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n    fi<br \/>\n  done<\/p>\n<p>  # Log if no additional groups are specified<br \/>\n  if [[ -z &#8220;$groups&#8221; ]]; then<br \/>\n    echo &#8220;No additional groups specified.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n  fi<\/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>\u0628\u0631\u0627\u06cc \u0628\u062e\u0634 \u0622\u062e\u0631 \u062a\u0627\u0628\u0639\u060c \u06cc\u06a9 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc 12 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u06cc \u062a\u0648\u0644\u06cc\u062f \u0648 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u0634\u0648\u062f.  \u062f\u0633\u062a\u0648\u0631 head \u062c\u0631\u06cc\u0627\u0646\u06cc \u0627\u0632 \u0628\u0627\u06cc\u062a \u0647\u0627\u06cc \u062a\u0635\u0627\u062f\u0641\u06cc \u0631\u0627 \u0627\u0632 \/dev\/urandom \u0641\u0627\u06cc\u0644.  \u0627\u06cc\u0646 \u062c\u0631\u06cc\u0627\u0646 \u0628\u0647 \u0644\u0648\u0644\u0647 \u06a9\u0634\u06cc \u0645\u06cc \u0634\u0648\u062f tr \u062f\u0633\u062a\u0648\u0631\u060c \u06a9\u0647 \u0628\u0627\u06cc\u062a \u0647\u0627 \u0631\u0627 \u0641\u06cc\u0644\u062a\u0631 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0641\u0642\u0637 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc \u0627\u0644\u0641\u0628\u0627\u06cc\u06cc (AZ\u060c az\u060c 0-9) \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 -dc \u067e\u0631\u0686\u0645.  \u0633\u067e\u0633 \u0646\u062a\u06cc\u062c\u0647 \u0641\u06cc\u0644\u062a\u0631 \u0634\u062f\u0647 \u0628\u0647 \u062f\u0633\u062a\u0648\u0631 \u0633\u0631 \u062f\u06cc\u06af\u0631\u06cc \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u062a\u0646\u0647\u0627 \u06f1\u06f2 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0627\u0648\u0644 \u0631\u0627 \u0627\u0632 \u062c\u0631\u06cc\u0627\u0646 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0634\u062f\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0633\u067e\u0633 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062f\u0631 \u0622\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u0634\u0648\u062f chpasswd \u0641\u0631\u0645\u0627\u0646  \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u062f\u0631 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0639\u06cc\u06cc\u0646 \u0634\u062f\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f .csv \u0641\u0627\u06cc\u0644.  \u0627\u06af\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u062f\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062e\u0637\u0627 \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0632 \u0647\u0631\u06af\u0648\u0646\u0647 \u062e\u0637\u0631 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f.<\/p>\n<p># Generate random password, set it for the user, and store it in a file<br \/>\n  echo &#8220;Setting password for user $username&#8230;&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n  password=$(head \/dev\/urandom | tr -dc A-Za-z0-9 | head -c 12)<br \/>\n  echo &#8220;$username:$password&#8221; | chpasswd<br \/>\n  if [[ $? -eq 0 ]]; then<br \/>\n    echo &#8220;Password set for user $username.&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n    echo &#8220;$username,$password&#8221; &gt;&gt; &#8220;$PASSWORD_FILE&#8221;<br \/>\n  else<br \/>\n    echo &#8220;Error setting password for user $username. Deleting $username user account&#8221; | tee -a &#8220;$LOG_FILE&#8221;<br \/>\n    userdel -r &#8220;$username&#8221;<br \/>\n    return 1<br \/>\n  fi<\/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>7.) \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u062a\u0627\u0628\u0639 create_user_account\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062d\u0627\u0648\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0631 \u0627\u06cc\u0646 \u0627\u0633\u0627\u0633 \u062d\u0633\u0627\u0628 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p># Process the user file<br \/>\nuser_file=&#8221;$1&#8243;<br \/>\nwhile IFS=&#8217;;&#8217; read -r username groups; do<br \/>\n  if create_user_account &#8220;$username&#8221; &#8220;${groups%%[ ;]}&#8221;; then<br \/>\n    log_action &#8220;User account &#8216;$username&#8217; created successfully.&#8221;<br \/>\n  else<br \/>\n    log_action &#8220;Error creating user account &#8216;$username&#8217;.&#8221;<br \/>\n  fi<br \/>\ndone <\/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\u0633\u06a9\u0631\u06cc\u067e\u062a \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062e\u0648\u062f \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0645\u062a\u063a\u06cc\u0631 \u0627\u062e\u062a\u0635\u0627\u0635 \u0645\u06cc \u062f\u0647\u062f user_file.<br \/>\n\u062d\u0644\u0642\u0647 while \u0647\u0631 \u062e\u0637 \u0627\u0632 \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0646\u062f.  \u00abIFS=&#8217;;&#8217;part sets the Internal Field Separator to a semicolon (;), splitting each line at the semicolon. The\u0642\u0633\u0645\u062a read -r` username groups \u0642\u0633\u0645\u062a \u0647\u0627\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u062e\u0648\u0627\u0646\u062f.<br \/>\n\u0628\u0631\u0627\u06cc \u0647\u0631 \u062e\u0637 \u062f\u0631 \u0641\u0627\u06cc\u0644\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062a\u0627\u0628\u0639 create_user_account \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627 (\u0628\u0627 \u062d\u0630\u0641 \u0641\u0627\u0635\u0644\u0647 \u0647\u0627\u06cc \u0627\u0646\u062a\u0647\u0627\u06cc\u06cc) \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. using ${groups%%[ ;]}).  \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0647\u0645\u0686\u0646\u06cc\u0646 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f \u0627\u06af\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0632 create_user_account \u0645\u0648\u0641\u0642\u06cc\u062a \u06cc\u0627 \u0634\u06a9\u0633\u062a \u0628\u0648\u062f<\/p>\n<p>8.) \u067e\u0633 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0641\u0642\u0637 \u0628\u0647 \u0645\u0627\u0644\u06a9 (\u0631\u06cc\u0634\u0647) \u0648 \u06a9\u0633\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u0631\u0648\u062a \u0647\u0633\u062a\u0646\u062f \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0631\u0645\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u06cc \u062f\u0647\u062f\u060c \u0627\u062a\u0645\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0641\u0627\u06cc\u0644 \u0644\u0627\u06af \u0648 \u0645\u062d\u0644 \u0641\u0627\u06cc\u0644 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0686\u0627\u067e \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>`<\/p>\n<p>chmod 600 &#8220;$PASSWORD_FILE&#8221;<\/p>\n<p>log_action &#8220;User creation script completed.&#8221;<\/p>\n<p>echo &#8220;Check $LOG_FILE for details.&#8221;echo &#8220;Check $PASSWORD_FILE for user passwords.&#8221;`Prerequisites for running the script<\/p>\n<p>A Linux system<br \/>\nA bash terminal (Optional. You can use any available shell terminal on the Linux system).<br \/>\nRoot privileges on your system.<br \/>\nThe text file containing the usernames and groups, must be formatted as username;group1,group2.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a:1.) \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0632 \u0645\u062e\u0632\u0646 HNG_Stage1 \u06a9\u067e\u06cc \u06cc\u0627 \u06a9\u0644\u0648\u0646 \u06a9\u0646\u06cc\u062f<\/p>\n<p>2.) \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u062d\u0627\u0648\u06cc \u0646\u0627\u0645 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>3.) \u0633\u067e\u0633\u060c \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0647 \u0647\u0645 \u0627\u06a9\u0646\u0648\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0648 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f sudo .\/create_users.sh <\/p>\n<p>\u0646\u062a\u06cc\u062c\u0647\u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u062e\u06cc \u0627\u0632 \u0648\u0638\u0627\u06cc\u0641 \u0627\u062f\u0627\u0631\u06cc \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0627 \u0686\u0646\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u06cc\u060c \u0645\u0647\u0646\u062f\u0633\u0627\u0646 SysOps \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0648 \u06af\u0631\u0648\u0647 \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f \u0648 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u0631\u0648\u06cc \u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u0647\u0645\u200c\u062a\u0631 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u0646\u062f \u0648 \u062f\u0631 \u0639\u06cc\u0646 \u062d\u0627\u0644 \u0627\u0632 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0622\u0645\u062f \u0648 \u0627\u06cc\u0645\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u062a\u06a9\u0627\u0644\u06cc\u0641 \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0622\u0645\u0648\u0632\u06cc HNG \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0642\u0648\u06cc\u062a \u0631\u0632\u0648\u0645\u0647 \u0634\u0645\u0627 \u0648 \u062a\u0639\u0645\u06cc\u0642 \u062f\u0627\u0646\u0634 \u0634\u0645\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc bash \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0628\u0631\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc\u0646 \u062a\u062c\u0631\u0628\u0647\u060c \u0627\u0632 HNG Premium \u062f\u06cc\u062f\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n<div data-article-id=\"1909480\" id=\"article-body\">\n<p>\u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u0635\u0631\u0641\u0647 \u062c\u0648\u06cc\u06cc \u06a9\u0646\u062f\u060c \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u062f \u0648 \u0627\u0645\u0646\u06cc\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0647\u0646\u062f\u0633\u0627\u0646 SysOps \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a Bash \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0647\u0627\u06cc \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0627\u06cc\u0645\u0646 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u062e\u0648\u0627\u0646\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0647\u0631 \u062e\u0637 \u0627\u0632 \u06cc\u06a9 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0622\u0646\u0647\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0647\u0631 \u0627\u0642\u062f\u0627\u0645\u06cc \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u06af\u0632\u0627\u0631\u0634 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u06a9\u0627\u0646 \u0627\u0645\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f. <code>.csv<\/code> \u0641\u0627\u06cc\u0644 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0645\u0627\u0644\u06a9 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a bash \u0634\u06cc\u0631\u062c\u0647 \u0628\u0632\u0646\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0645\u0631\u062d\u0644\u0647 \u0628\u0647 \u0645\u0631\u062d\u0644\u0647 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p><strong>\u062a\u0648\u0636\u06cc\u062d \u062e\u0637 \u0628\u0647 \u062e\u0637<\/strong><\/p>\n<p>1.) \u0627\u0648\u0644 \u0627\u0632 \u0647\u0645\u0647\u060c \u0645\u0627 \u0634\u0628\u0627\u0646\u06af \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>#!\/bin\/bash\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>\u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0641\u0633\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0622\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f.  \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a &#8220;bash&#8221; \u0627\u0633\u062a\u060c \u0628\u0627\u06cc\u062f \u0628\u0627 \u0645\u062a\u0631\u062c\u0645 Bourne Again Shell (Bash) \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.  \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0628\u0631\u062e\u06cc \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062f\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062e\u0627\u0631\u062c \u0627\u0632 Bash \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062a\u0641\u0633\u06cc\u0631 \u0646\u0634\u0648\u0646\u062f.<\/p>\n<p>2.) \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 log \u0648 \u0641\u0627\u06cc\u0644 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062a\u06a9\u0631\u0627\u0631 \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u062f\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Define log and password storage files\nLOG_FILE=\"\/var\/log\/user_management.log\"\nPASSWORD_FILE=\"\/var\/secure\/user_passwords.csv\"\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>3.) \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a bash \u0628\u0627 \u062d\u0642\u0648\u0642 \u0631\u06cc\u0634\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f\u060c \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 if \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0624\u062b\u0631 (EUID) \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 \u0635\u0641\u0631 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.  EUID \u0645\u062c\u0648\u0632\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u0648 0 \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0631\u06cc\u0634\u0647 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0627\u0633\u062a.  \u0641\u0642\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0647\u0633\u062a\u0646\u062f (\u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0632 sudo \u06cc\u0627 \u062e\u0648\u062f \u06a9\u0627\u0631\u0628\u0631 \u0631\u06cc\u0634\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f) \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f.  \u0627\u06af\u0631 \u0634\u062e\u0635\u06cc \u0633\u0639\u06cc \u06a9\u0646\u062f \u0622\u0646 \u0631\u0627 \u0628\u062f\u0648\u0646 \u0686\u0646\u06cc\u0646 \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0648 \u0631\u0648\u0646\u062f \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u0627\u062a\u0645\u0647 \u0645\u06cc \u06cc\u0627\u0628\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Check if the script is run with root privileges\nif [[ $EUID -ne 0 ]]; then\n  echo \"This script must be run with root privileges.\" &gt;&amp;2\n  exit 1\nfi\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>4.) \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0648\u0631\u0648\u062f\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f <code>if<\/code> \u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u0627\u0631\u0627\u0626\u0647 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u060c \u062f\u0633\u062a\u0648\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u062e\u0627\u062a\u0645\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u0628\u06cc\u0627\u0646\u06cc\u0647\u060c <code>$#<\/code> \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0633\u062a.  \u0627\u06af\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 \u0635\u0641\u0631 \u0628\u0627\u0634\u062f (\u0622\u06af\u0648\u0645\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a) \u06cc\u0627 \u0627\u06af\u0631 \u0628\u0632\u0631\u06af\u062a\u0631 \u06cc\u0627 \u0645\u0633\u0627\u0648\u06cc 2 \u0628\u0627\u0634\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u063a\u0627\u0645 \u062e\u0637\u0627 \u0686\u0627\u067e \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Check if the input file is provided\nif [[ $# -eq 0 || $# -ge 2 ]]; then\n  echo \"Usage: $0 <user_file>\" &gt;&amp;2\n  exit 1\nfi\n\n<\/user_file><\/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>5.) \u0628\u0639\u062f\u06cc \u0627\u0633\u062a <code>log_action<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u06a9\u0647 \u06af\u0632\u0627\u0631\u0634\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062d\u0631\u0648\u0641 \u067e\u0631\u0631\u0646\u06af (\u0642\u0627\u0644\u0628\u200c\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0627 \u06a9\u062f\u0647\u0627\u06cc \u0641\u0631\u0627\u0631 ANSI) \u0636\u0628\u0637 \u0645\u06cc\u200c\u06a9\u0646\u062f: <code>\\033[1m<\/code> and <code>\\033[0m)<\/code> and a timestamp (using the <code>date<\/code> command to get the current date and the specified date format: <code>'%Y-%m-%d %H:%M:%S')<\/code>. This function is used to log important steps, success messages, and error messages in the script.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Log function\nlog_action() {\n  echo \"--------------------------------------------------\" | tee -a \"$LOG_FILE\"\n  echo -e \"$(date +'%Y-%m-%d %H:%M:%S') - \\033[1m$1\\033[0m\" | tee -a \"$LOG_FILE\"\n  echo \"--------------------------------------------------\" | tee -a \"$LOG_FILE\"\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>Enter fullscreen mode<\/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>Exit fullscreen mode<\/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>6.) Next is the <code>create_user_account<\/code> function that manages the entire process of creating a user, setting up their home directories with appropriate permissions and ownership, adding them to specified groups, and assigning randomly generated passwords. Every important step is logged.<\/p>\n<p><strong><code>create_user_account<\/code> function<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\n\ncreate_user_account() {\n  local username=\"$1\"\n  local groups=\"$2\"\n\n  log_action \"Creating user account '$username'...\"\n\n  # Check if user already exists\n  if id \"$username\" &amp;&gt; \/dev\/null; then\n    echo \"User '$username' already exists. Skipping...\" | tee -a \"$LOG_FILE\"\n    return 1\n  fi\n\n  # Create user with home directory and set shell\n  if useradd -m -s \/bin\/bash \"$username\"; then\n    echo \"User $username created successfully.\" | tee -a \"$LOG_FILE\"\n  else\n    echo \"Error creating user $username.\" | tee -a \"$LOG_FILE\"\n    return 1\n  fi\n\n  # Create user group if it does not exist (in case the script is run in other linux distributions that do not create user groups by default)\n  if ! getent group \"$username\" &gt;\/dev\/null; then\n    groupadd \"$username\"\n    usermod -g \"$username\" \"$username\"\n    log_action \"Group $username created.\"\n  fi\n\n  # Set up home directory permissions\n  echo \"Setting permissions for \/home\/$username...\" | tee -a \"$LOG_FILE\"\n  chmod 700 \"\/home\/$username\" &amp;&amp; chown \"$username:$username\" \"\/home\/$username\"\n  if [[ $? -eq 0 ]]\u061b  \u0633\u067e\u0633 \"\u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \/home\/$username\" \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f.  |  tee -a \"$LOG_FILE\" other echo \"\u062e\u0637\u0627 \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0645\u062c\u0648\u0632\u0647\u0627 \u0628\u0631\u0627\u06cc \/home\/$username.\"  |  tee -a \"$LOG_FILE\" return 1 fi # \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc (\u0628\u0627 \u06a9\u0627\u0645\u0627 \u0627\u0632 \u0647\u0645 \u062c\u062f\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a) echo \"\u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631 $username \u0628\u0647 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647...\" |  tee -a \"$LOG_FILE\" IFS=',' read -ra group_array \/dev\/null;  \u0633\u067e\u0633 \u0627\u06af\u0631 \"$group\" \u0631\u0627 \u0628\u0647 \u06af\u0631\u0648\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.  \u0633\u067e\u0633 echo \"Group $group \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a. \u0627\u06a9\u0646\u0648\u0646 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f.\"  |  tee -a \"$LOG_FILE\" other Echo \"\u062e\u0637\u0627 \u062f\u0631 \u0627\u06cc\u062c\u0627\u062f \u06af\u0631\u0648\u0647 $group.\"  |  tee -a \"$LOG_FILE\" \u0627\u062f\u0627\u0645\u0647 fi fi # \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u06af\u0631\u0648\u0647 if gpasswd -a \"$username\" \"$group\";  \u0633\u067e\u0633 \"User $username \u0628\u0647 \u06af\u0631\u0648\u0647 $group \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\" \u0628\u0627\u0632\u062a\u0627\u0628 \u062f\u0647\u06cc\u062f.  |  tee -a \"$LOG_FILE\" other echo \"\u062e\u0637\u0627 \u062f\u0631 \u0627\u0641\u0632\u0648\u062f\u0646 username $ \u0628\u0647 \u06af\u0631\u0648\u0647 $group.\"  |  \u0627\u06af\u0631 \u06af\u0631\u0648\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0627\u06af\u0631 \u06af\u0631\u0648\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0646\u06cc\u062f [[ -z \"$groups\" ]]\u061b  \u0633\u067e\u0633 \"\u0647\u06cc\u0686 \u06af\u0631\u0648\u0647 \u0627\u0636\u0627\u0641\u06cc \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647\" \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f.  |  tee -a \"$LOG_FILE\" fi # \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 echo \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \"\u062a\u0646\u0638\u06cc\u0645 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 $username...\" |  tee -a \"$LOG_FILE\" \u0631\u0645\u0632 \u0639\u0628\u0648\u0631=$(head \/dev\/urandom | tr -dc A-Za-z0-9 | head -c 12) echo \"$username:$password\" |  chpasswd if [[ $? -eq 0 ]]\u061b  \u0633\u067e\u0633 \u0639\u0628\u0627\u0631\u062a \"Password set for user $username\" \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f.  |  tee -a \"$LOG_FILE\" echo \"$username,$password\" >> \"$PASSWORD_FILE\" else echo \"\u062e\u0637\u0627 \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 $username. \u062d\u0630\u0641 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc $username\" |  tee -a \"$LOG_FILE\" userdel -r \"$username\" \u0628\u0627\u0632\u06af\u0634\u062a 1 fi }\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<ul>\n<li>\n<p>\u062f\u0631 \u062a\u0627\u0628\u0639\u060c \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0645 \u062a\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u0646\u062f \u062a\u0627 \u0627\u0632 \u062a\u06a9\u0631\u0627\u0631 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>local username=\"$1\"\nlocal groups=\"$2\"\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<ul>\n<li>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc\u060c \u0645\u0646 \u0627\u0632 <code>log_action<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f \u062b\u0628\u062a \u0634\u0631\u0648\u0639 \u0627\u06cc\u062c\u0627\u062f \u0647\u0631 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc.  \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u0646 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u0645 \u06a9\u0647 \u0622\u06cc\u0627 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0642\u0628\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06cc\u0627 \u062e\u06cc\u0631.  \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc \u0634\u0648\u062f.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>log_action \"Creating user account '$username'...\"\n\n  # Check if user already exists\n  if id \"$username\" &amp;&gt; \/dev\/null; then\n    echo \"User '$username' already exists. Skipping...\" | tee -a \"$LOG_FILE\"\n    return 1\n  fi\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<ul>\n<li>\n<p>\u0628\u0639\u062f\u060c \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 if \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0627\u0632 \u0639\u0628\u0627\u0631\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>useradd<\/code> \u0641\u0631\u0645\u0627\u0646 \u0628\u0627 <code>-m<\/code> \u0648 <code>-s<\/code> \u067e\u0631\u0686\u0645 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u067e\u0648\u0633\u062a\u0647 \u0648\u0631\u0648\u062f (\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u067e\u0648\u0633\u062a\u0647 \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a <code>\/bin\/bash<\/code>.  \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0627\u0635\u0644\u0627\u062d \u06cc\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f <code>-s \/bin\/bash<\/code> \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0627\u0645\u0644) \u0648 \u06cc\u06a9 \u0641\u0647\u0631\u0633\u062a \u0627\u0635\u0644\u06cc \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u062e\u062a\u0635\u0627\u0635 \u0645\u06cc \u062f\u0647\u062f.  \u0627\u06af\u0631 \u062f\u0631 \u062d\u06cc\u0646 \u0627\u062c\u0631\u0627\u06cc \u0641\u0631\u0645\u0627\u0646 \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0647\u062f\u060c \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc \u06a9\u0646\u062f.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Create user with home directory and set shell\n  if useradd -m -s \/bin\/bash \"$username\"; then\n    echo \"User $username created successfully.\" | tee -a \"$LOG_FILE\"\n  else\n    echo \"Error creating user $username.\" | tee -a \"$LOG_FILE\"\n    return 1\n  fi\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<ul>\n<li>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631 \u0631\u0648\u06cc \u0633\u0627\u06cc\u0631 \u062a\u0648\u0632\u06cc\u0639\u200c\u0647\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u06a9\u0647 \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u0627\u0635\u0644\u06cc \u0628\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0648 \u0627\u062e\u062a\u0635\u0627\u0635 \u0646\u0645\u06cc\u200c\u062f\u0647\u0646\u062f\u060c \u062f\u0633\u062a\u0648\u0631 if \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06af\u0631\u0648\u0647\u06cc \u0628\u0627 \u0647\u0645\u0627\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06af\u0631\u0648\u0647 \u0627\u0635\u0644\u06cc \u06a9\u0627\u0631\u0628\u0631.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Create user group if it does not exist (in case the script is run in other linux distributions that do not create user groups by default)\n  if ! getent group \"$username\" &gt;\/dev\/null; then\n    groupadd \"$username\"\n    usermod -g \"$username\" \"$username\"\n    log_action \"Group $username created.\"\n  fi\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<ul>\n<li>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0627\u0632 \u062a\u0627\u0628\u0639\u060c \u06a9\u0627\u0631\u0628\u0631 \u062a\u0627\u0632\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0627\u0644\u06a9 \u0641\u0647\u0631\u0633\u062a \u0627\u0635\u0644\u06cc \u062a\u0627\u0632\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u0634\u0648\u062f.  \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 \u0645\u0627\u0644\u06a9 \u062a\u0645\u0627\u0645\u06cc \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u06cc \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u0647\u0645\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>chmod<\/code> \u0648 <code>chown<\/code> \u062f\u0633\u062a\u0648\u0631\u0627\u062a  \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0686\u0627\u067e \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u062c\u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc \u0634\u0648\u062f.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Set up home directory permissions\n  echo \"Setting permissions for \/home\/$username...\" | tee -a \"$LOG_FILE\"\n  chmod 700 \"\/home\/$username\" &amp;&amp; chown \"$username:$username\" \"\/home\/$username\"\n  if [[ $? -eq 0 ]]; then\n    echo \"Permissions set for \/home\/$username.\" | tee -a \"$LOG_FILE\"\n  else\n    echo \"Error setting permissions for \/home\/$username.\" | tee -a \"$LOG_FILE\"\n    return 1\n  fi\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<ul>\n<li>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u06a9\u0627\u0631\u0628\u0631 \u062a\u0627\u0632\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0647 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0648\u0631\u0648\u062f\u06cc \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 Internal Field Separator (IFS) \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062c\u062f\u0627 \u0634\u062f\u0647 \u0628\u0627 \u06a9\u0627\u0645\u0627 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>read<\/code> \u0641\u0631\u0645\u0627\u0646 \u0628\u0627 <code>-ra<\/code> \u067e\u0631\u0686\u0645 \u0647\u0627\u060c \u06af\u0631\u0648\u0647 \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0622\u0631\u0627\u06cc\u0647 \u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f <code>group_array<\/code> \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u062d\u0644\u0642\u0647 for \u0628\u0639\u062f\u06cc.  \u062f\u0631 \u062f\u0627\u062e\u0644 \u062d\u0644\u0642\u0647\u060c \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0642\u062f\u0627\u0631 \u062f\u0631 group_array\u060c \u0645\u0642\u062f\u0627\u0631 <code>xargs<\/code> \u062f\u0633\u062a\u0648\u0631 \u0647\u0631 \u0641\u0636\u0627\u06cc \u062e\u0627\u0644\u06cc \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f\u060c \u06af\u0631\u0648\u0647 \u0631\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u0648\u062c\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0628\u0647 \u06af\u0631\u0648\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f. <code>gpasswd<\/code> \u0641\u0631\u0645\u0627\u0646 \u0628\u0627 <code>-a<\/code> \u067e\u0631\u0686\u0645.  \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0647\u06cc\u0686 \u06af\u0631\u0648\u0647\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0648\u0631\u0648\u062f\u06cc \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u067e\u06cc\u0627\u0645\u06cc \u0686\u0627\u067e \u062e\u0648\u0627\u0647\u062f \u0634\u062f.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Add user to additional groups (comma separated)\n  echo \"Adding user $username to specified additional groups...\" | tee -a \"$LOG_FILE\"\n  IFS=',' read -ra group_array \/dev\/null; then\n      if groupadd \"$group\"; then\n        echo \"Group $group did not exist. Now created.\" | tee -a \"$LOG_FILE\"\n      else\n        echo \"Error creating group $group.\" | tee -a \"$LOG_FILE\"\n        continue\n      fi\n    fi\n\n    # Add user to group\n    if gpasswd -a \"$username\" \"$group\"; then\n      echo \"User $username added to group $group.\" | tee -a \"$LOG_FILE\"\n    else\n      echo \"Error adding user $username to group $group.\" | tee -a \"$LOG_FILE\"\n    fi\n  done\n\n  # Log if no additional groups are specified\n  if [[ -z \"$groups\" ]]; then\n    echo \"No additional groups specified.\" | tee -a \"$LOG_FILE\"\n  fi\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<ul>\n<li>\n<p>\u0628\u0631\u0627\u06cc \u0628\u062e\u0634 \u0622\u062e\u0631 \u062a\u0627\u0628\u0639\u060c \u06cc\u06a9 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc 12 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u06cc \u062a\u0648\u0644\u06cc\u062f \u0648 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u0634\u0648\u062f.  \u062f\u0633\u062a\u0648\u0631 head \u062c\u0631\u06cc\u0627\u0646\u06cc \u0627\u0632 \u0628\u0627\u06cc\u062a \u0647\u0627\u06cc \u062a\u0635\u0627\u062f\u0641\u06cc \u0631\u0627 \u0627\u0632 <code>\/dev\/urandom<\/code> \u0641\u0627\u06cc\u0644.  \u0627\u06cc\u0646 \u062c\u0631\u06cc\u0627\u0646 \u0628\u0647 \u0644\u0648\u0644\u0647 \u06a9\u0634\u06cc \u0645\u06cc \u0634\u0648\u062f <code>tr<\/code> \u062f\u0633\u062a\u0648\u0631\u060c \u06a9\u0647 \u0628\u0627\u06cc\u062a \u0647\u0627 \u0631\u0627 \u0641\u06cc\u0644\u062a\u0631 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0641\u0642\u0637 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc \u0627\u0644\u0641\u0628\u0627\u06cc\u06cc (AZ\u060c az\u060c 0-9) \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>-dc<\/code> \u067e\u0631\u0686\u0645.  \u0633\u067e\u0633 \u0646\u062a\u06cc\u062c\u0647 \u0641\u06cc\u0644\u062a\u0631 \u0634\u062f\u0647 \u0628\u0647 \u062f\u0633\u062a\u0648\u0631 \u0633\u0631 \u062f\u06cc\u06af\u0631\u06cc \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u062a\u0646\u0647\u0627 \u06f1\u06f2 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0627\u0648\u0644 \u0631\u0627 \u0627\u0632 \u062c\u0631\u06cc\u0627\u0646 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0634\u062f\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0633\u067e\u0633 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062f\u0631 \u0622\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u0634\u0648\u062f <code>chpasswd<\/code> \u0641\u0631\u0645\u0627\u0646  \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u062f\u0631 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062a\u0639\u06cc\u06cc\u0646 \u0634\u062f\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f <code>.csv<\/code> \u0641\u0627\u06cc\u0644.  \u0627\u06af\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u062f\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062e\u0637\u0627 \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0632 \u0647\u0631\u06af\u0648\u0646\u0647 \u062e\u0637\u0631 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Generate random password, set it for the user, and store it in a file\n  echo \"Setting password for user $username...\" | tee -a \"$LOG_FILE\"\n  password=$(head \/dev\/urandom | tr -dc A-Za-z0-9 | head -c 12)\n  echo \"$username:$password\" | chpasswd\n  if [[ $? -eq 0 ]]; then\n    echo \"Password set for user $username.\" | tee -a \"$LOG_FILE\"\n    echo \"$username,$password\" &gt;&gt; \"$PASSWORD_FILE\"\n  else\n    echo \"Error setting password for user $username. Deleting $username user account\" | tee -a \"$LOG_FILE\"\n    userdel -r \"$username\"\n    return 1\n  fi\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>7.) \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u062a\u0627\u0628\u0639 create_user_account\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062d\u0627\u0648\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0631 \u0627\u06cc\u0646 \u0627\u0633\u0627\u0633 \u062d\u0633\u0627\u0628 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Process the user file\nuser_file=\"$1\"\nwhile IFS=';' read -r username groups; do\n  if create_user_account \"$username\" \"${groups%%[ ;]}\"; then\n    log_action \"User account '$username' created successfully.\"\n  else\n    log_action \"Error creating user account '$username'.\"\n  fi\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<ul>\n<li>\n<p>\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062e\u0648\u062f \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0645\u062a\u063a\u06cc\u0631 \u0627\u062e\u062a\u0635\u0627\u0635 \u0645\u06cc \u062f\u0647\u062f <code>user_file<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u062d\u0644\u0642\u0647 while \u0647\u0631 \u062e\u0637 \u0627\u0632 \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0646\u062f.  \u00ab<code>IFS=';<\/code>&#8216;<code>part sets the Internal Field Separator to a semicolon (;), splitting each line at the semicolon. The<\/code>\u0642\u0633\u0645\u062a read -r` username groups \u0642\u0633\u0645\u062a \u0647\u0627\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u062e\u0648\u0627\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0628\u0631\u0627\u06cc \u0647\u0631 \u062e\u0637 \u062f\u0631 \u0641\u0627\u06cc\u0644\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062a\u0627\u0628\u0639 create_user_account \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627 (\u0628\u0627 \u062d\u0630\u0641 \u0641\u0627\u0635\u0644\u0647 \u0647\u0627\u06cc \u0627\u0646\u062a\u0647\u0627\u06cc\u06cc) \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. <code>using ${groups%%[ ;]})<\/code>.  \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0647\u0645\u0686\u0646\u06cc\u0646 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f \u0627\u06af\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0632 <code>create_user_account<\/code> \u0645\u0648\u0641\u0642\u06cc\u062a \u06cc\u0627 \u0634\u06a9\u0633\u062a \u0628\u0648\u062f<\/p>\n<\/li>\n<\/ul>\n<p>8.) \u067e\u0633 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0641\u0642\u0637 \u0628\u0647 \u0645\u0627\u0644\u06a9 (\u0631\u06cc\u0634\u0647) \u0648 \u06a9\u0633\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u0631\u0648\u062a \u0647\u0633\u062a\u0646\u062f \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0631\u0645\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u06cc \u062f\u0647\u062f\u060c \u0627\u062a\u0645\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0641\u0627\u06cc\u0644 \u0644\u0627\u06af \u0648 \u0645\u062d\u0644 \u0641\u0627\u06cc\u0644 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0686\u0627\u067e \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>`<code\/><\/p>\n<p>chmod 600 &#8220;$PASSWORD_FILE&#8221;<\/p>\n<p>log_action &#8220;User creation script completed.&#8221;<\/p>\n<p>echo &#8220;Check $LOG_FILE for details.&#8221;<br \/>echo &#8220;Check $PASSWORD_FILE for user passwords.&#8221;<br \/><code\/>`<br \/>Prerequisites for running the script<\/p>\n<ul>\n<li>\n<p>A Linux system<\/p>\n<\/li>\n<li>\n<p>A bash terminal (Optional. You can use any available shell terminal on the Linux system).<\/p>\n<\/li>\n<li>\n<p>Root privileges on your system.<\/p>\n<\/li>\n<li>\n<p>The text file containing the usernames and groups, must be formatted as <code>username;group1,group2.<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a:<br \/>1.) \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0632 \u0645\u062e\u0632\u0646 HNG_Stage1 \u06a9\u067e\u06cc \u06cc\u0627 \u06a9\u0644\u0648\u0646 \u06a9\u0646\u06cc\u062f<\/p>\n<p>2.) \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u062d\u0627\u0648\u06cc \u0646\u0627\u0645 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>3.) \u0633\u067e\u0633\u060c \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0647 \u0647\u0645 \u0627\u06a9\u0646\u0648\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0648 \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>sudo .\/create_users.sh <text file=\"\"\/><\/code><\/p>\n<p><strong>\u0646\u062a\u06cc\u062c\u0647<\/strong><br \/>\u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u062e\u06cc \u0627\u0632 \u0648\u0638\u0627\u06cc\u0641 \u0627\u062f\u0627\u0631\u06cc \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0627 \u0686\u0646\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u06cc\u060c \u0645\u0647\u0646\u062f\u0633\u0627\u0646 SysOps \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0648 \u06af\u0631\u0648\u0647 \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f \u0648 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u0631\u0648\u06cc \u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u0647\u0645\u200c\u062a\u0631 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u0646\u062f \u0648 \u062f\u0631 \u0639\u06cc\u0646 \u062d\u0627\u0644 \u0627\u0632 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0622\u0645\u062f \u0648 \u0627\u06cc\u0645\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u062a\u06a9\u0627\u0644\u06cc\u0641 \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0622\u0645\u0648\u0632\u06cc HNG \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0642\u0648\u06cc\u062a \u0631\u0632\u0648\u0645\u0647 \u0634\u0645\u0627 \u0648 \u062a\u0639\u0645\u06cc\u0642 \u062f\u0627\u0646\u0634 \u0634\u0645\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc bash \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0628\u0631\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc\u0646 \u062a\u062c\u0631\u0628\u0647\u060c \u0627\u0632 HNG Premium \u062f\u06cc\u062f\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u0635\u0631\u0641\u0647 \u062c\u0648\u06cc\u06cc \u06a9\u0646\u062f\u060c \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u062f \u0648 \u0627\u0645\u0646\u06cc\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0647\u0646\u062f\u0633\u0627\u0646 SysOps \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a Bash \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0647\u0627\u06cc \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":67951,"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-67950","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\/67950","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=67950"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/67950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/67951"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=67950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=67950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=67950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}