Dateiverwaltung: Unterschied zwischen den Versionen

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Datum vergleichen ==
+
== Berechtigungen ==
$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 *
 
  
== 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 http://www.linux-user.de/ausgabe/2003/12/066-acl/index.html]
+
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 ==
* Wiederherstellen von Dateien aus Backup
+
=== Leerzeichen im Zielverzeichnis ===
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
 
Wenn im Zielverzeichnis Leerzeichen enthalten sind, werden diese abgeschnitten. Das kann verhindert werden durch folgende Option
 
  --protect-args
 
  --protect-args
  
* Mehrere Dateien/Verzeichnisse excluden
+
=== Mehrere Dateien/Verzeichnisse excluden ===
Komplettes Backup auf einen gemountete Datenträger kopieren
+
* Geschwungenen Klammern
  rsync -avH --numeric-ids \
+
  rsync --exclude={/etc/fstab,/etc/default/grub,/boot/grub2/grub.cfg,/home,/root,/var,/srv}
    --exclude={/etc/fstab,/etc/default/grub,/boot/grub2/grub.cfg,/home,/root,/var,/srv} \
+
* Exclude File
    -e ssh 10.0.0.111:/media/disk/suseVirtualbox/backup.0/* /mnt/tmp
+
rsync --exclude-from=excluded.txt
 +
* einzeln excluden
 +
rsync --exclude=/etc/fstab --exclude=/etc/default/grub --exclude=/boot/grub2/grub.cfg ...
  
== setuid ==
+
=== Sehr große Dateien ===
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.
+
Rsync-Optionen
 +
--inplace --partial
  
'''Achtung:''' Das funktioniert angeblich nur mit Binärdateien, nicht mit einem Shellscript!
 
 
chmod +s Dateiname
 
 
 
# oder
 
chmod u+s Dateiname
 
 
== 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
 
== 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>
 

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