Dateiverwaltung: Unterschied zwischen den Versionen

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 
== Berechtigungen ==
 
== Berechtigungen ==
  
== Datum vergleichen ==
+
=== chmod ===
$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 ==
 
 
* 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 http://www.linux-user.de/ausgabe/2003/12/066-acl/index.html]
+
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
 
== 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
 
 
== 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
 
== 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>
 

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