#!/bin/bash

# Skrypt adduser tworzący nowe konto użytkownika w systemie,
# włącznie z jego katalogiem domowym, kopiujący domyślne
# dane konfiguracyjne i wykonujący inne operacje. Skrypt jest
# przeznaczony do użycia w standardowych systemach Unix/Linux,
# a nie w systemie macOS.

pwfile="/etc/passwd"    
shadowfile="/etc/shadow"
gfile="/etc/group"
hdir="/home"

if [ "$(id -un)" != "root" ] ; then
  echo "Błąd. Aby użyć tego skryptu, musisz być zalogowany jako użytkownik root." >&2
  exit 1
fi

echo "Tworzenie nowego konta w systemie $(hostname)."
echo -n "Login: "     ; read login

# Poniższy wiersz określa największy możliwy identyfikator użytkownika równy 5000,
# jednak możesz zmienić tę wartość i dostosować ją do zakresu identyfikatorów
# typowego dla twojego systemu.

uid="$(awk -F: '{ if (big < $3 && $3 < 5000) big=$3 } END { print big + 1 }' $pwfile)"
homedir=$hdir/$login

# Każdy użytkownik jest przypisywany do własnej grupy.
gid=$uid

echo -n "Pełna nazwa: " ; read fullname
echo -n "Powłoka: "     ; read shell

echo "Tworzenie konta $login dla użytkownika $fullname..."

echo ${login}:x:${uid}:${gid}:${fullname}:${homedir}:$shell >> $pwfile
echo ${login}:*:11647:0:99999:7::: >> $shadowfile

echo "${login}:x:${gid}:$login" >> $gfile

mkdir $homedir
cp -R /etc/skel/.[a-zA-Z]* $homedir
chmod 755 $homedir
chown -R ${login}:${login} $homedir

# Utworzenie początkowego hasła.
exec passwd $login
