Не могу больше использовать sudo. Изменил права доступа к папке usr с помощью sudo на другую группу. Как это исправить?

Вопрос или проблема

Команда, из-за которой я попал в эту передрягу.

sudo chown -R :developers /usr/

sudo: /usr/bin/sudo должен принадлежать пользователю с uid 0 и иметь установленный бит setuid

У меня есть uid 0, но бит setuid не установлен. что делать?

Запустив вашу команду, вы испортили разрешения для всего каталога /usr (я всегда удивляюсь, почему люди выполняют такие команды, которые явно уничтожат систему, например, изменение разрешений в основных системных каталогах). Проблема не только с sudo – если бы это было так, вы могли бы легко исправить разрешения, загрузившись с носителя с живой установкой и установив надлежащее владение и разрешения для sudo. Но в вашем случае вам пришлось бы устанавливать их для каждого файла и подкаталога в /usr, и для этого вы должны знать, какими должны быть правильные значения.

Если у вас есть доступ к другой, работающей системе Ubuntu, вы могли бы попробовать проверить правильные разрешения там и установить их на вашей системе – но вы должны осознавать, что это довольно утомительная работа (если только вы не автоматизируете ее каким-то образом).

В противном случае вам придется переустановить систему, как указано в комментарии. Возможно, вы могли бы попробовать «ненавязчивую» переустановку, то есть установить систему снова на раздел, на который она уже установлена, без его удаления. Но я не пробовал этот режим установки, так что не могу дать никаких дальнейших советов.

Обновление: я подготовил список файлов и каталогов в /usr на моей системе (это Ubuntu 20.04 с несколькими установленными дополнительными пакетами, так что он может отличаться от вашего, я не знаю, какую версию вы имеете) с либо разрешениями, отличающимися от rwxr-xr-x или rw-r--r-- или владельцем или группой, отличающимися от root. Возможно, это поможет вам.

