стандартом и альтернативные загрузчики, такие как bootlin или
bootactv постепенно вытесняются и уходят в прошлое.


После того, как ядро системы загружено в
память, процесс загрузки переходит в решающую стадию. Вот что
происходит после того, как управление будет передано образу операционной
системы:


Если вы установили сжатое ядро, его необходимо
распаковать. Кстати, поэтому первое, что вы видите на экране,
это сообщение программы распаковки:




Uncompressing Linux.....




Скорее всего, ваш компьютер оснащен SVGA-адаптером.
В этом случае, в зависимости от конфигурации ядра системы, вам
может быть предоставлена возможность установить один из нестандартных
режимов видеоадаптера, например 100 символов на 40 строк. Зачем
это надо? Дело в том, что далеко не все терминалы имеют разрешение
80*25. Напомню, что количество символов в строке ведет свою историю
от 80-колоночных перфокарт, но ведь ветераны помнят, что были
еще и 132-"дырочные" карты! Поэтому вы имеете возможность
настроить свою систему таким образом, чтобы программное обеспечение,
рассчитанное на работу с конкретным терминалом, корректно выполнялось
на вашей машине.


Затем Linux проверяет состав аппаратных средств,
подключенных к машине (гибкие магнитные диски, винчестеры, сетевые
адаптеры и звуковые карты) и конфигурирует некоторые из них. Причем
процесс конфигурирования отображается на экране, а также записывается
в одном из служебных файлов. А команда /bin/dmesg позволяет вам
просмотреть все сообщения во время загрузки. Это оказывается удобно
в тех случаях, когда какая то из команд инициализации возвращает
сообщение об ошибке, которое вы не успеваете просмотреть.


Вот, например, что выводится на экран при
загрузке моей системы:




Console: colour EGA+ 80x25, 8 virtual consoles




Serial driver version 3.99a with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16450
tty01 at 0x02f8 (irq = 3) is a 16450
tty02 at 0x03e8 (irq = 4) is a 16550A
lp_init: lp1 exists, using polling driver
snd2 <SoundBlaster Pro 4.5> at 0x220 irq 10 drq 1
snd6 <SoundBlaster 16 4.5> at 0x220 irq 10 drq 5
snd7 <SoundBlaster MPU-401> at 0x330 irq 10 drq 0
snd1 <Yamaha OPL-3 FM> at 0x388 irq 0 drq 0
Sony I/F CDROM : SONY CD-ROM CDU33A Rev 1.0d with tray load mechanism
using 16384 byte buffer, capable of audio playback
Calibrating delay loop.. ok - 7.98 BogoMips
Memory: 6992k/8192k available (532k kernel code, 384k reserved, 284k data)
Floppy drive(s): fd0 is unknown type 0, fd1 is 1.44M
Swansea University Computer Society Net2Debugged [1.30]
IP Protocols: ICMP, UDP, TCP
PPP: version 0.1.2 (4 channels)
TCP compression code copyright 1989 Regents of the University of California
PPP line discipline registered.
SLIP: version 0.7.5 (4 channels)
CSLIP: code copyright 1989 Regents of the University of California
Linux version 1.0.8 (root@mntr) #3 Sun Nov 13 21:19:51 boot ibcs init 1994
Partition check:
hda: hda1 hda2
hdb: hdb1 < hdb5 > hdb2 hdb3 hdb4
VFS: Mounted root (ext2 filesystem) readonly.



Но! Linux при загрузке не проверяет правильность
установки настроек драйверов. В частности, Sound Blaster настроен
на IRQ7, но когда-то сгенерированный под IRQ10 драйвер так и смущает
меня каждый день! А вот на сообщение о типах микросхем коммуникационного
порта советую обратить внимание. В этих строчках может крыться
объяснение того факта, почему ваш замечательный Zyxel не работает
со скоростями выше 9600.


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


А вот теперь наступает пора файловой системы.
Ядро пытается смонтировать root filesystem (смотри последнюю строчку
в протоколе загрузки). Точка монтирования системы устанавливается
командой rdev).


