efi: Make efivarfs entries immutable by default

"rm -rf" is bricking some peoples' laptops because of variables being
used to store non-reinitializable firmware driver data that's required
to POST the hardware.

These are 100% bugs, and they need to be fixed, but in the mean time it
shouldn't be easy to *accidentally* brick machines.

We have to have delete working, and picking which variables do and don't
work for deletion is quite intractable, so instead make everything
immutable by default (except for a whitelist), and make tools that
aren't quite so broad-spectrum unset the immutable flag.

Signed-off-by: Peter Jones <pjones@redhat.com>
Tested-by: Lee, Chun-Yi <jlee@suse.com>
Acked-by: Matthew Garrett <mjg59@coreos.com>
Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
This commit is contained in:
Peter Jones
2016-02-08 14:48:15 -05:00
committed by Matt Fleming
parent 8282f5d9c1
commit ed8b0de5a3
9 changed files with 258 additions and 41 deletions

View File

@@ -88,7 +88,11 @@ test_delete()
exit 1
fi
rm $file
rm $file 2>/dev/null
if [ $? -ne 0 ]; then
chattr -i $file
rm $file
fi
if [ -e $file ]; then
echo "$file couldn't be deleted" >&2
@@ -111,6 +115,7 @@ test_zero_size_delete()
exit 1
fi
chattr -i $file
printf "$attrs" > $file
if [ -e $file ]; then
@@ -141,7 +146,11 @@ test_valid_filenames()
echo "$file could not be created" >&2
ret=1
else
rm $file
rm $file 2>/dev/null
if [ $? -ne 0 ]; then
chattr -i $file
rm $file
fi
fi
done
@@ -174,7 +183,11 @@ test_invalid_filenames()
if [ -e $file ]; then
echo "Creating $file should have failed" >&2
rm $file
rm $file 2>/dev/null
if [ $? -ne 0 ]; then
chattr -i $file
rm $file
fi
ret=1
fi
done