Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:dateirechte

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
admin_grundlagen:dateirechte [2013/10/08 19:54]
ingo_wichmann
admin_grundlagen:dateirechte [2021/02/17 09:31]
ingo_wichmann [Übung: Weniger Rechte für Eigentümer und Gruppe]
Zeile 1: Zeile 1:
-====== ​Befehle Dateirechte ​====== +====== ​Übung: finde die minimal nötigen Berechtigungen ​======
-=== Benutzer anlegen === +
-  useradd -m benutzer +
-=== Benutzer löschen === +
-  userdel -r benutzer+
  
-=== Dateizugriffsrechte betrachten === +  mkdir -m 000 /tmp/dir1 /tmp/dir2 
-  ​ls -l datei +  ​echo geheim > file1 
-=== Verzeichnisrechte betrachten === +  ​chmod 000 file1
-  ​ls -ld verzeichnis+
  
-=== Besitzer der Datei ändern === +Welche (minimalen) Berechtigungen müssen jeweils bei ''/​tmp/​dir1'',​ ''/​tmp/​dir2''​ und ''​file1''​ hinzugefügt werden, damit ''​file1''​ mit 
-  ​chown benutzer datei +  ​cp file1 /​tmp/​dir1/​file2 
-=== Gruppe der Datei ändern === +ins Verzeichnis ''/​tmp/​dir1''​ kopiert werden kann?
-  chown :users datei +
-  chgrp users datei +
-=== SUID Recht der Datei ändern === +
-  chmod u+s programm+
  
-programm starten und real bzw. effective UID prüfen: +----
-  ps -eo cmd,​ruser,​euser+
  
-=== GUID Recht der Datei ändern === +Welche (minimalen) Berechtigungen müssen jeweils bei ''/​tmp/​dir1'',​ ''/​tmp/​dir2''​ und ''​file2''​ hinzugefügt werden, damit ''​file2''​ mit 
-  ​chmod g+s datei+  ​mv /​tmp/​dir1/​file2 /​tmp/​dir2/​ 
 +ins Verzeichnis ''​dir2''​ verschoben werden kann?
  
  
-=== Gruppen eines Benutzers anzeigen ​=== +====== ​Übung: mit umask Berechtigung setzen ======
-  id benutzer+
  
-=== Was darf eine Gruppe? ​===+Welche ''​umask''​ muss man setzen, damit neu angelegte 
 +  * Dateien die Berechtigung ''​%%rw- r-- -w-%%''​ und 
 +  * Verzeichnisse die Berechtigung ''​rwx r-x -w-''​ 
 +bekommen? 
 +====== Befehle Dateirechte ====== 
 +^ Dateizugriffsrechte betrachten | 
 +  ls -l datei 
 +
 +^ Dateizugriffsrechte von Dateien im Verzeichnis betrachten | 
 +  ls -l verzeichnis 
 +
 +^ Verzeichnisrechte betrachten (nicht der Einträge im Verzeichnis) | 
 +  ls -ld verzeichnis 
 +
 +^ Besitzer der Datei ändern | 
 +  chown benutzer datei 
 +
 +^ Gruppe der Datei ändern | 
 +  chown :users datei 
 +  chgrp users datei 
 +
 +^ SUID Recht für die Datei ''/​bin/​cat''​ setzen | Programm starten und real bzw. effective UID ansehen: 
 +  chmod u+s /bin/cat 
 +Als Nutzer: 
 +  cat & 
 +  ps -C cat -o cmd,​ruser,​euser 
 +
 +^ Wo darf ich schreiben? | 
 +  find / /dev -xdev -writable -ls 
 +
 +Was darf eine Gruppe? ​|
   find / /dev -xdev -group users -ls   find / /dev -xdev -group users -ls
- +| 
-=== Alle SUID-root Dateien finden ​===+Alle SUID-root Dateien finden ​|
   find / -xdev -type f -user root -perm /4000 -ls 2>/​dev/​null   find / -xdev -type f -user root -perm /4000 -ls 2>/​dev/​null
- +  find / -xdev -type f -perm -u=s -ls 
-=== Allen Programmen das Ausführungsrecht nehmen ​===+
 +Allen Programmen das Ausführungsrecht nehmen ​|
   find verzeichnis/​ -type f -perm /0111 -exec chmod a-x {} \;   find verzeichnis/​ -type f -perm /0111 -exec chmod a-x {} \;
