guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

24/62: vm: Preserve file permissions on /dev.


From: guix-commits
Subject: 24/62: vm: Preserve file permissions on /dev.
Date: Sat, 11 Apr 2020 11:35:49 -0400 (EDT)

janneke pushed a commit to branch wip-hurd-vm
in repository guix.

commit 563a9a38ed452b13b0433360231b3879b6cac4a4
Author: Ludovic Courtès <address@hidden>
AuthorDate: Mon Apr 6 15:16:09 2020 +0200

    vm: Preserve file permissions on /dev.
    
    Previously, when REGISTER-CLOSURES? was false, we'd set all the files
    under /dev to #o644, including /dev/null, /dev/zero, etc.
    
    * gnu/build/vm.scm (root-partition-initializer): Call 'reset-timestamps'
    separately for /dev, with #:preserve-permissions? #t.
---
 gnu/build/vm.scm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index 63140f1..84bb259 100644
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -33,6 +33,7 @@
   #:use-module (guix records)
   #:use-module ((guix combinators) #:select (fold2))
   #:use-module (ice-9 format)
+  #:use-module (ice-9 ftw)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 popen)
@@ -419,7 +420,16 @@ system that is passed to 'populate-root-file-system'."
     ;; 'register-closure' resets timestamps and everything, so no need to do it
     ;; once more in that case.
     (unless register-closures?
-      (reset-timestamps target))))
+      ;; 'reset-timestamps' also resets file permissions; do that everywhere
+      ;; except on /dev so that /dev/null remains writable, etc.
+      (for-each (lambda (directory)
+                  (reset-timestamps (string-append target "/" directory)))
+                (scandir target
+                         (match-lambda
+                           ((or "." ".." "dev") #f)
+                           (_ #t))))
+      (reset-timestamps (string-append target "/dev")
+                        #:preserve-permissions? #t))))
 
 (define (register-bootcfg-root target bootcfg)
   "On file system TARGET, register BOOTCFG as a GC root."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]