{"id":56,"date":"2006-09-28T17:08:18","date_gmt":"2006-09-28T22:08:18","guid":{"rendered":"http:\/\/mattwork.potsdam.edu\/blog\/?p=56"},"modified":"2013-05-14T20:09:38","modified_gmt":"2013-05-15T00:09:38","slug":"rofs-the-read-only-filesystem-for-fuse","status":"publish","type":"post","link":"http:\/\/www.matthewgkeller.com\/blog\/2006\/09\/28\/rofs-the-read-only-filesystem-for-fuse\/","title":{"rendered":"rofs &#8211; The Read-Only Filesystem for FUSE"},"content":{"rendered":"<p>I love being redundant. Long story short I needed a read-only file system that was:<\/p>\n<ol>\n<li>Lightweight<\/li>\n<li>Underlying filesystem agnositic<\/li>\n<li>Supported XATTR<\/li>\n<li>read XACLs\/made access() calls<\/li>\n<\/ol>\n<p>I didn&#8217;t find any I liked, and a remount of the filesystem using NFS wasn&#8217;t working as well as I liked (XACL problems). So <a href=\"https:\/\/github.com\/cognusion\/fuse-rofs\">I wrote rofs<\/a>, the read-only file system for <a href=\"http:\/\/fuse.sf.net\/\">Fuse<\/a>.<\/p>\n<p>It requires <a href=\"http:\/\/fuse.sf.net\/\">Fuse<\/a> API version 25, which shouldn&#8217;t be a problem on modern systems. Tested only on <a href=\"http:\/\/fuse.sf.net\/\">Fuse<\/a> v2.5.3.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I love being redundant. Long story short I needed a read-only file system that was: Lightweight Underlying filesystem agnositic Supported XATTR read XACLs\/made access() calls I didn&#8217;t find any I liked, and a remount of the filesystem using NFS wasn&#8217;t &hellip; <a href=\"http:\/\/www.matthewgkeller.com\/blog\/2006\/09\/28\/rofs-the-read-only-filesystem-for-fuse\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-56","post","type-post","status-publish","format-standard","hentry","category-linuxy"],"_links":{"self":[{"href":"http:\/\/www.matthewgkeller.com\/blog\/wp-json\/wp\/v2\/posts\/56","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.matthewgkeller.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.matthewgkeller.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.matthewgkeller.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.matthewgkeller.com\/blog\/wp-json\/wp\/v2\/comments?post=56"}],"version-history":[{"count":0,"href":"http:\/\/www.matthewgkeller.com\/blog\/wp-json\/wp\/v2\/posts\/56\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.matthewgkeller.com\/blog\/wp-json\/wp\/v2\/media?parent=56"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.matthewgkeller.com\/blog\/wp-json\/wp\/v2\/categories?post=56"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.matthewgkeller.com\/blog\/wp-json\/wp\/v2\/tags?post=56"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}