-oder schneller 
   find verzeichnis/​ -type f -perm /0111 -print0 | xargs -0 chmod a-x   find verzeichnis/​ -type f -perm /0111 -print0 | xargs -0 chmod a-x
 +|
  
 ====== Beispiel: Schreibrechte im Verzeichnis - mehr als man denkt ====== ====== Beispiel: Schreibrechte im Verzeichnis - mehr als man denkt ======
Zeile 77: Zeile 98:
 </​file>​ </​file>​
  
-====== ​Beispiel: Weniger Rechte für Eigentümer und Gruppe ====== +====== ​Übung: Weniger Rechte für Eigentümer und Gruppe ====== 
-  chmod 246 /verzeichnis/datei+Erzeuge eine Datei ''/​tmp/​datei356''​ mit folgendem Inhalt: 
 +<file txt /​tmp/​datei356>​ 
 +#​!/​bin/​bash 
 +echo executable 
 +</​file>​ 
 + 
 +Setze die Berechtigungen zu ''​356'':​ 
 +  chmod 356 /tmp/datei356 
 + 
 +Wer darf was? 
 + 
 +|  ''​r''​ ''​w''​ ''​x'' ​ ^Mitglied der Gruppe ​ ^nicht Mitglied der Gruppe^ 
 +^             ​Besitzer| ​ ''​_''​ ''​_''​ ''​_'' ​ |  ''​_''​ ''​_''​ ''​_'' ​     | 
 +^       nicht Besitzer| ​ ''​_''​ ''​_''​ ''​_'' ​ |  ''​_''​ ''​_''​ ''​_'' ​     | 
 + 
 +Tip: 
 +Das Lesen (''​r''​) von Dateien kann man mit 
 +  head -0 /​tmp/​datei356 
 +testen. ((''​head -0''​ zeigt die ersten 0 Zeilen, also nichts, aber öffnet die Datei. Im Fehlerfall erscheint eine Meldung. )) 
 +Das Schreiben (''​w''​) von Dateien kann man zerstörungsfrei mit 
 +  >> /​tmp/​datei356 
 +testen.  
 +(( 
 +  sysctl fs.protected_regular 
 +<​file>​ 
 +fs.protected_regular = 2 
 +</​file>​ 
 + 
 +https://​www.kernel.org/​doc/​Documentation/​sysctl/​fs.txt:​ 
 +//This protection is similar to protected_fifos,​ but it 
 +avoids writes to an attacker-controlled regular file, where a program expected to create one. 
 + 
 +When set to "​0",​ writing to regular files is unrestricted. 
 + 
 +When set to "​1"​ don't allow O_CREAT open on regular files that we don't own in world writable sticky directories,​ unless they are owned by the owner of the directory.
  
-====== Beispiel: Gruppenzugehörigkeiten ​leben länger als man denkt ======+When set to "​2"​ it also applies to group writable sticky directories.//​ 
 +)) 
 +Das Ausführen (''​x''​) kann man testen, in dem man  
 +  /​tmp/​datei356 
 +ausführt. 
 +====== Beispiel: Gruppenzugehörigkeiten ​kleben am Prozess ​länger als man denkt ======
   groupadd projekt   groupadd projekt
   useradd -m -G projekt iw   useradd -m -G projekt iw
   touch /tmp/datei   touch /tmp/datei
-  chown root:​projekt+  chown root:​projekt ​/tmp/datei
   chmod g+w /tmp/datei   chmod g+w /tmp/datei
   su - iw   su - iw
Zeile 96: Zeile 156:
   echo test1 >> /tmp/datei   echo test1 >> /tmp/datei
  
