# Hilfreiche Bash-Schnipsel
## Dateien mit anderer Endung versehen
```for datei in $(ls *.tif)
do
 mv ”$datei” ”{$datei%.tif}.pdf” 
done
```

## Löschen von Leerzeichen in Dateinamen und Ersetzen mit _

`for f in *\ *; do mv ”$f” ”${f// /_}”; done`

## chmod
 chmod ugo user/group/other
 chmod g+ws --> die Gruppe bekommt Schreibrechte und das setgid wird gesetzt 
 Numerisch 2755 = rwxr-Sr-x

chmod g+s → setgid + execute (s) 
chmod g+S → nur setgid, ohne execute (S)
Das heisst kleines s wenn auch x gesetzt ist, groß s ohne execute (cper chmod kann man nur ein kleines s setzen)


Beispiel:

Ohne setgid:

/projekt
├── alice erstellt datei1  → Gruppe: alice
└── bob erstellt datei2    → Gruppe: bob

Mit setgid:

/projekt
├── alice erstellt datei1  → Gruppe: projektteam
└── bob erstellt datei2    → Gruppe: projektteam

Das verhindert dauerndes:

chgrp projektteam datei


Wann nutzt man das setgid konkret?

Sehr sinnvoll für:

gemeinsame Entwickler-Verzeichnisse
Team-Ordner auf Servern
Webserver-Verzeichnisse
geteilte Upload-/Projektbereiche

Es gibt drei spezielle Bits:

u+s → setuid (User-ID)
g+s → setgid (Group-ID)
o+t → sticky bit

Beispiele:

chmod u+s datei   # setuid
chmod g+s datei   # setgid
chmod +t verzeichnis  # sticky bit

In ls -l erscheinen sie an unterschiedlichen Stellen:

-rwsr-sr-t
   ^  ^  ^
   |  |  └─ sticky bit (others)
   |  └──── setgid (group)
   └─────── setuid (user)

Also:
setgid heißt wörtlich "set group ID", daher gibt es kein u+g-Äquivalent oder so – es ist fest an die Gruppenrechte gekoppelt.

Die Logik ist:

setuid → Prozess übernimmt Besitzer-ID
setgid → Prozess übernimmt Gruppen-ID
sticky → Sonderregel für Verzeichnisse (z. B. /tmp)

a+x oder ugo+x	Eine Datei für alle Nutzer ausführbar machen.
u+r	Der Eigentümer darf (zusätzlich zu vorhandenen Rechten) lesen.
a+w oder ugo+w	Alle dürfen zusätzlich zu vorhandenen Rechten schreiben.
g-w	Der Gruppe werden die Schreibrechte entzogen.
o=r	Andere Benutzer dürfen nur lesen, nicht schreiben oder ausführen.
g=rw	Die Gruppe darf nur lesen und schreiben, ein eventuell vorhandenes Ausführungsrecht wird entfernt.
u+s	Setzt das SetUID-Bit

## Netzwerk

### Abfrage der offenen Ports

ss -lant


## Nächstes Thema - Platzhalter