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
admin_grundlagen:dateirechte [2011/06/21 09:54]
ingo_wichmann
admin_grundlagen:dateirechte [2021/02/17 10:55]
ingo_wichmann [Übung: Weniger Rechte für Eigentümer und Gruppe]
Zeile 1: Zeile 1:
-====== ​Wichtige Befehle ​======+====== ​Übung: finde die minimal nötigen Berechtigungen ​======
  
-Benutzer anlegen: +  mkdir -m 000 /tmp/dir1 /tmp/dir2 
-  useradd ​-m benutzer +  echo geheim > file1 
-Benutzer löschen: +  ​chmod 000 file1
-  ​userdel benutzer+
  
-Dateizugriffsrechte betrachten:+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
-Rechte der Datei ändern+  chgrp users datei 
-  chmod g+s datei +
- +^ SUID Recht für die Datei ''/​bin/​cat''​ setzen | Programm starten und real bzw. effective UID ansehen
-Gruppen eines Benutzers anzeigen+  chmod u+s /bin/cat 
-  ​id benutzer +Als Nutzer
- +  ​cat & 
-Was darf eine Gruppe?+  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 70: 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 ein Verzeichnis ''/​srv/​open''​ mit großzügigen Berechtigungen:​ 
 +  mkdir -m 777 /srv/open 
 +Erzeuge eine Datei ''/​srv/​open/​datei356''​ mit folgendem Inhalt: 
 +<file txt /​srv/​open/​datei356>​ 
 +#​!/​bin/​bash 
 +echo executable 
 +</​file>​ 
 + 
 +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.
  
-====== 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  
 +  /​srv/​open/​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 89: 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 |
Zeile 107: Zeile 186:
 |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 
 + 
 +=== Server B === 
 +  ​ls -l /tmp/backup
  
-====== ​Einstellung zum Erzeugen neuer Dateien ====== +=== Server A ===
-  umask 007     z.B. Für Gruppenarbeit +
-  umask 077     z.B. Für Singles, Einzelarbeiter+
  
-  /etc/profile ​ Systemweite Einstellen der umask+  ​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