Тип монтируемой системы опредеяется автоматически,
важно только, чтобы она поддерживалась ядром. Имейте в виду, что
если смонтировать файловую систему не удается, Linux ударяется
в панику (так и называется - panic mode) и "насмерть завешивает
машину".


Затем ядро стартует фоновую задачу /etc/init
(PID=1), которая считывает конфигурационный файл /etc/inittab,
отрабатывает его, а затем запускает скрипт-файл оболочки /etc/rc.
Этот скрипт запускаает все фоновые задачи (они же демоны), которые
обязаны заботиться об обслуживании периферийных устройств, очередей
запросов на печать и прочей рутиной. Кстати, в зависимости от
режима запуска системы вызываются различные варианты скрипт-файлов
/etc/rc.


Это, между прочим, совсем не простой процесс
и его стоит рассмотреть подробнее. Вот фрагмент типового файла
/etc/inittab:




# автоматический старт (уровень 5).




id:5:initdefault:
# Инициализация системы при загрузке
si:S:sysinit:/etc/rc.d/rc.S
# запуск однопользовательского режима
su:S:wait:/etc/rc.d/rc.K
# Инициализация многопользовательского режима
rc:123456:wait:/etc/rc.d/rc.M
# Реакция на комбинацию из трех пальцев
ca::ctrlaltdel:/sbin/shutdown -t3 -rf now
# Реакция на отказ блока питания (разгрузка системы в
# однопользовательском режиме)
pf::powerfail:/sbin/shutdown -f +5 "THE POWER IS FAILING"
# Откат разгрузки системы, если питание восстановлено
pg:0123456:powerokwait:/sbin/shutdown -c "THE POWER IS BACK"
# Если питание восстановлено в однопользовательском режиме -
# запустить многопользовательский режим (он же уровень 5)
ps:S:powerokwait:/sbin/init 5



Формат записей в файле /etc/inittab вы можете
получить, обратившись к системе подсказок man, а я хочу обратить
ваше внимание на следующее:


При старте системы запускается конфигурационный
файл rc.S (системные настройки). Затем инициализируется однопользовательский
режим - rc.K. При этом осуществляется проверка целостности файловых
систем, подлежащих монтированию, и, если ошибок нет, инициализируется
многопользовательский режим (rc.M).




# /etc/rc/rc.S




#
# Системные настройки, выполняемые при загрузке системы
# Вся настройка пользователя должна осуществляться в rc.local
PATH=/sbin:/usr/sbin:/bin:/usr/bin
# разрешаем свопинг
#/sbin/swapon -a # для всех разделов подкачки
swapon /dev/hdb2 # только для конкретного
# Проверяем, не смонтирована ли корневая система как read-only
READWRITE=no
if echo -n >> "Testing filesystem status"; then
rm -f "Testing filesystem status"
READWRITE=yes
fi
# Проверяем целостность всех файловых систем
if [ ! $READWRITE = yes ]; then
/sbin/fsck -A -a
# В случае ошибок переход в однопользовательский режим
# Все сообщения по-английски, поскольку русификаторы пока не
# загружены
if [ $? -gt 0 ] ; then
echo
echo
echo "**************************************"
echo "fsck returned error code - REBOOT NOW!"
echo "**************************************"
echo
echo
/bin/login
fi
# Переключение файловой системы в режим read-write
echo "Remounting root device with read-write enabled."
/sbin/mount -w -n -o remount /
else
#
# При включении ядро системы находилось в режиме read-write, что
# не позволяет проверить целостность системы. Выдаем рекомендации
# по устранению этого дефекта
#
cat << EOF
*** Root partition has already been mounted read-write. Cannot check!
For filesystem checking to work properly, your system must initially mount
the root partition as read only. Please modify your kernel with 'rdev' so that
it does this. If you're booting with LILO, type:
rdev -R /vmlinuz 1
(^^^^^^^^ ... or whatever your kernel name is.)
If you boot from a kernel on a floppy disk, put it in the drive and type:
rdev -R /dev/fd0 1
This will fix the problem *AND* eliminate this annoying message. :^)
EOF
sleep 10
fi

