Dateiverwaltung: Unterschied zwischen den Versionen
Zeile 1: | Zeile 1: | ||
== Berechtigungen == | == Berechtigungen == | ||
− | == | + | === 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 31: | 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 43: | 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 | |
+ | |||
+ | == Datum vergleichen == | ||
+ | $fileName=/tmp/backup_lock | ||
+ | date_file=$(stat -c %Y $filename) | ||
+ | date_jetzt=$(date +%s) | ||
+ | date_diff=$(expr $date_jetzt - $date_file) | ||
+ | |||
+ | === 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> | ||
+ | == 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>~/.profi</code> | ||
+ | === 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> | ||
+ | == 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 93: | Zeile 154: | ||
Rsync-Optionen | Rsync-Optionen | ||
--inplace --partial | --inplace --partial | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== tar == | == tar == | ||
* Ein Archiv erstellen ohne Ordnerpfade | * Ein Archiv erstellen ohne Ordnerpfade | ||
Zeile 118: | Zeile 169: | ||
unxz ./access_log-20190617.xz | unxz ./access_log-20190617.xz | ||
tar -xf ./access_log-20190617 | tar -xf ./access_log-20190617 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Version vom 14. Februar 2022, 09:51 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
Datum vergleichen
$fileName=/tmp/backup_lock date_file=$(stat -c %Y $filename) date_jetzt=$(date +%s) date_diff=$(expr $date_jetzt - $date_file)
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
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 ~/.profi
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
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
- Wiederherstellen von Dateien aus Backup
rsync -av --numeric-ids /backup/server.hs/backup.0/home/user_1 /home # über SSH: rsync -avz --numeric-ids -e ssh primergy:/backup/server.hs/backup.0/home/user_1 /home
- Backup mit Rsync
# Ausschließen mehrerer Verzeichnisinhalte rsync -avz --numeric-ids --exclude media/* --exclude=mnt/* --delete-excluded <quellverzeichnis> <zielverzeichnis>
# Verwendung eines Exclude Files rsync -avz --numeric-ids --exclude-from=excluded.txt --delete-excluded <quellverzeichnis> <zielverzeichnis>
- 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
Komplettes Backup auf einen gemountete Datenträger kopieren
rsync -avH --numeric-ids \ --exclude={/etc/fstab,/etc/default/grub,/boot/grub2/grub.cfg,/home,/root,/var,/srv} \ -e ssh 10.0.0.111:/media/disk/suseVirtualbox/backup.0/* /mnt/tmp
- 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
- XZ Archiv entpacken
XZ Archive sind verlustfrei gepackt.
cd /var/log/apache2 unxz ./access_log-20190617.xz tar -xf ./access_log-20190617