Якщо ви випадково вистрілили собі в ногу командою на кшталт chown -R $USER / — дихайте рівно. Це класична помилка з розряду «помилки Linux», але її реально виправити. У цій інструкції покажу покроково, як у термінал Linux повернути коректних власників файлів, відновити критичні дозволи та знову завантажити систему.
Що сталося і чого не робити
- chown -R без обмежень міг поміняти власника майже всіх файлів. Сервіси й sudo зламуються, пакети й бінарники можуть не стартувати.
- Не запускайте випадкові «універсальні» скрипти з інтернету, що роблять
chmod 777 -R /— це погіршує ситуацію. - Згадуйте: під яким користувачем ви працюєте? Це стане в пригоді для відновлення користувачі та групи Linux у /home.
- Якщо система ще працює — зробіть нотатки/фото помилок. Якщо не працює — скористайтеся Live USB.
Покрокове відновлення системи
1) Отримайте root-доступ (Recovery/Live USB + chroot)
Якщо sudo зламаний або система не вантажиться, зайдіть у режим відновлення або з Live USB і змонтуйте ваш root-розділ у chroot. Далі всі кроки робіть там.
# Подивитися розділи
lsblk
# Припустимо, root на /dev/sdXn
sudo mount /dev/sdXn /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
# Якщо є окремий /boot або /boot/efi — змонтуйте їх теж
# sudo mount /dev/sdXb /mnt/boot
# sudo mount /dev/sdXc /mnt/boot/efi
sudo chroot /mnt /bin/bash
export PATH=/usr/sbin:/usr/bin:/sbin:/bin
2) Відновіть базові власники для критичних директорій
Поверніть root:root там, де це обов’язково. Обережно з /var — багато підкаталогів мають сервісні власники, ми їх поправимо окремо пакетним способом.
# Корінь і базові системні каталоги
chown root:root /
chown -R root:root /bin /sbin /lib /lib64 /usr /opt /boot /etc
# Деякі «верхні» каталоги всередині /var повинні бути root:root
# (глибоко рекурсивно /var поки НЕ чіпаємо)
chown root:root /var /var/tmp /var/log /var/lib /var/run 2>/dev/null || true
# Спеціальні тимчасові каталоги мають бути sticky (1777)
chown root:root /tmp /var/tmp
chmod 1777 /tmp /var/tmp
# Домашні каталоги — повертаємо власників користувачам
for u in /home/*; do
[ -d "$u" ] || continue
user="$(basename "$u")"
if id "$user" &>/dev/null; then
chown -R "$user":"$user" "$u"
fi
done
# Каталог root має належати root і бути закритим
chown -R root:root /root
chmod 700 /root
3) Відновіть власників і права за даними дистрибутива
Тепер — магія пакетного менеджера. Він знає «як треба» для файлів із пакунків.
- Debian/Ubuntu/Linux Mint: перевстановіть усі інстальовані пакети, щоб відновити власників/права.
apt-get update
apt-get --reinstall install -y $(dpkg-query -W -f='${binary:Package}\n')
- Fedora/RHEL/CentOS/Alma/Rocky: rpm уміє одразу відкотити власників і права.
rpm --setugids -a # відновити власників/групи
rpm --setperms -a # відновити права
# додатково можна перевстановити базові пакети
dnf reinstall -y \*
- Arch/Manjaro: перевстановіть нативні пакети та перевірте цілісність.
pacman -Qnq > /tmp/pkgs
pacman -S --noconfirm $(cat /tmp/pkgs)
# Перевірка цілісності (Qkk покаже невідповідності прав/власників)
pacman -Qkk | grep -E "(MISSING|WARNING|Permissions)" || true
Якщо SELinux увімкнений (Fedora/RHEL), відновіть контексти:
restorecon -RFv /etc /usr /bin /sbin /lib /lib64 /var
4) Перегенерація initramfs і завантажувача
Після масових змін корисно оновити initramfs та конфіг завантажувача.
- Debian/Ubuntu:
update-initramfs -u -k all && update-grub - Fedora/RHEL:
dracut -fтаgrub2-mkconfig -o /boot/grub2/grub.cfg(або для UEFI:/boot/efi/EFI/<distro>/grub.cfg) - Arch:
mkinitcpio -Pіgrub-mkconfig -o /boot/grub/grub.cfg
# Debian/Ubuntu приклад
update-initramfs -u -k all
update-grub
Альтернативні способи
- Відновлення з бекапу: якщо ви робили snapshot-и (Timeshift, btrfs, LVM) або мали rsync-бекап — найшвидший і найчистіший спосіб.
- Точкова ручна правка: для невеликої шкоди можна порівнювати з еталонною системою або документацією пакета і повертати власників окремим каталогам.
- Відновлення sudoers: якщо проблема лише з sudo — виправте права/власника і перевірте синтаксис.
chown root:root /etc/sudoers /etc/sudoers.d
chmod 440 /etc/sudoers
chmod 750 /etc/sudoers.d
visudo -c
GUI-спосіб (обережно)
У файловому менеджері (Nautilus/Dolphin) можна відкрити Властивості → Дозволи й змінити власника/групу, відзначивши «Застосувати до вкладених». Але цей метод варто використовувати лише для вашого /home/<user>. Для системних каталогів краще термінал Linux і перевстановлення пакетів. ⚠️
FAQ
Чому після chown -R нічого не запускається?
Бінарники, служби й сокети очікують конкретних власників/прав. Після масової зміни «права доступу Linux» стають некоректними, і запуск блокується.
Система не вантажиться. Що робити?
Завантажтеся з Live USB, змонтуйте файлову систему в chroot (див. вище), відновіть ключові каталоги, далі — пакетний ремонт і оновлення initramfs/GRUB.
sudo не працює: «user is not in the sudoers file» або помилки прав
Виправте власника й права файлів sudoers (див. альтернативні способи), потім перевірте командою visudo -c.
У чому різниця між chmod і chown?
chown змінює власника/групу (користувачі та групи Linux), а chmod — самі дозволи. Плутанина між ними — типова причина «помилки Linux» у безпеці.
Навіщо ставити 1777 для /tmp і /var/tmp?
Це «sticky bit»: будь-хто може створювати файли, але видаляти у /tmp — лише власник або root. Без нього програми поводяться нестабільно.
SELinux лається після відновлення
Відкотіть контексти командою restorecon -RFv /... для ключових шляхів. Це не змінює власників/права, лише мітки SELinux.
Порада від Kernelka 🧠
- Замість «всліпу»
chown -Rвикористовуйте обмеження:--fromі--preserve-root.
# Лише якщо файл зараз належить olduser:oldgroup
chown -R --from=olduser:oldgroup newuser:newgroup /path
# Уникайте операцій над коренем
chown -R --preserve-root "$USER":"$USER" /some/safe/path
# Спершу «сухий прогін» списку цілей
find /some/safe/path -type f -print | head -n 20
І завжди майте бекап. Маленький snapshot економить великі нерви 😉
Підсумок 🔧
- Зайдіть у chroot через Live USB і поверніть базові власники для критичних шляхів.
- Відновіть /tmp і /var/tmp до 1777, а /home — до власників користувачів.
- Далі використайте менеджер пакетів (apt/dnf/pacman/rpm), щоб масово відкотити власників і права до значень пакунків.
- Перегенеруйте initramfs і конфіг завантажувача, перевірте sudoers.
- На майбутнє: використовуйте
--from,--preserve-rootі бекапи, аби схожі «помилки Linux» не ламали систему.

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.