Automating User Creation and Management for New Developers
For the first HNG Challenge, I created a bash script that automates user creation, group assignment, and password generation. In this article, I'll break down the script and explain how it works in a way that's easy to understand.
How the Script Works
The script takes a text file as input, containing usernames and group names in the format "user;groups". Here's what the script does:
Reads the file line by line
Creates users and groups as specified
Sets up home directories with correct permissions and ownership
Generates random passwords for users
Logs all actions to a log file
Securely stores generated passwords in a separate file
Security First
The script starts by checking two important things:
If it's being run as the root user (for security reasons)
If the input file exists
If either condition isn't met, the script stops with an error message.
Creating Log and Password Files
The script creates two files:
A log file to track all actions
A password file to store generated passwords securely
The password file is set to only be readable by the file owner, for security reasons.
The User Creation Function
The script defines a function that takes two arguments:
A username
A list of groups
This function:
Creates a personal group with the same name as the username
Creates the user with the personal group and specified groups
Sets a random password for the user
Logs actions to both the log and password files
Reading the Input File
The script reads the input file line by line, skipping empty lines and removing whitespace. It also checks if a user already exists, and skips the line if so.
Conclusion
This script is a helpful tool for automating user creation and management tasks. It saves time and makes life easier for developers and sysadmins.
For more information, visit [HNG](https://hng.tech/internship) or [HNG Tech](https://hng.tech/hire). Thanks for reading!