95 lines
2.3 KiB
Markdown
95 lines
2.3 KiB
Markdown
# 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 |