Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:dateirechte

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
admin_grundlagen:dateirechte [2016/11/11 23:05] – [Befehle Dateirechte] ingo_wichmannadmin_grundlagen:dateirechte [2021/02/17 10:55] (aktuell) – [Übung: Weniger Rechte für Eigentümer und Gruppe] ingo_wichmann
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 
 +  echo geheim > file1 
 +  chmod 000 file1 
 + 
 +Welche (minimalen) Berechtigungen müssen jeweils bei ''/tmp/dir1'', ''/tmp/dir2'' und ''file1'' hinzugefügt werden, damit ''file1'' mit 
 +  cp file1 /tmp/dir1/file2 
 +ins Verzeichnis ''/tmp/dir1'' kopiert werden kann? 
 + 
 +---- 
 + 
 +Welche (minimalen) Berechtigungen müssen jeweils bei ''/tmp/dir1'', ''/tmp/dir2'' und ''file2'' hinzugefügt werden, damit ''file2'' mit 
 +  mv /tmp/dir1/file2 /tmp/dir2/ 
 +ins Verzeichnis ''dir2'' verschoben werden kann? 
 + 
 + 
 +====== Übung: mit umask Berechtigung setzen ====== 
 + 
 +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   ls -l datei
-=== Verzeichnisrechte betrachten ===+| 
 +^ Dateizugriffsrechte von Dateien im Verzeichnis betrachten | 
 +  ls -l verzeichnis 
 +| 
 +^ Verzeichnisrechte betrachten (nicht der Einträge im Verzeichnis) |
   ls -ld verzeichnis   ls -ld verzeichnis
- +| 
-=== Besitzer der Datei ändern ===+^ Besitzer der Datei ändern |
   chown benutzer datei   chown benutzer datei
-=== Gruppe der Datei ändern ===+| 
 +^ Gruppe der Datei ändern |
   chown :users datei   chown :users datei
   chgrp users datei   chgrp users datei
- +| 
-=== SUID Recht der Datei ändern === +^ SUID Recht für die Datei ''/bin/cat'' setzen | Programm starten und real bzw. effective UID ansehen:
-  chmod u+s programm +
- +
-programm starten und real bzw. effective UID prüfen: +
-  ps -eo cmd,ruser,euser +
   chmod u+s /bin/cat   chmod u+s /bin/cat
 +Als Nutzer:
   cat &   cat &
-  ps -eo cmd,ruser,euser -C cat +  ps -C cat -o cmd,ruser,euser 
- +| 
-=== GUID Recht der Datei ändern === +^ Wo darf ich schreiben? | 
-  chmod g+s datei +  find / /dev -xdev -writable -ls 
- +| 
-=== Gruppen eines Benutzers anzeigen === +^ Was darf eine Gruppe? |
-  id benutzer +
- +
-=== 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   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 {} \; 
 +  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 80: Zeile 98:
 </file> </file>
  
-====== Beispiel: Weniger Rechte für Eigentümer und Gruppe ====== +====== Übung: Weniger Rechte für Eigentümer und Gruppe ====== 
-''/tmp/datei256'' : +Erzeuge ein Verzeichnis ''/srv/open'' mit großzügigen Berechtigungen: 
-<file>+  mkdir -m 777 /srv/open 
 +Erzeuge eine Datei ''/srv/open/datei356'' mit folgendem Inhalt: 
 +<file txt /srv/open/datei356>
 #!/bin/bash #!/bin/bash
 echo executable echo executable
 </file> </file>
-  chmod 256 /tmp/datei256 
  
 +Setze die Berechtigungen zu ''356'':
 +  chmod 356 /srv/open/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 /srv/open/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
 +  >> /srv/open/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.
 +
 +When set to "2" it also applies to group writable sticky directories.//
 +))
 +Das Ausführen (''x'') kann man testen, in dem man 
 +  /srv/open/datei356
 +ausführt.
 ====== Beispiel: Gruppenzugehörigkeiten kleben am Prozess länger als man denkt ====== ====== 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 104: Zeile 158:
   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 |
  
 +====== Beispiel: Ungewollter Eigentümerwechsel bei Backup und Restore ======
 +=== Server A ===
 +
 +  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.1478905545.txt.gz · Zuletzt geändert: 2016/11/11 23:05 von ingo_wichmann