If I run:
sudo chown -R user:user /
Can I revert it to what it was before I ran it?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
Only if you know the user and group ownership of every file and directory under your
Even then, you've already clobbered the ownership of critical system files that need to be owned by root, including the
sudo command. You'd probably need to mount the hard drive on another system -- and be aware that the other system likely won't have the same UID and GID mappings as the one you just clobbered.
Make a copy of the entire hard drive if you can, then reinstall your operating system. Once you've done that, you can try copying files back to the newly wiped system and restoring their ownerships. You can probably assume (though not 100% reliably) that everything under
/home/foo is owned by user
foo, and that each mail spool file under
/var/mail is owned by the appropriate user (if you have e-mail on the system). You can likely get away without restoring most files that aren't under
/home, depending on what you've done with the system.
And then start cultivating a habit of double-checking any command you run under
sudo before you hit Enter.
If your distro is RPM based, you can restore ONLY files that installed by rpm packages.
To restore all package permissions:
rpm --setperms -a
To restore all package owner (user/group):
rpm --setugids -a
If -a doesn't run, you can execute a bash loop:
for x in $(rpm -qa); do rpm --setperms $x; done
for x in $(rpm -qa); do rpm --setugids $x; done
You can store the current versions and then parse that out to revert by using the -v option.
chown -R nobody:nobody -v /tmp/some_file > /tmp/chown.log cat /tmp/chown.log
The contents would be:
changed ownership of `/tmp/some_file' from me:users to nobody:nobody
Using your favorite scripting language and regular expressions, you can execute the painful process of reverting them (if you must).
I'd strongly recommend not doing a recursive chown on / as you'll expose /etc/shadow or any other important file.
While developing a Laravel Project on Kali Linux, NPM needed accelerated privileges to install a package. It was a /usr/lib permission issue. A few google tabs later, I ran
chown -R $USER /usr/lib . Permissions changed and the sudo command could no longer work. How I fixed it? Downloaded a live system image from kali.org burnt on a thumbdrive/flash, booted my livesystem, updated it, and mounted the drive with broken privileges. Escalated the live system to root and changed the permissions thus:
root@kali:/kali:<partitions-alphanumeric-name># chown -R root /usr/lib
I shutdown the live system, and booted into the installed system. sudo worked. I avoided the popularly recommended reinstall.