{"id":68,"date":"2006-05-17T10:51:52","date_gmt":"2006-05-17T08:51:52","guid":{"rendered":"http:\/\/my.stargazer.at\/?p=68"},"modified":"2007-06-19T15:42:35","modified_gmt":"2007-06-19T13:42:35","slug":"read-only-root","status":"publish","type":"post","link":"https:\/\/my.stargazer.at\/de\/2006\/05\/17\/read-only-root\/","title":{"rendered":"Read only root"},"content":{"rendered":"<p>Meiner Erfahrung nach muss das Filesystem, mit Ausnahmen von Logs und anderen Kleinigkeiten selten ver&auml;ndert werden. Aus diesem Grund sehe ich mir an, wie man \/ read only behandelt.<\/p>\n<p>Was sind Gr&uuml;nde um dies zu tun?<\/p>\n<ul>\n<li>LiveCDs<\/li>\n<li>Erh&ouml;hen der Systemsicherheit<\/li>\n<li>Schadensbegrenzung bei Crashes<\/li>\n<li>Root &uuml;ber NFS &#8218;verteilen&#8216;<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p>Es gibt sicher noch mehr Anwendungsbeispiele oder Ideen wo man es einsetzen kann. Um dies realisieren zu k&ouml;nnen m&uuml;ssen wir einen Devicemanager, in unserem Fall udev verwenden, da sonst kein nachtr&auml;gliches Hinzuf&uuml;gen und Mounten von Wechselmedien wie USB Sticks mehr m&ouml;glich ist.<\/p>\n<p>Es gilt zu beachten dass \/home, \/tmp und \/var Schreibzugriffe ben&ouml;tigen. Aus diesem Grund m&uuml;ssen sie, genauso wie unser Portage, sofern wir uns dazu entscheiden ihn zu verwenden, auf eigenen Partitionen liegen. So weit die Grundprobleme des Disklayouts. Widmen wir uns den unscheinbareren Dingen wie \/etc\/mtab welche uns den Nerv schlechthin kosteten:<\/p>\n<p>Die Datei \/etc\/mtab beschreibt die aktuell gemounteten Dateisysteme, wobei sie bei jedem mounten bzw unmounten eines Dateisystems neu geschrieben wird. Die einfachste Methode besteht darin, die Datei durch einen Symlink nach \/proc\/mounts zu ersetzen. Die Informationen in der Datei sind zwar nicht so genau wie in der originalen mtab Datei, aber da mount selbst nicht direkt mit Symlinks zurechtkommt die einzige Methode um es ohne grobe Patches zu erledigen. Jeglich ein paar &Auml;nderungen in \/etc\/init.d\/localmount sind wie folgt n&ouml;tig:<\/p>\n<blockquote>\n<p>&#8211; mount -at nocoda,nonfs,noproc,noncpfs,nosmbfs,noshm &gt;\/dev\/null<br \/>\n+ mount -nat nocoda,nonfs,noproc,noncpfs,nosmbfs,noshm &gt;\/dev\/null<\/p>\n<p>&#8211; mount -t ${usbfs} none \/proc\/bus\/usb &amp;&gt;\/dev\/null<br \/>\n+ mount -nt ${usbfs} none \/proc\/bus\/usb &amp;&gt;\/dev\/null<\/p>\n<\/blockquote>\n<p>Der letzte Streich ist die \/etc\/fstab, welche nun \/ nicht mehr read-write sondern read-only mounten muss:<\/p>\n<blockquote>\n<p>&#8211; \/dev\/hda1 \/ ext2 noatime  0 1<br \/>\n+ \/dev\/hda1 \/ ext2 noatime,ro  0 1<\/p>\n<\/blockquote>\n<p>Das sollte es gewesen sein. Um nun Konfigurationen upzudaten empfiehlt es sich, die entsprechenden Partitionen wieder mit Schreibzugriff zu mounten.<\/p>\n<p><strong>[Update:]<\/strong> Im <a href=\"http:\/\/my.stargazer.at\/2006\/05\/12\/mit-gentoo-im-geschwindigkeitsrausch\/\">vorhergehenden Eintrag betreffend Laden des Systems in den RAM<\/a> habe ich die Verwendung von Ramdrives beschrieben &#8211; analog dazu k\u00f6nnte man die Verzeichnisse die Schreibzugriff ben\u00f6tigen behandeln. Die Grundidee dahinter ist, die Tarballs dann beim Herunterfahren zu exportieren um keine Daten zu verlieren&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Meiner Erfahrung nach muss das Filesystem, mit Ausnahmen von Logs und anderen Kleinigkeiten selten ver&auml;ndert werden. Aus diesem Grund sehe ich mir an, wie man \/ read only behandelt. Was sind Gr&uuml;nde um dies zu tun? LiveCDs Erh&ouml;hen der Systemsicherheit Schadensbegrenzung bei Crashes Root &uuml;ber NFS &#8218;verteilen&#8216;<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[170],"class_list":["post-68","post","type-post","status-publish","format-standard","hentry","category-it-related-stuff","tag-security"],"_links":{"self":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/68","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/comments?post=68"}],"version-history":[{"count":0,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/68\/revisions"}],"wp:attachment":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media?parent=68"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/categories?post=68"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/tags?post=68"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}