aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-05-23 16:52:17 +0200
committerLudovic Courtès <ludo@gnu.org>2015-05-24 00:26:12 +0200
commit4a35a866be51361b80a5618e422d135959960c3d (patch)
tree44edcd494a9749a1082d0af12254ec6fd5a50331
parent40245ef316d0a37721b2c79620e83e750368eef5 (diff)
downloadguix-4a35a866be51361b80a5618e422d135959960c3d.tar
guix-4a35a866be51361b80a5618e422d135959960c3d.tar.gz
guix system: init: Make sure the target is root-owned.
Suggested by Mark H Weaver <mhw@netris.org>. * guix/scripts/system.scm (install): Add 'chown' and 'chmod' calls for TARGET when running as root, and warn otherwise.
-rw-r--r--guix/scripts/system.scm10
1 files changed, 10 insertions, 0 deletions
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 8d5fbe5a78..1feb821389 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -145,6 +145,16 @@ When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG."
;; Copy items to the new store.
(copy-closure to-copy target #:log-port log-port)))))
+ ;; Make sure TARGET is root-owned when running as root, but still allow
+ ;; non-root uses (useful for testing.) See
+ ;; <http://lists.gnu.org/archive/html/guix-devel/2015-05/msg00452.html>.
+ (if (zero? (geteuid))
+ (chown target 0 0)
+ (warning (_ "not running as 'root', so \
+the ownership of '~a' may be incorrect!~%")
+ target))
+
+ (chmod target #o755)
(let ((os-dir (derivation->output-path os-drv))
(format (lift format %store-monad))
(populate (lift2 populate-root-file-system %store-monad)))