Это Канонический вопрос о разрешении файлов и Зачем 777 - «разрушительный».
Я не спрашиваю, как решить эту проблему, так как есть масса упоминаний об этом уже в Server Fault (переустановите ОС). Почему он вообще делает что-то разрушительное?
Если вы когда-либо запускали эту команду, вы почти сразу же уничтожаете свою операционную систему. Я не понимаю, почему снятие ограничений влияет на существующие процессы. Например, если у меня нет доступа для чтения к чему-либо, и после быстрой ошибки в терминале у меня теперь есть доступ ... почему это приводит к поломке Linux?
Прежде всего, небольшая придирка к терминологии: chmod
не удалять разрешения. Это ИЗМЕНЕНИЯ их.
Теперь суть вопроса - режим. 777
означает «Кто угодно может читать, писать или выполнять этот файл» - у вас есть дано разрешение чтобы любой мог (эффективно) делать все, что им захочется.
Итак, почему это плохо?
login
программа, которая пускает их каждый раз).rm -r /
и все кончено. ОС сказали позволить им делать все, что они хотят!sudo
, sendmail
, а множество других просто больше не запускается. Они проверят права доступа к ключевым файлам, увидят, что они не такие, какими должны быть, и вернут сообщение об ошибке.ssh
ужасно сломается (ключевые файлы должны иметь определенные разрешения, иначе они «небезопасны» и по умолчанию SSH откажется их использовать).777
на самом деле 0
777
. Среди вещей в этой первой цифре есть setuid
и setgid
биты./tmp
и /var/tmp
Другая вещь в этой первой восьмеричной цифре, которая получила ноль, - это sticky bit
- То, что защищает файлы в /tmp
(и /var/tmp
) от удаления людьми, которым они не принадлежат.rm -r /tmp/*
, и без установленного липкого бита /tmp
Вы можете попрощаться со всеми файлами в этом каталоге./dev
/proc
и подобные файловые системы/dev
это настоящая файловая система, и все, что в ней содержится, представляет собой специальные файлы, созданные с помощью mknod
, поскольку изменение разрешений будет сохраняться при перезагрузках, но в любой системе, в которой изменение разрешений вашего устройства может вызвать серьезные проблемы, от очевидных рисков безопасности (каждый может читать каждый TTY) до менее очевидных потенциальных причин паники ядра.Credit to @Tonny for pointing out this possibility
Credit to @Tonny for pointing out this possibility
.
в их PATH
переменная окружения (не следует!) - Это может вызвать неприятный сюрприз, поскольку теперь любой может удалить файл с удобным названием как команда (скажем, make
или ls
, и попытаться заставить вас запустить их вредоносный код.Credit to @RichHomolka for pointing out this possibility
chmod
сбросит списки контроля доступа (ACL)Credit to @JamesYoungman for pointing out this possibility
Будут ли работать уже работающие части системы? Наверное, хотя бы на время.
Но в следующий раз, когда вам нужно будет запустить программу, или перезапустить службу, или не дай бог ПЕРЕЗАГРУЗИТЬ коробку, в которой вы попадете в мир боли, поскольку №2 и №3 выше поднимут свои уродливые головы.
Важным моментом является то, что существует множество инструментов, таких как ssh / sudo, которые проверяют разрешения файловой системы для ключевых файлов конфигурации. Если разрешения неверны, эти инструменты не работают, поскольку это указывает на серьезную проблему безопасности. В моей тестовой системе Debian и, возможно, в других, возможность входа в систему не выполняется, вероятно, потому, что двоичный файл входа в систему или что-то в PAM имеет проверки разрешений.
Таким образом, на самом деле система не разрушена - это то, что многие инструменты предназначены для немедленного выхода из строя при неправильных разрешениях.
Если вы перезагрузите систему после выполнения chmod 777 -R /
он загрузится, и вы сможете запускать процессы, для которых нет явных проверок разрешений. Так что система на самом деле не мертва, а просто непригодна для использования по дизайну.