Dateiverwaltung: Unterschied zwischen den Versionen
(→rsync) |
|||
(11 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 | Rsync-Optionen | ||
--inplace --partial | --inplace --partial | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== tar == | == tar == | ||
* Ein Archiv erstellen ohne Ordnerpfade | * Ein Archiv erstellen ohne Ordnerpfade | ||
Zeile 110: | 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 115: | 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