-====== Beispiel: ​Ungewollte Reinkarnation unter Linux ======+====== Beispiel: ​Ungewollter Eigentümerwechsel nach dem Löschen eines Nutzers ​======
   useradd -m chef   useradd -m chef
   userdel chef   userdel chef
   useradd -m raumpflege   useradd -m raumpflege
   ls -l /home   ls -l /home
 +
 +Daher sollte man vor oder nach dem Löschen einer Benutzerkennung sämtliche Dateien, die diesem Benutzer gehörten, als ''​root''​ übernehmen oder einem anderen, für diesen Zweck erstellten technischen Benutzer übereignen.
 +====== Beispiel: SUID-Bit Dateien finden und SUID-Bit dauerhaft entfernen ======
 +SUID-Bit Dateien finden (als root):
 +
 +  find / /boot -xdev -perm /u+s -type f -user root -ls
 +
 +SUID-Bit dauerhaft entfernen:
 +Ubuntu / Debian: ​
 +  dpkg-statoverride --update --add root root 0755 /bin/ping
  
 ====== Beispiel: Auswirkung von mount-Optionen ====== ====== Beispiel: Auswirkung von mount-Optionen ======
-  mkdir /mnt/hda2 +  mkdir /mnt/sda2 
-  mount -o ro /dev/hda2 /mnt/hda2 +  mount -o ro /dev/sda2 /mnt/sda2 
-  touch /mnt/hda2/test+  touch /mnt/sda2/test
  
 Weitere Mount-Optionen mit Auswirkungen auf Dateirechte: ​ Weitere Mount-Optionen mit Auswirkungen auf Dateirechte: ​
-|Option ​|Bedeutung|+^Option ​^Bedeutung|
 |nodev ​ |Gerätedateien sind nicht erlaubt| |nodev ​ |Gerätedateien sind nicht erlaubt|
 |noexec | Ausführbare Dateien sind nicht erlaubt | |noexec | Ausführbare Dateien sind nicht erlaubt |
 |nosuid | S-BIT wird ignoriert | |nosuid | S-BIT wird ignoriert |
-|noatime|Keine Aktualisierung der atime  | 
-|relatime|atime wird nur aktualisiert,​ wenn ein Schreibzugriff in der inode erfolgt ​ |  
 |ro     | Dateien sind nicht veränderbar | |ro     | Dateien sind nicht veränderbar |
  
-====== ​Weitere Rechtevergabemöglichkeiten auf Dateisystemebene ​====== +====== ​Beispiel: Ungewollter Eigentümerwechsel bei Backup und Restore ​====== 
-  ​man chacl +=== Server A === 
-  ​man chattr+ 
 +  ​useradd -u 2000 nutzer_a 
 +  useradd -u 2001 nutzer_b 
 +  useradd -u 2002 nutzer_c 
 +  useradd -u 2003 nutzer_d 
 + 
 +=== Server B === 
 +  useradd -u 2000 nutzer_a 
 +  useradd -u 2003 nutzer_b 
 +  useradd -u 2001 nutzer_e 
 + 
 +  mkdir /​tmp/​backup 
 + 
 +=== Server A === 
 +  mkdir /​tmp/​workdir 
 + 
 +  touch /​tmp/​workdir/​file_{a,​b,​c,​d} 
 +  chown nutzer_a /​tmp/​workdir/​file_a 
 +  chown nutzer_b /​tmp/​workdir/​file_b 
 +  chown nutzer_c /​tmp/​workdir/​file_c 
 +  chown nutzer_d /​tmp/​workdir/​file_d 
 + 
 +  ​rsync -a /​tmp/​workdir/​file_* server_b:/​tmp/​backup
  
-====== Einstellung zum Erzeugen neuer Dateien ====== +=== Server B === 
-  ​umask 007     z.B. Für Gruppenarbeit +  ​ls -l /tmp/backup
-  umask 077     z.B. Für Singles, Einzelarbeiter+
  
-  /​etc/​profile ​ Systemweite Einstellen der umask+=== Server A ===
  
 +  mkdir /​tmp/​restore
 +  rsync -a server_b:/​tmp/​backup/​file_* /​tmp/​restore
 +  ls -l /​tmp/​restore
  
-  
  
-====== Links ====== 
-  * [[ http://​www.heise.de/​security/​news/​meldung/​69292 | Sind ACLs unter Windows "​besser"?​ ]] 
-  * [[ http://​www.matthiess.de/​freie-software/​linux/​posix-acl-erste-schritte | Erste Schritte mit posix-acls ]] 
-  * [[ http://​www.suse.de/​~agruen/​acl/​linux-acls/​online | Detailierte Beschreibung Linux ACLs ]] 
  
admin_grundlagen/dateirechte.txt · Zuletzt geändert: 2021/02/17 10:55 von ingo_wichmann