Dateiverwaltung: Unterschied zwischen den Versionen
| (12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== | == Berechtigungen == | ||
== chmod == | === chmod === | ||
* Berechtigungen nur für Dateien bzw. Verzeichnisse ändern | * Berechtigungen nur für Dateien bzw. Verzeichnisse ändern | ||
find . -type f -exec chmod 444 {} \; # chmod auf Dateien | find . -type f -exec chmod 444 {} \; # chmod auf Dateien | ||
| Zeile 28: | Zeile 19: | ||
Betrachtet man ein Verzeichnis als Datei, dessen Inhalt eine Liste von Dateien ist, so erklärt sich die Wirkung der Zugriffsrechte von selbst. | Betrachtet man ein Verzeichnis als Datei, dessen Inhalt eine Liste von Dateien ist, so erklärt sich die Wirkung der Zugriffsrechte von selbst. | ||
: '''Ausführen''' heißt Öffnen des Verzeichnisses | :'''Ausführen''' heißt Öffnen des Verzeichnisses | ||
: '''Schreiben''' heißt den Inhalt des Verzeichnisses verändern | :'''Schreiben''' heißt den Inhalt des Verzeichnisses verändern | ||
: '''Lesen''' heißt in das Verzeichnis hineinschauen | :'''Lesen''' heißt in das Verzeichnis hineinschauen | ||
Lesen ohne Ausführen ist also nicht möglich. | Lesen ohne Ausführen ist also nicht möglich. | ||
| Zeile 40: | Zeile 31: | ||
Hier werden auch die Sonderrechte SUID, SGID erklärt. | Hier werden auch die Sonderrechte SUID, SGID erklärt. | ||
http://www.linux-user.de/ausgabe/2003/12/066-acl/index.html | |||
=== setuid === | |||
Durch das Setuid Bit wird eine ausführbare Datei mit den Rechten des Besitzers ausgeführt und nicht - wie sonst - mit den Rechten des aufrufenden Benutzers. Typischerweise gehört so eine Datei dem Administrator root. | |||
'''Achtung:''' Das funktioniert angeblich nur mit Binärdateien, nicht mit einem Shellscript! | |||
chmod +s Dateiname | |||
# oder | |||
chmod u+s Dateiname | |||
=== Sticky Bit === | |||
Wird verwendet für das <code>/tmp</code> Verzeichnis. | |||
chmod +t /local/tmp | |||
Anzeige der Berechtigungen | |||
drwxrwxrwt 2 root root 4096 14. Feb 10:18 tmp | |||
=== umask === | |||
Der Befehl ändert die Grundeinstellung der Zugriffsrechte bei neuen Dateien bzw. Verzeichnissen. | |||
Standardwert für Dateien: 666 | |||
Standardwert für Verzeichnisse: 777 | |||
umask 0022 | |||
ergibt für Dateien: 666 - 022 = 644 | |||
ergibt für Verzeichnisse: 777 - 022 = 755 | |||
Man kann diesen Befehl in die Datei <code>/etc/init.d/boot.local</code> eintragen, dann werden die Grundeinstellungen beim Systemstart gesetzt. | |||
Anscheinend muss diese Einstellung für jeden Benutzer extra gesetzt werden. Also eintragen in <code>~/.bashrc</code> und <code>~/.profile</code> | |||
== Datum vergleichen == | |||
$fileName=/tmp/backup_lock | |||
date_file=$(stat -c %Y $filename) | |||
date_jetzt=$(date +%s) | |||
date_diff=$(expr $date_jetzt - $date_file) | |||
== Fehlerhaft codierte Dateinamen == | |||
Zum Umbenennen muss eventuell das Tool '''convmv''' nachinstalliert werden. | |||
zypper in convmv | |||
Befehl zum rekursiven Umbenennen aller Dateien in einem Verzeichnis. | |||
convmv -f iso-8859-1 -t utf-8 -r --notest * | |||
== cp == | == cp == | ||
| Zeile 66: | Zeile 98: | ||
== rsync == | == rsync == | ||
=== Leerzeichen im Zielverzeichnis === | |||
Wenn im Zielverzeichnis Leerzeichen enthalten sind, werden diese abgeschnitten. Das kann verhindert werden durch folgende Option | Wenn im Zielverzeichnis Leerzeichen enthalten sind, werden diese abgeschnitten. Das kann verhindert werden durch folgende Option | ||
--protect-args | --protect-args | ||
=== Mehrere Dateien/Verzeichnisse excluden === | |||
* Geschwungenen Klammern | |||
rsync | rsync --exclude={/etc/fstab,/etc/default/grub,/boot/grub2/grub.cfg,/home,/root,/var,/srv} | ||
* Exclude File | |||
rsync --exclude-from=excluded.txt | |||
* einzeln excluden | |||
rsync --exclude=/etc/fstab --exclude=/etc/default/grub --exclude=/boot/grub2/grub.cfg ... | |||
== | === Sehr große Dateien === | ||
Rsync-Optionen | |||
--inplace --partial | |||
== tar == | == tar == | ||
* Ein Archiv erstellen ohne Ordnerpfade | * Ein Archiv erstellen ohne Ordnerpfade | ||
| Zeile 106: | Zeile 124: | ||
* TAR Archiv entpacken | * TAR Archiv entpacken | ||
tar -xf bak.tar | tar -xf bak.tar | ||
* GZ Archiv entpacken | |||
cd /var/log/apache2 | |||
gunzip ./access_log-20190617.xz | |||
tar -xf ./access_log-20190617 | |||
* XZ Archiv entpacken | * XZ Archiv entpacken | ||
XZ Archive sind verlustfrei gepackt. | XZ Archive sind verlustfrei gepackt. | ||
| Zeile 111: | Zeile 133: | ||
unxz ./access_log-20190617.xz | unxz ./access_log-20190617.xz | ||
tar -xf ./access_log-20190617 | tar -xf ./access_log-20190617 | ||
Aktuelle Version vom 2. November 2024, 17:04 Uhr
Berechtigungen
chmod
- Berechtigungen nur für Dateien bzw. Verzeichnisse ändern
find . -type f -exec chmod 444 {} \; # chmod auf Dateien
find . -type d -exec chmod 555 {} \; # chmod auf Verzeichnisse
- Setzen des Set User Id Bit = SUID Bit
Vor die drei Ziffern wird eine 4 gestellt. Beispiel:
chmod 4755 filename
oder
chmod u+s /usr/sbin/exim4
ergibt
-rwsr-xr-x 1 root root 875104 Jan 2 2013 /usr/sbin/exim4
Das x beim Eigentümer wird durch s ersetzt. Diese Datei wird daraufhin immer unter der ID des Besitzers ausgeführt, egal von wem sie aufgerufen wurde.
- Rechte von Verzeichnissen
Betrachtet man ein Verzeichnis als Datei, dessen Inhalt eine Liste von Dateien ist, so erklärt sich die Wirkung der Zugriffsrechte von selbst.
- Ausführen heißt Öffnen des Verzeichnisses
- Schreiben heißt den Inhalt des Verzeichnisses verändern
- Lesen heißt in das Verzeichnis hineinschauen
Lesen ohne Ausführen ist also nicht möglich.
- Dateirechte, Benutzerrechte unter UNIX
Hervorragende Einführung Hier werden auch die Sonderrechte SUID, SGID erklärt.
http://www.linux-user.de/ausgabe/2003/12/066-acl/index.html
setuid
Durch das Setuid Bit wird eine ausführbare Datei mit den Rechten des Besitzers ausgeführt und nicht - wie sonst - mit den Rechten des aufrufenden Benutzers. Typischerweise gehört so eine Datei dem Administrator root.
Achtung: Das funktioniert angeblich nur mit Binärdateien, nicht mit einem Shellscript!
chmod +s Dateiname # oder chmod u+s Dateiname
Sticky Bit
Wird verwendet für das /tmp Verzeichnis.
chmod +t /local/tmp
Anzeige der Berechtigungen
drwxrwxrwt 2 root root 4096 14. Feb 10:18 tmp
umask
Der Befehl ändert die Grundeinstellung der Zugriffsrechte bei neuen Dateien bzw. Verzeichnissen.
Standardwert für Dateien: 666
Standardwert für Verzeichnisse: 777
umask 0022
ergibt für Dateien: 666 - 022 = 644
ergibt für Verzeichnisse: 777 - 022 = 755
Man kann diesen Befehl in die Datei /etc/init.d/boot.local eintragen, dann werden die Grundeinstellungen beim Systemstart gesetzt.
Anscheinend muss diese Einstellung für jeden Benutzer extra gesetzt werden. Also eintragen in ~/.bashrc und ~/.profile
Datum vergleichen
$fileName=/tmp/backup_lock date_file=$(stat -c %Y $filename) date_jetzt=$(date +%s) date_diff=$(expr $date_jetzt - $date_file)
Fehlerhaft codierte Dateinamen
Zum Umbenennen muss eventuell das Tool convmv nachinstalliert werden.
zypper in convmv
Befehl zum rekursiven Umbenennen aller Dateien in einem Verzeichnis.
convmv -f iso-8859-1 -t utf-8 -r --notest *
cp
- Dateien kopieren
So kopiert man auch versteckte Dateien:
cp -dpR Quellverzeichnis/.[a-z,A-Z,0-9]* Zielverzeichnis
oder
cp -dpR Quellverzeichnis/.[^.]* Zielverzeichnis # .[^.] bedeutet: beliebiges Zeichen ausgenommen Punkt
- Eine Datei verteilen auf bestimmte Verzeichnisse
for dir in `ls joomla_* -d` ; do cp /www/joomla_fg/administrator/components/com_weblinks/config.xml $dir/administrator/components/com_weblinks done
ls
Dateien anzeigen. Es gibt unter Suse standardmäßig einen Aliasbefehl: dir
- Nur Verzeichnisse anzeigen
ls -ld * | grep "^d"
lsof
Offene Dateien werden aufgelistet
rsync
Leerzeichen im Zielverzeichnis
Wenn im Zielverzeichnis Leerzeichen enthalten sind, werden diese abgeschnitten. Das kann verhindert werden durch folgende Option
--protect-args
Mehrere Dateien/Verzeichnisse excluden
- Geschwungenen Klammern
rsync --exclude={/etc/fstab,/etc/default/grub,/boot/grub2/grub.cfg,/home,/root,/var,/srv}
- Exclude File
rsync --exclude-from=excluded.txt
- einzeln excluden
rsync --exclude=/etc/fstab --exclude=/etc/default/grub --exclude=/boot/grub2/grub.cfg ...
Sehr große Dateien
Rsync-Optionen
--inplace --partial
tar
- Ein Archiv erstellen ohne Ordnerpfade
pwd=$(pwd) cd /usr/local/bin/bak tar cfv /www/download/bak.tar * cd $pwd
- Dateien in einem Archiv anzeigen
tar -tvf bak.tar
- TAR Archiv entpacken
tar -xf bak.tar
- GZ Archiv entpacken
cd /var/log/apache2 gunzip ./access_log-20190617.xz tar -xf ./access_log-20190617
- XZ Archiv entpacken
XZ Archive sind verlustfrei gepackt.
cd /var/log/apache2 unxz ./access_log-20190617.xz tar -xf ./access_log-20190617