Ontwikkel een Bash- of PowerShell-script voor servergebruikersbeheer en toegangscontrole
description
Met deze prompt kan de gebruiker een script maken dat het beheer van gebruikersaccounts en toegangsrechten automatiseert, waardoor handmatige fouten verminderen en de beveiliging verbeteren. Het is specifiek toegespitst op toegangscontrole, een essentieel onderdeel dat nog niet in bestaande prompts is behandeld, en ondersteunt maatwerk voor verschillende servertypes en beveiligingsregels.
prompt
Help me een Bash- of PowerShell-script te ontwikkelen dat gebruikersaccounts op mijn server beheert met functies zoals aanmaken, verwijderen, en aanpassen van gebruikers, inclusief het instellen van toegangsrechten en wachtwoordbeleid. Servertype: <vo ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Bash-script dat gebruikers op een Ubuntu 20.04 server beheert. Het script ondersteunt het aanmaken, verwijderen en aanpassen van gebruikers, inclusief het toewijzen van groepslidmaatschappen zoals sudo en developers, en het instellen van wachtwoordbeleid.
**Let op:** Voer dit script uit als root of met sudo.
```bash
#!/bin/bash
# Script voor gebruikersbeheer op Ubuntu 20.04
# Functies
create_user() {
read -p "Voer gebruikersnaam in: " username
if id "$username" &>/dev/null; then
echo "Gebruiker bestaat al."
else
sudo adduser --gecos "" "$username"
echo "Gebruiker $username aangemaakt."
fi
}
delete_user() {
read -p "Voer gebruikersnaam in om te verwijderen: " username
if id "$username" &>/dev/null; then
sudo deluser --remove-home "$username"
echo "Gebruiker $username verwijderd."
else
echo "Gebruiker bestaat niet."
fi
}
modify_user() {
read -p "Voer gebruikersnaam in om te wijzigen: " username
if id "$username" &>/dev/null; then
echo "Wat wil je aanpassen?"
echo "1. Wachtwoord wijzigen"
echo "2. Groepslidmaatschappen aanpassen"
read -p "Kies optie [1-2]: " keuze
case $keuze in
1)
sudo passwd "$username"
;;
2)
manage_groups "$username"
;;
*)
echo "Ongeldige keuze."
;;
esac
else
echo "Gebruiker bestaat niet."
fi
}
manage_groups() {
read -p "Welke groepen wil je toevoegen of verwijderen? (bijv. sudo, developers): " groups_input
IFS=',' read -ra group_array <<< "$groups_input"
for group in "${group_array[@]}"; do
group=$(echo "$group" | xargs) # verwijder spaties
# Check of groep bestaat, zo niet, maak aan
if ! getent group "$group" >/dev/null; then
sudo groupadd "$group"
echo "Groep $group aangemaakt."
fi
# Voeg gebruiker toe aan groep
sudo usermod -aG "$group" "$username"
echo "Gebruiker $username toegevoegd aan groep $group."
done
}
set_sudo_rights() {
read -p "Voer gebruikersnaam in voor sudo-toegang: " username
if id "$username" &>/dev/null; then
sudo usermod -aG sudo "$username"
echo "$username heeft nu sudo-rechten."
else
echo "Gebruiker bestaat niet."
fi
}
set_developer_group() {
read -p "Voer gebruikersnaam in voor developers groep: " username
if id "$username" &>/dev/null; then
# Maak de groep indien nodig
if ! getent group developers >/dev/null; then
sudo groupadd developers
echo "Groep developers aangemaakt."
fi
sudo usermod -aG developers "$username"
echo "$username toegevoegd aan de groep developers."
else
echo "Gebruiker bestaat niet."
fi
}
# Wachtwoordbeleid instellen (bijvoorbeeld wachtwoordduur, complexiteit)
set_password_policy() {
# Voor Ubuntu gebruiken we pam_pwquality.conf
sudo sed -i 's/^# minlen = 8/minlen = 12/' /etc/security/pwquality.conf
sudo sed -i 's/^# dcredit = 0/dcredit = -1/' /etc/security/pwquality.conf
sudo sed -i 's/^# ucredit = 0/ucredit = -1/' /etc/security/pwquality.conf
sudo sed -i 's/^# ocredit = 0/ocredit = -1/' /etc/security/pwquality.conf
sudo sed -i 's/^# lcredit = 0/lcredit = -1/' /etc/security/pwquality.conf
echo "Wachtwoordbeleid ingesteld."
}
# Hoofdmenu
while true; do
echo "----------------------------------------"
echo "Gebruikersbeheer Script"
echo "1. Gebruiker aanmaken"
echo "2. Gebruiker verwijderen"
echo "3. Gebruiker aanpassen"
echo "4. Sudo-toegang toewijzen"
echo "5. Developer groep toewijzen"
echo "6. Wachtwoordbeleid instellen"
echo "7. Afsluiten"
read -p "Maak een keuze [1-7]: " keuze
case $keuze in
1)
create_user
;;
2)
delete_user
;;
3)
modify_user
;;
4)
set_sudo_rights
;;
5)
set_developer_group
;;
6)
set_password_policy
;;
7)
echo "Afsluiten..."
break
;;
*)
echo "Ongeldige keuze."
;;
esac
done
```
**Gebruikstips:**
- Sla het script op bijvoorbeeld als `gebruikersbeheer.sh`
- Maak het uitvoerbaar: `chmod +x gebruikersbeheer.sh`
- Voer het uit met rootrechten of via sudo: `sudo ./gebruikersbeheer.sh`
**Aanpassingen:**
- Je kunt het script verder uitbreiden met extra functies of beveiligingsmaatregelen.
- Pas wachtwoordbeleid aan op basis van jouw eisen door de instellingen in `set_password_policy()` te wijzigen.
Veel succes met het beheren van je gebruikers!
provider: deepseek
model: deepseek-chat
Hier is een Bash-script voor Ubuntu 20.04 dat gebruikers kan aanmaken en toewijzen aan de `sudo` en `developers` groepen:
```bash
#!/bin/bash
# Configuratie
WACHTWOORD_BELEID_MIN_DAGEN=7
WACHTWOORD_BELEID_MAX_DAGEN=90
WACHTWOORD_BELEID_WAARSCHUWING=14
# Kleuren voor output
ROOD='\033[0;31m'
GROEN='\033[0;32m'
GEEL='\033[1;33m'
BLAUW='\033[0;34m'
RESET='\033[0m'
# Functie om te controleren of script als root wordt uitgevoerd
check_root() {
if [[ $EUID -ne 0 ]]; then
echo -e "${ROOD}Dit script moet als root worden uitgevoerd. Gebruik sudo.${RESET}"
exit 1
fi
}
# Functie om developers groep aan te maken indien niet bestaat
create_developers_group() {
if ! getent group developers >/dev/null; then
groupadd developers
echo -e "${GROEN}Developers groep aangemaakt.${RESET}"
fi
}
# Functie om wachtwoordbeleid in te stellen
set_password_policy() {
sed -i "s/^PASS_MAX_DAYS.*/PASS_MAX_DAYS $WACHTWOORD_BELEID_MAX_DAGEN/" /etc/login.defs
sed -i "s/^PASS_MIN_DAYS.*/PASS_MIN_DAYS $WACHTWOORD_BELEID_MIN_DAGEN/" /etc/login.defs
sed -i "s/^PASS_WARN_AGE.*/PASS_WARN_AGE $WACHTWOORD_BELEID_WAARSCHUWING/" /etc/login.defs
echo -e "${GROEN}Wachtwoordbeleid ingesteld.${RESET}"
}
# Functie om gebruiker aan te maken
create_user() {
local username=$1
local add_to_sudo=$2
local add_to_developers=$3
# Controleren of gebruiker al bestaat
if id "$username" &>/dev/null; then
echo -e "${GEEL}Gebruiker $username bestaat al.${RESET}"
return 1
fi
# Gebruiker aanmaken
useradd -m -s /bin/bash "$username"
# Wachtwoord instellen
echo -e "${BLAUW}Stel wachtwoord in voor gebruiker $username:${RESET}"
passwd "$username"
# Toevoegen aan groepen
if [[ "$add_to_sudo" == "ja" ]]; then
usermod -aG sudo "$username"
echo -e "${GROEN}Gebruiker $username toegevoegd aan sudo groep.${RESET}"
fi
if [[ "$add_to_developers" == "ja" ]]; then
usermod -aG developers "$username"
echo -e "${GROEN}Gebruiker $username toegevoegd aan developers groep.${RESET}"
fi
echo -e "${GROEN}Gebruiker $username succesvol aangemaakt.${RESET}"
}
# Functie om gebruiker te verwijderen
delete_user() {
local username=$1
local delete_home=$2
if ! id "$username" &>/dev/null; then
echo -e "${ROOD}Gebruiker $username bestaat niet.${RESET}"
return 1
fi
if [[ "$delete_home" == "ja" ]]; then
userdel -r "$username"
echo -e "${GROEN}Gebruiker $username en home directory verwijderd.${RESET}"
else
userdel "$username"
echo -e "${GROEN}Gebruiker $username verwijderd (home directory behouden).${RESET}"
fi
}
# Functie om gebruiker aan te passen
modify_user() {
local username=$1
if ! id "$username" &>/dev/null; then
echo -e "${ROOD}Gebruiker $username bestaat niet.${RESET}"
return 1
fi
echo -e "${BLAUW}Aanpassen van gebruiker: $username${RESET}"
echo "1) Wachtwoord wijzigen"
echo "2) Toevoegen aan sudo groep"
echo "3) Verwijderen uit sudo groep"
echo "4) Toevoegen aan developers groep"
echo "5) Verwijderen uit developers groep"
echo "6) Shell wijzigen"
read -p "Kies een optie (1-6): " choice
case $choice in
1)
passwd "$username"
;;
2)
usermod -aG sudo "$username"
echo -e "${GROEN}Toegevoegd aan sudo groep.${RESET}"
;;
3)
gpasswd -d "$username" sudo
echo -e "${GROEN}Verwijderd uit sudo groep.${RESET}"
;;
4)
usermod -aG developers "$username"
echo -e "${GROEN}Toegevoegd aan developers groep.${RESET}"
;;
5)
gpasswd -d "$username" developers
echo -e "${GROEN}Verwijderd uit developers groep.${RESET}"
;;
6)
read -p "Nieuwe shell (bijv. /bin/bash): " new_shell
usermod -s "$new_shell" "$username"
;;
*)
echo -e "${ROOD}Ongeldige keuze.${RESET}"
;;
esac
}
# Hoofdmenu
main_menu() {
echo -e "${BLAUW}=== Gebruikersbeheer Script ===${RESET}"
echo "1) Nieuwe gebruiker aanmaken"
echo "2) Gebruiker verwijderen"
echo "3) Gebruiker aanpassen"
echo "4) Wachtwoordbeleid instellen"
echo "5) Developers groep aanmaken"
echo "6) Afsluiten"
read -p "Kies een optie (1-6): " main_choice
case $main_choice in
1)
read -p "Gebruikersnaam: " username
read -p "Toevoegen aan sudo groep? (ja/nee): " sudo_choice
read -p "Toevoegen aan developers groep? (ja/nee): " dev_choice
create_user "$username" "$sudo_choice" "$dev_choice"
;;
2)
read -p "Gebruikersnaam: " username
read -p "Home directory verwijderen? (ja/nee): " del_home
delete_user "$username" "$del_home"
;;
3)
read -p "Gebruikersnaam: " username
modify_user "$username"
;;
4)
set_password_policy
;;
5)
create_developers_group
;;
6)
echo -e "${GROEN}Afsluiten...${RESET}"
exit 0
;;
*)
echo -e "${ROOD}Ongeldige keuze.${RESET}"
;;
esac
}
# Script uitvoering
check_root
while true; do
main_menu
echo
read -p "Druk op Enter om door te gaan..."
clear
done
```
## Gebruiksaanwijzing:
1. **Script opslaan** als `gebruikersbeheer.sh`
2. **Uitvoerbaar maken**:
```bash
chmod +x gebruikersbeheer.sh
```
3. **Uitvoeren als root**:
```bash
sudo ./gebruikersbeheer.sh
```
## Functies van het script:
- ✅ **Gebruiker aanmaken** met home directory en bash shell
- ✅ **Toewijzen aan groepen**: sudo en developers
- ✅ **Wachtwoordbeleid** instellen (min/max dagen, waarschuwing)
- ✅ **Developers groep** automatisch aanmaken indien niet bestaat
- ✅ **Interactief menu** voor eenvoudig gebruik
- ✅ **Foutafhandeling** en gebruikersvriendelijke meldingen
- ✅ **Kleurcodering** voor betere leesbaarheid
## Belangrijke opmerkingen:
- Het script moet als **root** worden uitgevoerd
- De `developers` groep wordt automatisch aangemaakt
- Wachtwoordbeleid wordt toegepast op systeemniveau
- Gebruikers krijgen standaard `/bin/bash` als shell
Het script biedt een veilige en gecontroleerde manier om gebruikers te beheren op uw Ubuntu 20.04 server.
error: Generation failed [deepseek] prompt_id=4818 locale=zh err=DeepSeek connection/timeout