Сам себе root

Алексей Федорчук
2001 г

От автора: это сочинение — из числа довольно старых (где-то 2001 год). Не знаю, насколько оно интересно с точки зрения содержания — эту тему я затрагивал в дальнейшем неоднократно, — но, надеюсь, некоторый исторический интерес оно представляет…

С чего начинаются POSIX-системы — понятие, под которым можно объединить все изобилие открытых (в отношении кода) и свободных (как с точки зрения условий распространения, так и цены) Unix-подобных операционных систем? С непреодолимого желания посмотреть, что это такое. Чувство это сродни тем, что двигали казаками Атласова, конкистадорами Кесады или бароном Толлем и его спутниками, отправившимся на поиски земли Санникова. И рациональному объяснению оно не поддается, так что не буду и пытаться.

Однако для начала хорошо бы представить себе предмет разговора. А это, в первую очередь (а также вторую и третью) — Linux во всех его ипостасях, ибо именно он стал в последние годы символом мира Open Sources. Хотя скидывать со счетов классово близкие *BSD-системы тоже не следует.

Linux’ов в природе существует множество. На одном Distrowatch‘е, например, только полноразмерных универсальных дистрибутивов можно насчитать многие и многие десятки. Не говоря уже об облегченных вариантах специального назначения — для proxy, роутеров, почтовых серверов (часто выступающих под лозунгом «Linux на одной дискете»).

Выбрать что-либо среди этого изобилия начинающему пользователю нелегко. Я немало времени затратил на поиски идеального дистрибутива. Не могу сказать, что преуспел в этом деле, но кое-какой опыт приобрел. Им-то и хочу поделиться.

Существуют различные классификации дистрибутивов: по происхождению — от Red Hat ли, от Debian или Slackware; по назначению — серверные или настольные; по формату пакетов — rpm-based или deb-based, или вовсе использующие обычные тарбаллы. Однако для пользователя, выбирающего себе систему не только по уму (то есть функциональности), но и по сердцу (идеологически близкую и эстетические приятную), подобная классификация дает очень мало.

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

Представители первой группы развиваются в направлении предоставления пользователю все больших и больших возможностей. После чего (опять же цитирую Клиффорда) «администратор проводит много времени, дезактивируя дружественные по отношению к пользователям функции», поскольку они отрицательно влияют, в частности, на безопасность системы (от себя замечу — также на производительность и прозрачность понимания устройства — А.Ф.).

Казалось бы, вывод ясен: народу не нужен дистрибутив, дружественный к администратору. Ведь ему, народу, возможностей бы поболее, ведь так?

Не совсем. Речь все же идет о системе хоть и настольной, /sиндивидуальной, но изначально многопользовательской. И пользователей этих даже на самой домашней машине — минимум двое: я, любимый, как user, и опять же я, любимый не менее — как root, он же системный (пусть в локальном масштабе) администратор. И что user’у на пользу, то root’у если и не смерть, то головная боль — уж точно.

Поясню на примере. С некоторых пор во многих Linux-дистрибутивах (BSD-системы, благо, чаша сия миновала) по умолчанию появилась модная функция — автомонтирование сменных носителей (в Linux Mandrake она носит гордое имя supermount). Испокон веку в Linux и других Unix’ах монтирование накопителей, в том числе и сменных, было неотъемлемой привилегией root’а, что он и проделывал явным образом, дав команду

$ mount /dev/имя_устройства /точка_монтирования

и не забывая при этом по окончании надобности размонтировать устройство обратно командой

$ umount /точка_монтирования

Как говорится, во избежание. Конечно, при желании root мог поделиться своей привилегией с благонамеренным user’ом, дав тому соответствующее право. Но и при этом user не был избавлен от необходимости монтировать и (особенно!) размонтировать носители явным образом.

Что ж мы видим ныне? Картина, с одной стороны, отрадная: вставляем CD, дискету ли, или там Zip какой в должное место, легкий щелчок на иконке рабочего стола KDE — и содержимое носителя перед глазами. Или того лучше: обращаемся к нужному подкаталогу в каталоге для подключения внешних файловых систем (например, /mnt/cdrom) — и соответствующее ему устройство монтируется автоматически.

Однако всё имеет свою оборотную сторону — размонтирование. Теоретически это должно бы происходить, если к устройству нет обращения. Но, как известно, «теоретически она лошадь, а практически она падает». И автоматического размонтирования зачастую не происходит — что, конечно, можно считать ошибкой некоторых программ, которая будет исправлена в грядущем… Однако вспомним и о том, что ВСЕ файловые операции в Linux кэшируются в ОЗУ, и между отдачей команды umount и собственно размонтированием существует некий люфт во времени (для Zip-приводов — весьма приличный), когда извлечение носителя может иметь последствия печальные.

Конечно, неразмонтированный CD-ROM из привода не вынешь без шила. Но дискету-то можно, да и Zip, что бы ни утверждалось по этому поводу в литературе — подчас тоже (проверено собственноручно). И обнаружив на них, придя на службу, вместо жизненно важных файлов и каталогов некую псевдоквазию, поневоле вздохнешь по временам mount/umount, а вернувшись домой, тут же полезешь в /etc/fstab на предмет отключения всяческого super- и auto-монтирования — ручмя оно все же надежнее…

Это лишь один (и не самый печальный, да и потерявший, насколько мне известно, актуальность) случай, когда физическое лицо, единое в двух, так сказать, юридических лицах — root’а и user’а, — входит в антагонистическое противоречие с самим собой. И потому даже для настольного применения не стоит с порога отметать дистрибутивы, дружественные к администратору, в пользу дистрибутивов, дружественных к пользователю.

Конечно, последние (Red Hat и его клоны — Mandrake, ASPLinux и т. д.) заботливо проведут пользователя через все этапы установки — разбиение диска, выбор пакетов, контроль их зависимостей, конфигурирование и т. д.. А соплеменные пакеты (Altlinux и ASPLinux) — даже избавят от тягот локализации: начать работу с такой системой можно сразу по ее инсталляции.

Однако расплатой за это будут даже не гигабайты дискового пространства — при нынешних дисках грех это невеликий. Главным отрицательным результатом для пользователя будет отсутствие понимания того, что же все-таки установлено в системе и для чего оно нужно.

Вблизи другого полюса — Slackware и Source Based дистрибутивы, а также все BSD-системы. Большая часть того, что в Red Hat проделывается легким движением мыши, здесь требует несложной и понятной, но все же ручной работы. Однако за эталон дружественности к администратору я принял бы Net- и OpenBSD. Здесь абсолютно всё, кроме базовых компонентов системы придется устанавливать вручную — по сети ли, из коллекции портов, или из пакетов с локального носителя. Зато назначение каждого файла в готовой системе будет понятно.

Конечно, в такого рода системах даже элементарные настройки — например, принтера или записывающего ATAPI CD-R/RW — превращаются в задачу нетривиальную. И потому я отнюдь не призываю ставить OpenBSD или Slackware вместо Mandrake или ASPLinux. Однако, отдав дань уважения себе как user’у, не подумать ли и о своих интересах в инкарнации root’а?