-rwsr-sr-x   1 daemon    daemon        55560 Nov 12  2018 /usr/bin/at
-rwxr-sr-x   1 root      tty           14488 Mar 30  2020 /usr/bin/bsd-write
-rwxr-sr-x   1 root      shadow        84512 Feb  6  2024 /usr/bin/chage
-rwsr-xr-x   1 root      root          85064 Feb  6  2024 /usr/bin/chfn
-rwsr-xr-x   1 root      root          53040 Feb  6  2024 /usr/bin/chsh
-rwxr-sr-x   1 root      crontab       43720 Feb 13  2020 /usr/bin/crontab
-rwxr-sr-x   1 root      shadow        31312 Feb  6  2024 /usr/bin/expiry
-rwsr-xr-x   1 root      root          39144 Mar  7  2020 /usr/bin/fusermount
-rwsr-xr-x   1 root      root          88464 Feb  6  2024 /usr/bin/gpasswd
-rwsr-xr-x   1 root      root          55528 Apr  9  2024 /usr/bin/mount
-rwsr-xr-x   1 root      root          44784 Feb  6  2024 /usr/bin/newgrp
-rwsr-xr-x   1 root      root          68208 Feb  6  2024 /usr/bin/passwd
-rwsr-xr-x   1 root      root          31032 Feb 21  2022 /usr/bin/pkexec
-rwxr-sr-x   1 root      ssh          350504 Feb 11 15:09 /usr/bin/ssh-agent
-rwsr-xr-x   1 root      root          67816 Apr  9  2024 /usr/bin/su
-rwsr-xr-x   1 root      root         166056 Apr  4  2023 /usr/bin/sudo
-rwsr-xr-x   1 root      root          39144 Apr  9  2024 /usr/bin/umount
-rwxr--r--   3 root      root          26928 Sep 26 14:44 /usr/lib/cups/backend-available/dnssd
-rwxr--r--   2 root      root          51592 Sep 26 14:44 /usr/lib/cups/backend-available/lpd
-rwxr--r--   2 root      root          39216 Sep 26 14:44 /usr/lib/cups/backend-available/usb
-rwx------   1 root      root          14648 Oct  8 13:51 /usr/lib/cups/backend/cups-brf
-rwxr--r--   3 root      root          26928 Sep 26 14:44 /usr/lib/cups/backend/dnssd
-rwx------   1 root      root          22848 Oct  8 13:51 /usr/lib/cups/backend/implicitclass
-rwxr--r--   2 root      root          51592 Sep 26 14:44 /usr/lib/cups/backend/lpd
-rwxr--r--   3 root      root          26928 Sep 26 14:44 /usr/lib/cups/backend/mdns
-rwxr--r--   1 root      root          18744 Oct  8 13:51 /usr/lib/cups/backend/serial
-rwxr--r--   2 root      root          39216 Sep 26 14:44 /usr/lib/cups/backend/usb
-rwsr-xr--   1 root      messagebus    51344 Oct 25  2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
-rwsr-xr-x   1 root      root          14488 Jul  8  2019 /usr/lib/eject/dmcrypt-get-device
-rwxr-sr-x   1 root      mail          22856 Apr  7  2021 /usr/libexec/camel-lock-helper-1.2
-r--r--r--   1 root      root       11911168 Feb  5 09:24 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa
-rwxr-sr-x   1 root      tty           14640 Nov 30  2021 /usr/lib/mc/cons.saver
-rwsr-xr-x   1 root      root         477672 Feb 11 15:09 /usr/lib/openssh/ssh-keysign
-rwsr-xr-x   1 root      root          22840 Feb 21  2022 /usr/lib/policykit-1/polkit-agent-helper-1
-rwsr-xr-x   1 root      root         159304 Oct 11 10:05 /usr/lib/snapd/snap-confine
-r--r--r--   1 root      root       10470739 Sep 20 16:07 /usr/lib/udev/hwdb.bin
-rwSr--r--   1 root      root          26616 Mar  3  2018 /usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/lib/x86_64-linux-gnu/rhythmbox/plugins/artsearch/__pycache__
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/lib/x86_64-linux-gnu/rhythmbox/plugins/im-status/__pycache__
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/lib/x86_64-linux-gnu/rhythmbox/plugins/listenbrainz/__pycache__
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/lib/x86_64-linux-gnu/rhythmbox/plugins/lyrics/__pycache__
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/lib/x86_64-linux-gnu/rhythmbox/plugins/magnatune/__pycache__
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/lib/x86_64-linux-gnu/rhythmbox/plugins/python-console/__pycache__
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/lib/x86_64-linux-gnu/rhythmbox/plugins/rb/__pycache__
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/lib/x86_64-linux-gnu/rhythmbox/plugins/replaygain/__pycache__
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/lib/x86_64-linux-gnu/rhythmbox/plugins/soundcloud/__pycache__
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/lib/x86_64-linux-gnu/rhythmbox/plugins/webremote/__pycache__
-rwsr-sr-x   1 root      root          14488 Feb 19 14:54 /usr/lib/xorg/Xorg.wrap
drwxrwsr-x   4 root      staff          4096 Jan 16 17:31 /usr/local/lib/python2.7
drwxrwsr-x   2 root      staff          4096 Jun  2  2020 /usr/local/lib/python2.7/dist-packages
drwxrwsr-x   2 root      staff          4096 Jan 16 17:31 /usr/local/lib/python2.7/site-packages
drwxrwsr-x   3 root      staff          4096 Apr 23  2020 /usr/local/lib/python3.8
drwxrwsr-x   2 root      staff          4096 Apr 23  2020 /usr/local/lib/python3.8/dist-packages
drwxrwsr-x   2 root      staff          4096 Apr 23  2020 /usr/local/lib/python3.8/dist-packages
drwxrwsr-x   2 root      staff          4096 Apr 23  2020 /usr/local/share/fonts
-rw-r--r--   1 root      staff            36 Apr 23  2020 /usr/local/share/fonts/.uuid
-rwsr-xr-x   1 root      root          48200 Jun  1  2022 /usr/sbin/mount.cifs
-rwxr-sr-x   1 root      shadow        43168 Jan 10  2024 /usr/sbin/pam_extrausers_chkpwd
-rwsr-xr--   1 root      dip          395144 Jul 23  2020 /usr/sbin/pppd
-rwxr-sr-x   1 root      shadow        43160 Jan 10  2024 /usr/sbin/unix_chkpwd
drwxrwxr-x   2 root      root           4096 Apr 22  2023 /usr/share/doc/zoom
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/share/ibus-table/engine/__pycache__
drwxrwxr-x   2 root      root           4096 May 28  2020 /usr/share/ibus-table/setup/__pycache__
drwxrwxr-x   3 root      root           4096 May 28  2020 /usr/share/locale-langpack/pl
drwxrwsr-t   2 root      lpadmin        4096 Feb 24  2020 /usr/share/ppd/custom

