
Практическое занятие № 1. Регистрация root
Как вы знаете, UNIX различает различных пользователей, так что то, что они могут сделать друг другу и системе, регулируется (например, не хочется, чтобы кто-то читал чужие любовные письма). Каждый пользователь получает account (регистрируется в системе), что включает имя пользователя, домашний каталог и т.д. В дополнение к регистрации реальных людей, регистрируются (для них также открывается счет :-) несколько специальных пользователей, имеющих привилегии. Наиболее "важный" даже среди них пользователь - root (корень).
Обычные пользователи в общем случае ограничены так, что они не могут причинить вред кому-либо другому в системе (включая саму систему), кроме самих себя. Права доступа к файлам в системе организованы таким образом, что простой пользователь не может удалить или изменить файл, файл в каталогах, которые пользователи используют совместно (такие как /bin и /usr/bin). Большинство пользователей также защищают свои собственные файлы так, что не могут их изменить, а иногда и вообще добраться до них.
Но все эти ограничения не распространяются на пользователя root. Пользователь root может читать, модифицировать или удалять любой файл системы, изменять его права доступа или менять его владельца. Он (root) может также выполнять специальные (привилегированные) программы, такие как разбитие диска на разделы или создание файловой системы. Основная идея состоит в том, что некто (их может быть несколько), кто выполняет регистрацию пользователей (и носит имя root), должен, когда это необходимо, иметь возможность выполнять работы, которые не могут быть выполнены обычным рядовым пользователем. Поскольку root может делать все, что угодно, ему легко совершить какую-то ошибку, приводящую к катастрофическим последствиям.
Например, если вы как обычный пользователь случайно попытаетесь удалить файл в /etc, система не разрешит вам это сделать. Но, если вы вошли как root, система даже не пикнет, выполняя все, что прикажете. Легко уничтожить систему, пребывая в системе в качестве root. Лучший способ избежать неприятностей, это:
-
Посидеть на собственных ладошках, прежде чем нажать return для выполнения команды, которая может быть причиной катастрофы. Например, если вы собираетесь очистить каталог, перед нажатием return перечитайте всю команду и убедитесь, что она написана правильно.
-
Не привыкайте использовать root. Чем более комфортно вам будет в роли root, тем больше вы будете путать ваши привилегии с привилегиями нормального пользователя. Например, вы можете подумать, что вы сейчас находитесь в системе как larry, хотя на самом деле будете неудержимым root.
-
Используйте отличающуюся подсказку для root. Для этого следует внести изменения в root-овский .bashrc или . login файл для того, чтобы сделать подсказку для root отличной от других. Например, многие используют символ "$" в подсказках обычных пользователей и оставляют символ "#" для подсказки root.
-
Входите под именем root только тогда, когда это абсолютно необходимо. И, как только вы закончите работу root-a, выйдите (выведите root-a из системы). Чем меньше используете root, тем меньше навредите системе.
Разумеется, есть племя хакеров, которые используют root практически всегда и везде. Но каждый из них когда-то по глупости уничтожил хотя бы (в лучшем случае) одну систему. Есть общее правило: пока вы не познакомились с неограниченными возможностями root, и не привыкли к отсутствию ограничений, входите под root в крайнем случае.
Разумеется, все совершают ошибки. Однажды сам Linus Torvalds (создатель linux) случайно удалил все поддерево каталогов, содержавшее программы ядра. Многие часы работы пропали (бы) в один миг навсегда. К счастью, однако, благодаря своему знанию кодов файловой системы, он смог перезагрузить систему и реконструировать дерево каталогов вручную.
Давайте по-другому, если вы представите использование root как ношение специальной волшебной шапки, которая дает вам могущество, так что вы можете мановением руки разрушить целые города, то уместная мысль, что надо очень следить за своими руками. А поскольку такая мощь опасна (да и рукам неудобно), лучше без большой нужды не надевать волшебную шапку, даже если в шапке у вас повышается самоуважение.
-
Злоупотребление системой
С приходом ощущения власти приходит желание вредить. Это темная сторона администрирования в UNIX, но всякий через это когда-то должен пройти. Большинство пользователей UNIX никогда не получат возможность испытать это на университетских и производственных системах UNIX. Только высокооплачиваемые и высокообразованные системные администраторы могут входит в систему под именем root. Действительно, во многих таких заведениях пароль root - это строго охраняемый секрет. Это священная корова фирмы. Много делается попыток пролезть под именем root в систему; она представляется мудрой и устрашающей силой, покоряющейся только тем, кто знает заклинания.
Такая позиция по отношению к root очень легко приводит к опасностям и соблазнам. Поскольку root столь одурманивающая штука, то когда пользователь дорывается до возможности войти под root, прослеживается начало использования свалившихся привилегий в плане вредительства. Я знавал таких "системных администраторов", которые читали без разрешения почту других пользователей и вообще вели себя как дети, которым дали столь мощную клевую "игрушку".
Поскольку root имеет в системе такие привилегии, требуется определенный уровень зрелости и самоконтроля, чтобы использовать этот account (этот привилегированный "счет"), как это было задумано - для эксплуатации системы. Существует негласный закон чести в отношениях администратора с пользователями. Как вы будете себя чувствовать, если системный администратор читает ваши письма и просматривает ваши файлы? До сих пор нет достаточно серьезной юридической основы для неприкосновенности личной информации в многопользовательских компьютерных системах. В системах семейства UNIX пользователь root имеет возможность преодолевать все штатные механизмы защиты системы. Важно, чтобы у администратора были доверительные отношения с пользователями системы. Невозможно переоценить важность этого.
-
Взаимодействие с пользователями
Безопасность UNIX довольно рыхлая от рождения. Вопросы безопасности были додуманы "в догонку" - исходно система создавалась в неформальной атмосфере, когда все вмешивались в работу друг друга. Благодаря этому, даже несмотря на меры безопасности, у нормального пользователя существуют возможности причинить системе вред. Системный администратор может выбрать две тактики взаимодействия с злоупотребляющими (прим. переводчика: в исходном, а не в узко русском смысле этого слова) пользователями. Это может быть параноидная тактика и тактика доверия. Системный администратор с паранойей обычно своими действиями наносит больше вреда, чем предотвращает. Одна из моих любимых присказок: "Никогда не списывай на зловредность то, что можно списать на тупость". Взгляните с другой стороны, большинство пользователей не имеют возможностей и знаний, чтобы причинить реальный вред системе. 90% процентов того, что делает пользователь, причиняя вред системе (например, забивая пользовательский раздел огромными файлами или выполняя сразу несколько экземпляров громадной программы), он делает просто не подозревая, что он кому-то создает проблемы. Мне приходилось сталкиваться с пользователями, которые были источниками огромных неприятностей, но они действовали по простоте душевной, а не со зла.
Когда вы имеете дело с пользователями, которые опасны потенциально, не накидывайтесь на них с обвинениями. Старое правило "презумпции невиновности" все еще не отменили. Лучше всего поговорить с пользователем, поспрашивать о его проблемах, вместо того, чтобы идти на конфронтацию. Самое плохое, это пытаться отвечать ему "встречными" неприятностями. Это создаст вокруг вас - системного администратора - много подозрений, поставит под сомнение вашу способность корректно сопровождать систему. Если пользователь решит, что вы не верите ему или даже не любите, он может обвинить вас в том, что вы удаляете его файлы и вообще подсматриваете. Вряд ли вы хотите оказаться в такой ситуации.
Если вы убедились, что пользователь действительно пытается "взломать" систему или умышленно ей вредит, старайтесь не отвечать угрозами на угрозы. Вместо этого просто предупредите его, но сохраняйте гибкость. Во многих случаях вы можете "схватить его за руку" в процессе свершения вредительства - вот тут и предупредите. Скажите, чтобы он так больше не делал. Но если вы снова его поймаете на вредительстве, то убедитесь, что это действительно намеренно. Я просто не смогу перечислить все случаи, когда оказывалось, что неприятность была либо случайной, либо я сам был виноват.