# удаляем блокировочные файлы, которые создаются служебными программами
/bin/rm -f /etc/mtab* /etc/nologin /etc/utmp
# И создаем новые версии.
cat /dev/null >> /etc/utmp
# монтируем файловые системы, приведенные в /etc/fstab
# за исключением NFS, поскольку TCP/IP еще не установлен
/sbin/mount -avt nonfs
# Настройка системных часов
if [ -x /sbin/clock ]; then
/sbin/clock -s
fi
# Установка содержимого файлов /etc/issue и /etc/motd
# Это обычные текстовые файлы, содержащие текущие новости из жизни
# системы (/etc/issue) и так называемую "мысль дня" (/etc/motd)
#
# Вы можете без колебаний заменить приведенные ниже строки на
# собственные варианты. Например, выбор случайной строки из текстового
# файла, содержащего пословицы и поговорки.
echo > /etc/issue echo Welcome to Linux `/bin/uname -a |
/bin/cut -d\ -f3`. >> /etc/issue echo >> /etc/issue
echo "`/bin/uname -a | /bin/cut -d\ -f1,3`. (Posix)." > /etc/motd
# Настройка коммуникационных портов
# Обратите внимание, что строка вызова скрипта настройки
# коммуникационных портов по умолчанию закрыта комментарием. Дело в том,
# что довольно часто загрузка прерывается в тех случаях, когда параметры
# настройки не соответствуют реальной конфигурации компьютера. Поэтому
# рекомендуется вначале отладить этот скрипт и лишь затем
# инициализировать его при загрузке.
#/bin/sh /etc/rc.d/rc.serial
# инициализируем сервер доменных имен
named
# Конец файла rc.S






#! /bin/sh




#
# Конфигурирование системы для работы в многопользовательском режиме
# Сообщаем пользователю о переходе в многопользовательский режим
echo "Going multiuser..."
# Запуск демона update в фоновом режиме
/sbin/update &
# Установка времени задержки выключения монитора (в минутах)
/bin/setterm -blank 15
# Инициализация сетевой поддержки
if [ -x /etc/rc.d/rc.inet1 ];
then
/bin/hostname vvv # имя хоста
/bin/domainname rinet.ru # и домена
/bin/sh /etc/rc.d/rc.inet1 # запуск конфигурационных скриптов
/bin/sh /etc/rc.d/rc.inet2
else
/sbin/hostname_notcp vvv # если TCP/IP не установлен
/bin/domainname rinet.ru
echo
echo "Since you don't have TCP/IP installed, syslogd will complain when it first"
echo "starts. The warning can be ignored."
echo
/usr/sbin/syslogd
/usr/sbin/klogd
/usr/sbin/lpd
/usr/sbin/crond
fi
# удаление устаревших блокировочных файловв
/bin/rm -f /usr/spool/locks/* /usr/spool/uucp/LCK..* /tmp/.X*lock 1> /dev/null 2> /dev/null
# Отключение зависших сетевых гнезд
if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
echo "Removing your stale hunt sockets from /tmp..."
/bin/rm -f /tmp/hunt*
fi
# Обновление всех связей статических библиотек
/sbin/ldconfig
# И наконец, запуск локальной процедуры настройки
/etc/rc.d/rc.local
# Конец файла rc.M



Кроме того, inittab содержит команды инициализации
виртуальных консолей и коммуникационных портов, которые позволяют
подключить к Linux-системе удаленные терминалы или другие host-машины.
Но к этому вопросу мы вернемся отдельно.


Вполне вероятно, что вам потребуется внести
в процесс настройки какие-то свои дополнения (например, загрузить
кириллические знакогенератор и раскладку клавиатуры) - не изменяйте
упоминавшиеся выше файлы! Для этого существует специальный скрипт-файл
- rc.local. А если вы подрабатываете системным администратором,
и один из пользователей требует от вас какой-либо экзотической
настройки, то не стоит портить и rc.local - достаточно внести
необходимые команды в стартовый файл оболочки в пользовательском
каталоге.


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

Разгрузка
операционной системы



Теперь давайте рассмотрим, каким образом
протекает обратный процесс - разгрузка операционной системы. Вы
конечно же знаете, что выключить UNIX-машину гораздо сложнее,
чем обычный калькулятор. И соответствующий ритуал должен быть
соблюден до мельчайших деталей. В противном случае вы можете потерять
ряд файлов или развалить всю систему в целом.


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


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


Именно поэтому вам необходимо аккуратно и
качественно организовать процесс разгрузки операционной системы.
Для этой цели в Linux предусмотрена специальная программа /bin/shutdown.
Давайте рассмотрим, как ее использовать?


Прежде всего отметим, что вызов этой программы
осуществляется при вводе клавишной комбинации "из трех пальцев"-Ctrl-Alt-Del.
Поэтому изложенный ниже материал предназначен не для ежедневного
использования, а для более глубокого понимания процесса разгрузки
и разработки собственных механизмов.


Если вы являетесь единственным пользователем
системы, то для выгрузки системы вы должны (во всяком случае,
с точки зрения теории) остановить все текущие программы, закрыть
виртуальные пользовательские консоли, зарегистрироваться в системе
как root (а если вы уже работаете как root, то во избежание неприятностей
перейдите в каталог /root ), а затем ввведите команду




shutdown -q now




Кстати, вместо now вы можете указать интервал
времени (в минутах) через который система осуществит окончательную
разгрузку. Необходимо отметить, что в первоначальных версиях системы
(диски Release 2 и Release 3) код команды shutdown содержит ошибку,
в результате которой таймер не работает и разгрузка осуществляется
мгновенно в любом случае, впрочем, если вы владеете UNIX-машиной
в гордом одиночестве, задержка вам вряд ли понадобится. А вот
если вы строите сервер или многопользовательскую систему - воспользуйтесь
дисками Release 4 или более поздними, в которых эта ошибка исправлена.


Вообще говоря, в многопользовательской системе
выдача команды shutdown обычно сопровождается кратким сообщением
о причине, по которой завершается работа с системой. Впрочем,
это можно и не делать, если вы не слишком уважаете своих пользователей.
В конце концов, через определенные промежутки времени, shutdown
все равно будет терроризировать пользователей сообщениями типа
: "до взрыва осталось 8 минут".


Но какие конкретно операции должна выполнить
команда shutdown? Ответ на этот вопрос хранится в файле /etc/shutdown.rc.
В любом случае, вне зависимости от наличия этого скрипт-файла
при начале разгрузки системы демонтируются все файловые системы
(кроме root) все оставшиеся "в живых" пользовательские
процессы безжалостно "убиваются" (поэтому и рекомендуется
выходить до разгрузки системы!). После того, как все операции
демонтирования успешно завершены, на консоль выдается соответствующее
сообщение. Вот только после этого вы и можете нажимать клавишу
Reset или выключатель питания.


Если же вы хотите перегрузить компьютер,
то можете воспользоваться командой reboot, которая аналогична
команде shutdown, но не останавливает систему после завершения
разгрузки, а автоматически начинает перезагрузку операционной
системы.


Иногда, как это ни прискорбно, система не
хочет корректно разгружаться. Например, в том случае, если система
запаниковала (panic mode) и пошла в разнос. Вы должны отдавать
себе отчет, что любое нажатие клавиши может привести к непредсказуемым
и непоправимым последствиям, а поэтому лучше закрыть глаза и тихонько
нажать на клавишу Reset. Во всяком случае, у вас остается надежда,
что программа fsck при повторной загрузке исправит (или попытается
это сделать) ошибки на диске. Если же повреждения оказались менее
серьезными (в SAG под этим подразумевается несколько ударов топором
по клавиатуре), то имеет сысл использовать команду update для
того, чтобы снести содержимое буферов на диск, и только после
этого выключать питание.


Среди части системных программистов пользуется
популярностью некое сложное заклинание, состоящее из трех команд
sync, между которыми следует дождаться мигания светодиода доступа
к винту, и лишь после этого считается позволительным выключать
питание машины. Если в этот момент у вас нет никаких активных
программ, то этот процесс, вообще-то, полностью эквивалентен команде
shutdown. Но, поскольку вы не размонтировали файловые системы,
то флажок clean filesystem для наиболее распространенной системы
ext2fs (смотри [1]) сброшен не будет, что приведет к недовольному
ворчанию fsck при повторном запуске программы.


Поэтому пользоваться подобными "открытиями"
не стоит.


В то же время не стоит огульно охаивать опыт
минувших поколений. Метод трех sync-ов ведет свое начало с тех
времен, когда солнце светило ярче, а машины работали не так быстро.
Поэтому промежуток между выполнениями трех раздельно введенных
команд был вполне достаточным, чтобы успели выполниться все операции
ввода/вывода с дисков.

Демоны
и фоновые процессы



Загрузка демонов и фоновых программ осуществляется
обычно именно на этапе загрузки системы. И для того, чтобы детально
разобраться в происходящих процессах необходимо, по меньшей мере
представлять, что они из себя представляют.


Демон
(от английского demon или daemon-встречаются обе транскрипции!)
представляет собой программу выполняющуюся в фоновом режиме,
незаметно для пользователя и дополняющую операционную систему
каким либо специальным сервисом. Происхождение названия не имеет
ничего общего с ужасами потустороннего мира или игрой DOOM, и
представляет собой акроним от "Disk And Execution MONitor".
Основная идея, положенная в основу демонов, состоит в том, что
эта программа не вызывается пользователем в явной форме, а спокойно
ожидает в памяти какого-либо определенного события. Инициатор
генерации события может и не подозревать, что в дебрях оперативной
памяти его подстерегает голодный демон (а иногда программа может
выдать квитанцию о выполнении той или иной операции только в том
случае, если она передала информацию соответствующему демону).
Характерный пример - работа с принтером, при котором программа
LPR передает данные демону управления печатью LPD. При постановке
задачи в очередь на печать LPR даже не интересуется наличием в
памяти демона печати, а только помещает печатаемый файл в каталог
спулинга.


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


Мы уже упоминали об одном демоне, к которому
каждый UNIX-программист должен относится с почтением. Это /etc/update
- программа выполняющая синхронизацию дисков (системный вызов
sync) каждые тридцать секунд.


Есть и другие полезные демоны, которых вы
можете обнаружить с помощью команды ps -ax (показать все процессы,
в том числе и те, которые запущены другими пользователями). Это
syslogd и crond. Первый из них ведет системный журнал, который
помогает системному администратору разобраться в причинах сбоев
и неполадок, а также обнаружить злоумышленников, пытающихся взломать
защиту вашей системы, а второй...... Впрочем, чтобы выяснить это
вы всегда можете воспользоваться он-лайновой системой помощи.


Отмечу попутно, что man не всегда сразу же
находит нужную информацию. Связано это с тем, что все данные разделены
на несколько страниц. При этом на первой странице размещается
описание команд, на второй - системные вызовы, а на восьмой -
конфигурационные файлы. Поэтому, имеет смысл указать программе,
на какой странице вы рассчитываете найти интересующую вас тему.
А как это сделать - вы можете узнать, воспользовавшись командой
man man - получить подсказку по команде man.


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

Более
подробно о загрузчиках системы


LILO -
Linux Loader


LOADLIN


Права
доступа и регистрация в системе


Регистрация
в системе



Русский язык, увы все больше и больше засоряется
буржуазными словечками (даже не словечками, а так, гибридами).
Сколько раз я уже встречал выражение "залогиниться в системе",
"я логинюсь..." и так далее. На самом деле говорящий
или пишущий подразумевает процесс регистрации в системе.


Под регистрацией понимается процесс опознания
пользователя и выделения в его распоряжение санкционированного
системным администратором набора вычислительных ресурсов. Под
ресурсами понимается доступ к тем или иным дискам (каталогам),
перифериным устройствам и так далее. Само опознавание выполняется
одной из программ семейства getty:


uugetty - стандартная программа регистрации
на консоли (виртуальной линии);


uugetty_ps - программа, позволяющая зарегистрироваться,
подключившись к последовательному порту через нуль-модем или (как
бы его получше назвать) не-нуль-модем;


mgetty - программа регистрации, распознающая
приходящие факсы.

Любая из этих программ выдает
на ваш терминал подсказку


login:


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


Если программа getty обнаружит файл /etc/nologin
(совершенно неважно, что в нем находится) то регистрация в системе
будет запрещена! Создается этот файл обычно программой shutdown
или ее аналогами. Смысл мероприятия довольно прозрачен - не допустить
внесения изменений в систему после завершения разгрузки. При запуске
системы это файл должен автоматически ликвидироваться и проблем
у вас возникать не должно. За исключением того случая, когда вы
вручную создадите этот файл во время работы. Так что будьте бдительны!

Права
доступа к файлам в системе UNIX



Основным понятием, определяющим все отношение
к "правам и обязанностям пользователей" являются атрибуты
файла. Напомню, что атрибуты файла, принятые в MS-DOS заимствованы
из CP/M, а туда попали из UNIX. Насколько удачным оказалось использование
"испорченного телефона" можно судить по большому количеству
признаков, одним из которых является, например, количество вирусов.
В этой области Microsoft есть чем гордиться - MS-DOS и впрямь
впереди планеты всей. Но давайте вернемся к правам доступа. Начнем
со знакомой вам (если вы уже установили Linux) программы распечатки
каталогов ls. Обычно программа не балует пользователя избытком
информации, но если вы воспользуетесь ключом -l, то получите следующее:




rw-rw-rw- 1 vovka root 4067 Nov 5 13:12 caterpillar.tar.z




Что же нам сообщила система? Первая, непонятная
на первый взгляд, последовательность символов как раз и представляет
собой права доступа к этому файлов со стороны различных категорий
пользователей. Затем (1) выводится количество синонимов, под
которыми данный файл известен системе. Далее вам сообщается имя
владельца файла (vovka), то есть идентификатор лица его создавшего,
и группа, к которой он принадлежит (root). Ну а затем все как
обычно - длина файла в байтах, дата и время его создания и собственно
имя файла. Надеюсь, что пользователи DOS обратят внимание на тот
факт, что в UNIX точка в имени файла лишена своего таинственного
ореола-у файла может быть несколько расширений (Это не блажь.
Несколько расширений используется для обозначения последовательности
операций, которым подвергалась информация, записанная в файле.
Так, в нашем примере, .tar-расширение устанавливаемое одноименной
программой архивации, а .z добавляется программой упаковки gzip.
В результате для распаковки архива вам потребуется вначале распаковать
файл с помощью gunzip, а уже затем разархивировать с помощью tar.
А вот если вам встретится архивный файл с расширением .tgz-придется
воспользоваться программой tar и ее встроенным распаковщиком-прим.ред.).


Давайте рассмотрим, из чего складывается
запись прав доступа. Первый символ показывает тип файла (обычный
файл, каталог или файл, ассоциированный с устройством ввода/вывода).
А вот за ним следует три группы из трех символов, определяющих
права: владельца файла, его группы и всех прочих пользователей.
Для каждой из этих категорий может быть установлен или запрещен
доступ к файлу на чтение (r) , запись-то есть внесение модификаций
и удаление (w) и на выполнение файла (x). Если соответствующая
категория доступа разрешена, она отображается буквой, если нет-дефисом.
Поэтому прочитать права доступа при просмотре записей каталога
оказывается при наличии некоторых навыков очень легко.


Обычно на суперпользователей (таким является,
например, root) описанные выше ограничения не распространяются.
Однако, различные серверы и демоны подобных привилегий не имеют,
а следовательно вы должны не забывать устанавливать для них соответсвующие
права доступа в области "прочие пользователи".


Наряду с защитой от несанкционированного
доступа к файлам, каталогам и устройствам (без каких-либо проблем
вы можете ограничить доступ к каталогам или устройствам, которые
являются так называемыми специальными файлами UNIX) механизм прав
доступа используется и для контроля целостности программного обеспечения
системы. Как вы знаете, немалую часть системных программ составляют
скрипт-файлы, написанные на языке оболочек (shell). Но как отличить
обычный текстовый файл от исполняемого скрипт-файла? Здесь на
помощь приходит атрибут x из записи прав доступа. Если этот атрибут
установлен, вы можете исполнять файл как обычную UNIX-программу,
если же нет...


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




ksh myscript




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