Ответ или решение

Нажмите, чтобы увидеть решение

### Теория

Изменение разрешений и владельца системных каталогов может привести к нестабильности и отказу системы. Команда `sudo chown -R :developers /usr/` изменила группу владельца на всю деревню `/usr`, что нарушило права доступа к важным двоичным файлам, включая саму утилиту `sudo`. В Linux `sudo` — это утилита, которая должна иметь определенные разрешения и принадлежность, чтобы нормально выполнять свои функции. При неправильной конфигурации этих разрешений пользователи могут потерять возможность выполнять команды с административными правами.

Для работы `sudo` необходимо, чтобы:
1. Файл `/usr/bin/sudo` принадлежал пользователю root, который имеет идентификатор пользователя (UID) 0.
2. Бит setuid был установлен, чтобы пользователи могли выполнять `sudo` с привилегиями root.

### Пример

Если кто-то использует команду, аналогичную `sudo chown -R :developers /usr/` и изменяет группу для всего содержимого `/usr`, это приведет к тому, что множество критически важных файлов и утилит потеряют свои необходимые системные разрешения и владельцев. Это может сделать целые участки системы непригодными для использования без возможности выполнения команд с привилегиями администратора — например, `sudo`.

### Применение

Теперь о том, как можно попытаться исправить ситуацию:

1. **Используйте загрузочный носитель**:
– Загрузите систему с внешнего загрузочного носителя, такого как USB или DVD, с дистрибутивом Linux. Это позволит вам получить доступ к файловой системе без использования установленных на вашем диске утилит, которые могут быть повреждены.

2. **Исправление разрешений и владельцев**:
– После загрузки с внешнего носителя, откройте терминал и выполните следующее:
– Смонтируйте основной файловый раздел: `sudo mount /dev/sdXn /mnt`, где `/dev/sdXn` — это ваш основной раздел.
– Проверьте, что все изменения в `/usr` действительно присутствуют и попробуйте восстановить права на sudo:
“`bash
sudo chown root:root /mnt/usr/bin/sudo
sudo chmod 4755 /mnt/usr/bin/sudo
“`
– Это восстановит права доступа и владельца для `sudo`.

3. **Сканирование и установка прав для других файлов**:
– Вы можете использовать другой работающий экземпляр Ubuntu для получения списка всех исходных разрешений и владельцев файлов, аналогично предоставленному примеру.
– Составьте скрипт, который может автоматически устанавливать нужные права на основе списка, похожего на предоставленный выше.

4. **Переустановка пакетов**:
– Если доступен интернет, можно попробовать переустановить поврежденные пакеты через `dpkg` или `apt` после временного восстановления sudo.
– Например: `sudo apt-get install –reinstall `

5. **Рассмотрение полной переустановки системы**:
– Если восстановить систему вручную не удается, может оказаться более простым и менее времязатратным перешагнуть к переустановке операционной системы, выбирая “Не форматировать” для сохранения личных данных.

В завершение, всегда стоит помнить о важности регулярного резервного копирования и использования виртуальных сред для тестирования изменений системных конфигураций, прежде чем осуществлять их в рабочей среде.

Оцените материал
Добавить комментарий

Капча загружается...