Найти тему
Поясни за DevOps

"chmod -R 777 /" или от том, как делать не нужно

Права доступа в операционной системе Linux — то, с чем рано или поздно сталкивается любой админ/пользователь. В предыдущих роликах мы уже разбирали как работает команда chmod и какие бывают права доступа (777 - разрешено "все и всем"). Тем не менее, используя данный инструмент нужно четко осознавать последствия применения команды в том или ином случае.

Что делает команда из заголовка статьи?

/ — корневой каталог системы.

-R — ключ, который указывает, что права 777 нужно установить всем элементам внутри каталога.

Т. е. после выполнения данной команды абсолютно ВСЕ файлы получают права 777. Давайте теперь разберем последствия.

Во-первых, нужно вспомнить, что существуют дополнительные атрибуты прав доступа: SUID (Set User ID)SGID (Set Group ID) и sticky bit (его рассматривали в последнем видео). SUID предназначен для установки ID пользователя во время выполнения файла (нужно для того, чтобы пользователи смогли запустить файл на исполнение с правами того пользователя, которому он принадлежит). SGID предназначен для установки ID группы во время выполнения (обычно применяется к каталогам). Логика работы аналогична SUIDSticky bit — дополнительный атрибут для каталогов (файлы из каталога с установленным sticky bit сможет удалить только его владелец). После выполнения команды `chmod -R 777 /` все дополнительные атрибуты будут перезаписаны, что приведет к бесчисленному количеству ошибок. Пострадают директории /tmp и /var/tmp, так как удалять из них файлы теперь сможет кто угодно. Стоит отметить, что некоторые скрипты также очищают данные каталоги, и без sticky bit им ничего не будет мешать удалить вообще все.

Во-вторых, ряд утилит проверяют права доступа у ключевых файлов (sudo, sendmail и др). Если они не соответствуют ожидаемым, то утилита не будет работать корректно. Тот же SSH может ругаться на то, что файл с приватным ключом имеет «bad permissions».

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

Что делать, если по ошибке выполнили эту команду?

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

Вывод из этого можно сделать один: всегда проверяйте, что именно вы хотите выполнить. Точно ли вы понимаете, что это за команда? Отдаете ли себе отчет о последствиях ее выполнения? Понимаете ли вы, для чего нужны КАЖДЫЙ ключ и параметр этой команды? Можете ли вы объяснить ЗАЧЕМ вы вообще ее выполняете? Только ответив на все эти вопросы можно начинать действовать. В противном случае, последствия могут быть необратимы.

#ПоясниЗаDevOps #ПраваДоступа #КакДелатьНеНужно