Since some of the files in /etc
might not be owned by root
, if you want to avoid reinstalling, you can do the following:
Boot into a live system and mount the partition containing the /etc
directory. For example, if your /
partition is /dev/sda1
, you would do this from the live system:
sudo mount /dev/sda1 /mnt
Set the ownership of all files to root
:
sudo chown -R root /mnt/etc
At this point all files belong to root. This is probably what you need but some files in /etc/
might have different ownership. If those files are also not owned by root in the live system, you can use them as a reference to change the permissions on the installed system:
shopt -s globstar
liveSystem="/etc"
cd /mnt/etc
for file in **/*; do
[ -e "$liveSystem/$file" ] &&
echo sudo chown --reference "$liveSystem/$file" "$file"
done
If you have also changed the permissions, do this instead:
shopt -s globstar
liveSystem="/etc"
cd /mnt/etc
for file in **/*; do
[ -e "$liveSystem/$file" ] &&
echo sudo chown --reference "$liveSystem/$file" "$file" &&
echo sudo chmod --reference "$liveSystem/$file" "$file"
done
That will just print what command would be run. Once you've seen what that does and are satisfied that it is correct, remove the echo
to make it actually run the commands.
Now that will iterate over all files, including those whose ownership is root
in both directories, but that doesn't matter. You could write a more sophisticated approach but it's not worth it since this will take seconds.
Reboot your machine: everything should be back to normal.
IMPORTANT: this will not help if you have installed something that isn't on the live system and whose files in /etc
don't belong to root
. If this is the case, you'll either need to find what you installed and reinstall it or you might need to reinstall the system.
sudo chown -R root:root /etc
. It works... now you know you shouldn't play like this withroot
own files! :) – edwin May 27 '13 at 13:20/etc/sudoers.d
is world writable after re-chowning everything back to root you must have done something else, likechmod 666
. That is an entirely different kettle of fish. – l0b0 Feb 20 '17 at 18:34/etc
only which is arguably less complex than/
. Additionally this question has an answer using--reference
which the duplicate has no answers for. – WinEunuuchs2Unix Jun 28 '20 at 22:07