===== skel =====
**Kurzfassung:** ''/etc/skel'' ist das Standard-Skelettverzeichnis für neue Benutzer. Der Inhalt wird beim Anlegen eines Users in dessen Home kopiert, damit alle Nutzer eine konsistente Grundkonfiguration erhalten.
==== Übersicht ====
Beim Erstellen neuer Benutzer kopieren ''useradd'' und ''adduser'' automatisch alle Dateien und Ordner aus ''/etc/skel'' in das Home-Verzeichnis. Damit lassen sich Standard-Ordner, Shell-Konfigurationen, SSH-Templates und Dokumentationen zentral pflegen.
==== Voraussetzungen ====
* Root-Privilegien oder Sudo-Zugriff
* Kenntnis der Benutzerverwaltung (useradd/adduser)
* Grundkenntnisse von Shell- und Konfigurationsdateien
==== Standard-Inhalt von /etc/skel ====
# Verzeichnisinhalt anzeigen
ls -la /etc/skel
# Typische Dateien (Distribution abhängig)
# .bashrc
# .profile oder .bash_profile
# .bash_logout
# .bash_aliases (optional)
# .ssh/ (optional)
==== Systemweite Shell-Dateien (ergänzend) ====
/etc/profile # Login-Shells (systemweit)
/etc/bash.bashrc # Interaktive Shells (Debian/Ubuntu)
/etc/profile.d/*.sh # Drop-ins für globale Shell-Einstellungen
==== Wie /etc/skel verwendet wird ====
# Benutzer mit Home-Verzeichnis anlegen
sudo useradd -m -s /bin/bash alice
# Alternativ (Debian/Ubuntu, interaktiv)
sudo adduser bob
# Home prüfen
ls -la /home/alice
==== /etc/skel erweitern (Beispiele) ====
=== 1) Standard-Ordnerstruktur ===
sudo mkdir -p /etc/skel/{bin,projects,logs,tmp,Documents,Downloads}
=== 2) Aliases für alle Benutzer ===
sudo tee /etc/skel/.bash_aliases > /dev/null <<'EOF'
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
EOF
=== 3) Standard-Editor und Prompt in .bashrc ===
sudo tee -a /etc/skel/.bashrc > /dev/null <<'EOF'
export EDITOR=vim
export VISUAL=vim
PS1='\u@\h:\w\$ '
EOF
=== 4) .bash_profile anlegen ===
sudo tee /etc/skel/.bash_profile > /dev/null <<'EOF'
# Login-Shell: .bashrc einbinden
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
EOF
=== 5) SSH-Template (nur config, keine Keys!) ===
sudo mkdir -p /etc/skel/.ssh
sudo chmod 700 /etc/skel/.ssh
sudo tee /etc/skel/.ssh/config > /dev/null <<'EOF'
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
ForwardAgent no
EOF
sudo chmod 600 /etc/skel/.ssh/config
=== 6) Standard-Git-Konfiguration ===
sudo tee /etc/skel/.gitconfig > /dev/null <<'EOF'
[user]
name = Vorname Nachname
email = user@example.com
[core]
editor = vim
[alias]
st = status
co = checkout
br = branch
EOF
=== 7) README für neue Benutzer ===
sudo tee /etc/skel/README.txt > /dev/null <<'EOF'
Willkommen!
Dieses Home-Verzeichnis wurde automatisch erstellt.
Standard-Ordner:
- ~/projects
- ~/bin
- ~/logs
Bei Fragen: admin@example.com
EOF
==== Mehrere Skeletons (Benutzerrollen) ====
# Entwickler-Skeleton
sudo mkdir -p /etc/skel.developer
sudo cp -r /etc/skel/. /etc/skel.developer/
# Admin-Skeleton
sudo mkdir -p /etc/skel.admin
sudo cp -r /etc/skel/. /etc/skel.admin/
# Benutzer mit bestimmtem Skeleton anlegen
sudo useradd -m -k /etc/skel.developer -s /bin/bash devuser
==== Änderungen testen ====
sudo useradd -m -s /bin/bash testuser
ls -la /home/testuser
sudo userdel -r testuser
==== Hinweise zu useradd vs. adduser ====
**useradd (low-level):**
* Standard-Defaults in ''/etc/default/useradd''
* Home nur mit ''-m''
**adduser (Debian/Ubuntu):**
* Interaktiv, erstellt Home automatisch
* Defaults in ''/etc/adduser.conf''
sudo useradd -D
sudo cat /etc/adduser.conf
==== Hinweise ====
**Best Practices:**
- /etc/skel nur für Standard-Dateien verwenden
- Keine sensiblen Daten in /etc/skel ablegen
- Änderungen mit Testuser prüfen
- SSH: nur ''config'', keine privaten Keys
- README/Docs für neue Benutzer beilegen
**Häufige Fehler vermeiden:**
- /etc/skel wirkt nur bei NEUEN Benutzern, nicht retroaktiv
- Falsche Rechte auf .ssh/.gitconfig → Sicherheitsrisiko
- /etc/skel nicht für systemweite Konfigurationen nutzen
==== Siehe auch ====
* [[sammlung:benutzerverwaltung|Benutzerverwaltung]]
* [[sammlung:bash_profile_bashrc|bashrc und Profile]]
* [[sammlung:ssh|SSH]]
* [[sammlung:git|Git]]
==== Quellen ====
* [[https://man7.org/linux/man-pages/man8/useradd.8.html|useradd man page]]
* [[https://man7.org/linux/man-pages/man8/adduser.8.html|adduser man page]]
----
{{tag>skel users /etc provisioning defaults}}
----