Напутствие начинающему руту
Многие, если не все, пользователи Linux ранее использовали операционные системы семейства Windows и привыкли работать под администрторской учетной записью. Перейдя на Linux они пытаются делать тоже самое, уповая на то, что ОС семейства Unix являются более защищенными. Данная статья призвана развеять этот миф и показать, что запрет на работу под root, стоящий в большинстве современных дистрибутивов Linux - это не просто прихоть разработчиков, а реальная необходимость, которая является одним из факторов, делающих эти операционные системы более надежными и защищенными.
Оглавление.
Что такое root и с чем его едят
Строго говоря, root - это просто учетная запись, не обязаельно наделенная какими-либо привилегиями, но так как в большинстве систем это аккаунт администратора по умолчанию, в данной статье root считается синонимом суперадминистратора. Просто учитывайте, что вы можете сделать любого пользователя суперадминистратором, присвоив ему uid 0
Root - это учетная запись, наделенная исключительными правами в системе. Для него не существует практически никаких ограничений. Это очень заманчивая роль для пользователя, ведь каждый хочет почувствовать себя богом, хотябы отдельно взятой маленькой системы. Это удобно, потому что нет никаких ограничений в действиях и Вы можете делать с системой все, что Вам захочется, но в виртуальном мире всегда приходиться искать компромис между удобством и безопасностью.
Естественно, что при начальной настройке системы Вам не обойтись без привилегий суперпользователя, ведь только он может производить действия с пользовательскими аккаунтами, запускать и останавливать любые процессы, изменять любые данные, находящиеся в компьютере. В повседневной-же работе использование этого аккаунта крайне не рекомендуется по причинам описанным ниже. В случае необходимости, Вы можете использовать инструменты, предназначенные для запуска приложений от имени суперпользователя (su, sudo), но старайтесь использовать эту возможность только в случае необходимости и будучи точно уверенны в том, что вы хотите сделать.
Права доступа
С самого начала своего существования, операционные системы семейства Unix были расчитаны на использование одного компьютера большим числом пользователей, что ставило проблему ограничения доступа пользователей к файлам. Ведь, согласитесь, неприятно, если документ, который вы набирали много часов, удалит по ошибке другой пользователь. И эта проблема была очень удачно решена. Каждый файл имеет аттрибуты, определяющие какие ользоватли имеют доступ к нему и какие действия могут совершать. Вот эти аттрибуты:
- UID
- GID
- SUID
- SGID
- sticky bit
- Права доступа для владельца, группы и всех остальных
Теперь подробнее рассмотрим, что означают эти аттрибуты:
UID - уникальный идентификатор пользователя, который является владельцем файла. Это числовое значение. Имя пользователя подставляется системой и файла /etc/passwd, если в системе зарегистрирован пользователь с данным uid.
GID - Уникальный дентификатор группы, которой принадлежит файл. Также является числовым значением. Имя берется из файла /etc/groups
SUID - позволяет запускать файл от имени владельца.
SGID - позволяет запускать файл от имени группы.
sticky bit - это специальный тип прав доступа к файлам. Программы с установленным флагом "sticky bit" остаются в системном кэше после своего завершения, обеспечивая тем самым более быстрый запуск программы. Если флаг установлен для каталога, то это приводит к ограничению прав на запись. Установленный флаг "sticky bit" отображается в виде символа t в поле прав доступа.
drwxrwxrwt 7 root 1024 May 19 21:26 tmp/
Если пользователь не является владельцем каталога, с установленным "sticky bit", но имеет право на запись в каталог, то он может удалять только те файлы в каталоге, владельцем которых он является. Это предотвращает удаление и перезапись "чужих" файлов в общедоступных каталогах, таких как /tmp.
Права доступа для владельца, группы и всех остальных - это трехбайтовое значение, которое определяет какие действия с фалом может производить владелец, пользователи, входящии во владеющую группу и все остальные. Это значение может быть представлено в виде восьмеричного числа (4 - чтение, 2 - запись, 1 - запуск/поиск. права доступа получают сложением этих цифр, т. е. если надо разрешить чтение и запись, ставиться цифра 6, если чтение и выполнение - 5 и т. д.) или буквенного сочетания определяющего права доступа владельца, группы и остальных. Для каждой категории устанавливаются три вида доступа:
- (x) - право на запуск файла,
- (r) - право на чтение файла,
- (w) - право на изменение (редактирование) файла.
в таком виде права доступа выглядят как rwxrwxrwx (все разрешено), есличто-то запрещено на месте буквы ставиться символ (-).
Основные команды
Ниже перечислены важнейшие команды для решения задач, связанных с правами доступа. Для получения более подробной информации об этих командах обращайтесь к руководствам по ним.
- chmod
-
Изменение прав доступа к файлу или каталогу.
- chown
-
Изменение владельца файла.
- chgroup
-
Изменение группы, которой принадлежит файл.
- umask
-
Определение прав доступа по умолчанию для файлов, создаваемых пользователем.
Так-ли страшен root
Ранее мы разобрались в том, как задаются права доступа к файлам в операционных системах семейства Unix. Давайте теперь посмотрим, как система реагирует на действия пользователя root с этими файлами.
При обращении к файлу система сравнивает uid/gid владельца файла c uid/gid пользователя и разрешает или запрещает доступ в соответствие с правилами. Но если идентификатор пользователя равен 0 (суперпользователь) то система дает ему полный доступ к файлу, несмотря на выставленныеограничения. Такая-же ситуация и с процессами, запущенными в системе: если процесс принадлежит пользователю root, то он обладает правами суперпользователя и, следовательно может делать все. Процесс запущенный от простого пользователя, напротив весьма ограничен в правах и врятли сможет нанести системе ощутимый ущерб.
Давайте посмотрим, какие опасности могут грозить нам при работе под root:
Возможность ошибки пользователя
Все мы люди и нам свойственно ошибаться в той или иной мере. Как известно, не ошибается только тот, кто ничего не делает, следовательно лучше ничего не делать от рута, ибо ценой ошибки может стать потеря всех данных, хранящихся в компьютере.Надеюсь телефонный звонок не оборвет вас на
rm -rf /
Бывали реальные случаи, когда вернувшись к компьютеру люди нажимали Enter, чтобы вернуться к работе, после того как их прервали. Думаю эффект объяснять не надо :)
Самой большой брешью в безопасности любой системы является человек. Не будьте самонадеянны.
Шутники
Был на лоре случай, когда человек запостил веселую строчку на perl"e, которая в результате давала уже знакомую нам команду
rm -rf /
Тем, кто сидел под рутом было не так весело, как автору сего творения.
Уязвимости ПО
Любое запущенное от имени рута приложение, работающее с сетью, является потенциальной брешью в безопасности и может привести к катастрофическим последствиям. Предположим, что вы запустили от имени root браузер, в котором есть возможность удаленного переполнения и зашли на страницу, которая посылает данные, использующие эту возможность. Может быть у вас украдут аккаунт, а может отформатируют жесткий диск, тут все зависит от фантазии злоумышленника. А при запуске от обычного пользователя вы можете отделаться удалением всех данных с вашей домашней директории. Надеюсь вы не пренебрегаете бэкапами :)
Если вы считаете, что в ПО для Linux не бывает уязвимостей, почитайте bugtrack.
Взлом
К сожалению в нашем несовершенном мире еще есть люди, которым доставляет удовольствие разрушать что-либо. И такие люди есть и в сети. Систем которые взломать невозможно попросту не существует, так что задача администратора (а для вашего домашнего компьютера им скорее всего являетесь вы) сделать взлом системы настолько трудным, чтобы отбить у злоумышленника желание его продолжать. И в данном вопросе опять приходиться столкнуться с тем, что никакие процессы запщенные от суперпользователя не должны иметь выход в сеть. Получив права простого пользователя взломщик еще не может нарушить работоспособность системы, не может удалить следы своего пребывания или внести изменения в системные службы. Конечно он попытается получить привилегии root, но на это уйдет время, которого вам может хватить, для обнаружения нарушителя и принятия соответствующих мер. К тому-же, если в вашей системе есть одна брешь, это еще не значит, что есть и вторая. Не стоит облечать жизнь вандалам только из-за вашей лени.
su и sudo
Если уж вам действительно необходимо совершить какие-то действия от имени суперпользователя, используйте su или sudo.
su - запускает оболчку от имени суперпользователя и позволяет выполнять выполнять действия от его имени. Требует ввода пароля root.
sudo - программа, позволяющая запустить от имени владельца файлы с установленным SUID/SGID флагом, если это разрешено в файле /etc/sudoers, требует ввода пароля пользователя. Подробности о настройке sudo можно узнать в этой статье.
Заключение
Надеюсь данный текст убедит вас использовать аккаунт суперпользователя с большей осторожностью.
Безопасность системы зависит от пользователя не в меньшей (а возможно и в большей) степени, чем от создателей системы, так что все в ваших руках.
Буду рад услышать ваши комментарии и дополнения к данной статье.
- Блог пользователя NeO
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии