Как я могу вернуть chmod в каталог etc?

9

Я случайно выполнил следующую команду в каталоге etc:

sudo chmod -R 700 /etc

Я знаю, что я сделал что-то очень неправильное. Мой терминал теперь печатает:

I have no name!@ubuntu: /$

Как я могу вернуть каталог etc в прежнее состояние?

Я пытался изменить разрешения, но сейчас это не удается. Кроме того, было бы очень полезно, если бы кто-то мог объяснить, что на самом деле пошло не так, когда я выполнял эту команду и т. Д. Это были только права доступа к файлу. Тогда почему вся система кажется полностью взорванной? Почему сейчас не работают пароли для входа? Я знаю, что в каталоге etc есть файл, связанный с пользователями. Но как изменение разрешений ставит под угрозу все? Некоторые технические детали по этому поводу были бы очень полезны.

Rafay
источник
3
Вам нужен каталог ( ls -laR) из другой работающей системы. Какая у тебя версия? Вы можете изменить каталоги на 755, а файлы - на 644, но некоторые из них должны иметь разные режимы (например, / etc / shadow, например).
ot--
4
Когда вы печатаете, sudoвы должны прочитать это в своей голове: «Я даю себе абсолютную власть над моей системой без защитной сетки, уверен ли я, что знаю, что делаю? Я уверен, что набрал то, что имел в виду?» перед нажатием возврата.
Msw
1
С работающей системой вы можете использовать find /etc -type d ! -perm 755 -exec ls -ld {} \;и find etc -type f ! -perm -644 -exec ls -l {} \;для поиска каталогов и файлов в нестандартных режимах. В Debian это всего 2 каталога и 39 файлов
ott--
«Но как изменение разрешений ставит под угрозу все?» - некоторые вещи, которые требовались для чтения этих файлов, теперь не имеют разрешения на чтение этих файлов.
user253751

Ответы:

15

Одна вещь пошла не так: использование sudoс этой командой. -RПереключатель указывает chmodрекурсивно установить права доступа к этому каталогу, который, во всяком случае, не-рекомендуемое действие (если мы называем это: ересь) , если вы не знаете , что вы делаете (раз это случилось со мной, я не выдал команду, но неисправный графический интерфейс сделал это, и моя система подключилась).

Это были только файловые права. Тогда почему вся система кажется полностью взорванной?

GNU / Linux очень чувствителен к разрешениям файлов, так как он создан с учетом стабильности и безопасности . То же самое относится и к большинству программ, работающих в GNU / Linux (т. apache2Е. Удаляет привилегии root и использует их www-dataили аналогичного пользователя, и ваше 700разрешение не позволяет ему читать / записывать собственные файлы).

Почему сейчас не работают пароли для входа?

Как вы уже упоминали, пароли для входа в систему хранятся в файле, /etc/passwdи только root (я полагаю, вы не изменили это) может прочитать его, но приглашение входа в систему (или вход в систему с графическим интерфейсом) использует учетную запись без прав доступа, следовательно, она не может читать файл.

Но как изменение разрешений ставит под угрозу все?

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

Как я могу вернуть каталог etc в прежнее состояние?

Если вы используете дистрибутив на основе RPM, это можно сделать с помощью rpm --setpermsкоманды, это будет болезненно возвращать один за другим пакеты, в Debian-подобной системе apt-get --reinstall installваш друг. Другие решения могут быть доступны, но для этого потребуется работающая система.

Braiam
источник
5

Давайте посмотрим, что вы сделали - установили права доступа для всего каталога / etc, так как чтение / запись / выполнение разрешено только для владельца файла / каталога, запрещенного для всех остальных. Если вас смущают права доступа к файлам, вы можете прочитать больше в Википедии: Традиционные разрешения UNIX .

Причина, по которой вы взорвали вашу систему, заключается в том, что многие процессы больше не могут читать свои настройки, не имея доступа к / etc. Будет нелегко восстановить весь каталог / etc до его предыдущего состояния. Как это сделать, зависит от вашего дистрибутива, но в основном это означает переустановку каждого пакета, содержащего любой файл в / etc.

В качестве быстрой помощи, чтобы иметь возможность использовать систему, чтобы правильно ее исправить (переустановить все пакеты с содержимым в / etc, как указано выше), вы можете сделать:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

С помощью этих двух строк вы будете устанавливать либеральные права доступа во всех каталогах / etc, с правом чтения / записи для владельца и группы, а для чтения - для всех остальных. Причиной двух chmod является установка бита выполнения только на dirs. Некоторые процессы будут выдавать жалобы или сбои, в том числе любой исполняемый файл в / etc, но вы сможете выполнить переустановку, описанную выше.

Имейте в виду, что до тех пор, пока вы не восстановите исходные разрешения, ваша система будет, по крайней мере, находиться в небезопасном состоянии.

Хавьер Марсет
источник
2
Кроме того, некоторые программы не будут работать; SSH, например, требует ограничительных разрешений для определенных файлов. /etc/sudoersДругой.
Мел Бойс,
1
Но некоторые файлы /etcне должны быть доступны для чтения! Восстановление из резервных копий, поэтому они у вас есть (или именно поэтому люди убеждают вас делать резервные копии).
tripleee
0

700 удалил доступ ко многим файлам для групп и мировых пользователей (например, файлы теперь имеют rwx------разрешения). Например, все пользователи должны иметь возможность читать /etc/passwd. С вашей настройкой теперь может читать только root /etc/passwd. Многие вещи сломаются, если вы нарушите права доступа к файлам /etc/непредсказуемым образом.

Вы можете попытаться восстановить права доступа (при условии, что вы все еще можете переключиться на root) на основе работающего сервера, но это может привести к ошибке.

Я предлагаю восстановить /etc/из резервной копии, если она у вас есть (убедитесь, что восстановление возвращает разрешения, или, если ваше решение для резервного копирования поддерживает это, восстановите только разрешения).

EightBitTony
источник