АЛМАТИНСКИЙ ИНСТИТУТ ЭНЕРГЕТИКИ И СВЯЗИ

Кафедра компьютерных технологий

 

 

  

 

Е.Г. Сатимова

ОПЕРАЦИОННЫЕ СИСТЕМЫ

LINUX. Решение задач структурной и функциональной организации.

 

 

 

Алматы 2009

 

 

Операцианные системы: LINUX. Решение задач структурной и функциональной организации. Учебное пособие. АИЭС. Алматы: 2009.-100 с. Библиогр. __ назв., илл. __, табл.__. 

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

В пособии представлены описания лабораторных работ по операционным системам на базе ОС Linux , выполнение которых определяет фундаментальную основу профессионального образования курсу “Операционные системы ”. Приводится методика и порядок выполнения лабораторных работ.

Учебное пособие предназначено для студентов всех форм обучения специальностей 050704 – Вычислительная техника и программное обеспечение и 050703 – Информационные системы. Они могут быть использованы и для организации лабораторных занятий по идентичным темам аналогичных дисциплин, запланированных для других специальностей. 

 

Рекомендована к печати Ученым советом Некоммерческого акционерного общества “Алматинский институт энергетики и связи”.

Ответственный редактор:

 

Рецензенты:

 заведующая кафедрой Информатики КазГУ им.Асфендияова, профессор, доктор технических наук Т.А.Шмыгалева,

 заведующий кафедрой Компьютерных технологий АИЭС, профессор, доктор физико-математических наук З.К.Куралбаев.           

 

ISBN

© Сатимова Е.Г., 2009 г.

Содержание

Введение. Ошибка! Закладка не определена.

ТЕМА 1. Установка ASP Linux v10 в VMware Workstation. 5

Лабораторная работа № 1 к теме «Установка ASP Linux v10». 28

ТЕМА 2. Работа с терминалом. 29

Лабораторная работа № 2 к теме «Работа с терминалом». 43

ТЕМА 3.  Принципы работы в текстовом редакторе vi. 45

Лабораторная работа к теме 3  «Текстовый редактор vi». 53

ТЕМА 4.  Изучение  файловой системы OC LINUX и функций по обработке и управлению данными. 54

Лабораторная  работа № 4 к теме «Изучение  файловой системы OC LINUX и функций по обработке и управлению данными». 68

ТЕМА  5. Управление доступом к данным. 70

Лабораторная  работа № 5  к теме «Управление доступом к данным». 79

ТЕМА 6. Монтирование файловых систем, работа с дисками. 80

Лабораторная работа № 6 к теме «Монтирование файловых систем, работа с дисками». 92

ТЕМА 7. Восстановление пароля администратора при помощи LiveCD дистрибутива. 94

Лабораторная работа №7 к теме «Восстановление пароля администратора при помощи LiveCD дистрибутива. Команда grep. Команда test». 99

ТЕМА 8. SHELL. Создание и выполнение командных файлов в среде ОС LINUX. 100

Лабораторная работа №8 к теме «СОЗДАНИЕ И ВЫПОЛНЕНИЕ КОМАНДНЫХ ФАЙЛОВ В СРЕДЕ ОС LINUX». 108

Список использованной литературы.. 109

 

ВВЕДЕНИЕ

 

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

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

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

В предлагаемом пособии представлены лабораторные задания по операционным системам на базе ОС ASP Linux v10, которая является свободно распространяемой версией UNIX-подобной ОС. Рассмотренные лабораторные работы дают навыки работы с UNIX-подобными ОС на основе командной строки. Предлагаемые лабораторные работы выполняются  посредством организации виртуальных машин Linux с помощью системы VMware Workstation.

Здесь не предполагается каких-то предварительных знаний, за исключением первоначального знакомства с персональным компьютером и MS-DOS. На первый взгляд UNIX очень похож на MS-DOS (в конце концов фрагменты MS-DOS были спроектированы с оглядкой на операционную систему CP/M, которая, в свою очередь, проектировалась с оглядкой на UNIX). Но только при очень уж поверхностном взгляде можно говорить о похожести UNIX и MS-DOS.

ТЕМА 1. Установка ASP Linux v10 в VMware Workstation.

 

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

UNIX - одна из самых популярных в мире операционных систем благодаря тому, что ее сопровождает и распространяет большое число компаний. Linux - свободно распространяемая версия UNIX, первоначально была разработана Линусом Торвальдсом (Linus Torvalds) (torvalds@kruuna.helsinki.fi) в Университете Хельсинки (Финляндия). Linux был создан с помощью многих UNIX-программистов и энтузиастов, тех, кто имеет достаточно навыков и способностей развивать систему. Ядро Linux не использует коды AT&T или какого-либо другого частного источника, и большинство программ Linux разработаны в рамках проекта GNU из Free Software Foundation в Cambridge, Massachusetts. В настоящие время многие компании имеют компьютерные сети, построенные на серверных ОС Linux.

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

Linux достаточно хорошо совместим с рядом стандартов для UNIX на уровне исходных текстов, включая IEEE POSIX.1, System V и BSD. Он создавался имея в виду такую совместимость. Все исходные тексты для Linux, включая ядро, драйверы устройств, библиотеки, пользовательские программы и инструментальные средства распространяются свободно.

Другие специфические внутренние черты Linux включают контроль работ по стандарту POSIX (используемый оболочками, такими как csh и bash), псевдотерминалы (pty), поддержку национальных и стандартных клавиатур динамически загружаемыми драйверами клавиатур. Linux также поддерживает виртуальные консоли (virtual consoles), которые позволяют "переключать экраны" на консоли в текстовом режиме.

Новые пользователи UNIX и Linux могут быть ошеломлены размерами и очевидной сложностью системы, которая предстала перед ними. Существует много причин, по которым люди колеблются пробовать Linux. Самая большая из них — это то, что установка Linux обычно требует от людей выполнения множества сложных и непонятных операций. Рассмотрим подробно процесс установки, ведь, как правило, больше всего вопросов у пользователя возникает на первых этапах знакомства с системой. Так как основная ОС на наших компьютерах Windows, а мы хотим еще одну (или не одну) ОС, используем  программу VMware-workstation 5.5, которая установлена на компьютерах.

1.1  Создание виртуальных компьютеров

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

Виртуальный компьютер — специальная программа, запускаемая, например, в ОС Windows XP  и моделирующая физический компьютер на основе процессора Intel x86. Это бесплатная программа, которая устанавливается также  как любая другая программа Windows. Фактически, вы можете иметь на своем компьютере хоть 10 одновременно загруженных и одновременно работающих операционных систем, при этом практически не теряя в производительности. VMWare эмулирует практически все железо РС.

Основная идея проста — создать эмулятор Linux, работающий под Windows и позволяющий запускать программы этой ОС.

Первый шаг для создания условий установки Linux — это установка VMWare workstation на Windows XP (или другой Windows-подобной ОС). Это бесплатная программа, которая устанавливается также  как любое другое программное обеспечение Windows. Фактически, вы можете иметь на своем компьютере хоть 10 одновременно загруженных и одновременно работающих операционных систем, при этом, практически не теряя в производительности. VMWare эмулирует практически все железо РС.

Операционная система, под управлением которой работает программа VMWare Workstation, называется "основной" системой. Системы, запущенные внутри контейнера виртуальной машины vmware, называются "гостевыми".

Пользоваться VMware достаточно легко.

Установка пакета VMWare Workstation в систему Windows NT выполняется достаточно просто  и не требует каких-то замысловатых телодвижений. Единственное, что нужно, – это изредка нажимать кнопку «Продолжить» при появлении на экране запросов. Думаю, после этого каждый из вас сможет самостоятельно справиться с инсталляцией VMWare Tools в любую Windows-подобную гостевую систему.

Инсталляция VMWare запускается автоматически. Но если этого не произойдет, то нужно будет принудительно выполнить программу setup.exe. Необходимо выбрать полный набор компонентов и нажать «Next».

 

Дальнейший ход установки интереса для нас не представляет  из-за  своей  тривиальности  и  предсказуемости.

По завершении инсталляции нужно будет перезагрузить машину.  Признаком  удачной  установки  будет  появление синего значка VMWare в системном лотке и на панели управления.

 

Представляемые виртуальные машины имеют несколько принципиально различных методов подключения к вашему компьютеру и к внешней сети.

Рассмотрим (как более канонический вариант) схемы подключения VMWare.Существует три основных режима подключения виртуальной машины к сети: Bridged mode, NAT и Host Only, схематически показанные на рисунке.

Bridged mode дает виртуальной машине непосредственный доступ к внешнему интерфейсу хост-машины, на котором виртуальная машина самостоятельно устанавливает или получает через DHCP собственные сетевые параметры - такие как IP-адрес, маршрутизатор по умолчанию и тому подобные. Этот вариант подключения нужно использовать для тех случаев, когда на VM вы устанавливаете серверы, которые должны иметь определенные сетевые адреса.

NAT использует трансляцию адресов исходящего трафика. Напомню, что в этом случае адрес виртуальной машины, полученный по встроенному в NAT DHCP, в момент пересылки на внешний протокол подменяется на адрес хост-машины. При этом запрос помещается в таблицу запросов. Полученные ответы от удаленных систем сверяются с этой таблицей - и по ряду параметров находится соответствие, по типу "в ответ на ваше письмо от такого-то какого-то рады вам сообщить…". При пересылке в VM адрес снова подменяется, так чтобы программа, запросившая информацию, получила пакеты на свой порт и адрес. Таким образом пересылаются запросы и в серверные приложения, к которым пользователь обычно не обращается напрямую, например DNS.

NAT без проблем работает на исходящем трафике, но в случае входящего запроса все запросы приходят на адрес хост-машины, поскольку во внешнем мире все NAT-адреса были представлены одним адресом хост-системы. Для того чтобы виртуальная машина могла получать входящий трафик, на хост-машине необходимо вручную установить правило ретрансляции, смысл которого примерно следующий: "входящие пакеты на порту таком-то переводить в ВМ такую-то на порт такой-то (порт обычно тот же самый)". То есть доступ к серверу можно осуществлять и через NAT, но это требует дополнительной настройки. Для более подробной инструкции по настройке NAT под VMWare ищите "Understanding NAT" в справочном пособии и изучайте файл C:\WINNT\system32\vmnetnat.conf.

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

Все это относится к одному сетевому интерфейсу ВМ, виртуальной сетевой карточке, создаваемой по умолчанию при создании ВМ. Впоследствии  можно создать любое количество таких интерфейсов - и на каждом настроить свой режим, превратив ВМ в маршрутизатор, NAT, DHCP и настроив его, как любой сервер.

Также необходимо сделать замечание относительно памяти. По умолчанию, в VMware действуют ограничения на используемую виртуальными компьютерами память. Так, если на компьютере установлено 256 Мб памяти, то виртуальные компьютеры не могут использовать более 192 Мб. Поскольку, например,  будет необходимо одновременно запускать клиентский и серверный компьютеры, то каждому из них нельзя выделить более 80 Мб (по 16 Мб требуется самой VMware на запуск каждого виртуального компьютера). Для трех виртуальных компьютеров это ограничение опускается до 48 Мб. Изменить лимит по умолчанию можно в меню Edit пункт Application Settings..., вкладка Memory.

 

Запустите VMWare Workstation и нажмите Ctrl+N для создания нового виртуального компьютера. Далее, выбираем следующие параметры:

·                    Virtual machine configuration: Custom;

·                    Guest operation system: Linux;

·                    Virtual machine name: Client;

·                    Location: каталог для виртуального компьютера;

·                    Memory guest size (MB): 64;

·                    Network connection: Use host-only networking;

·                    Disk: Create a new virtual disk;

·                    Disk size (GB): 0,1;

·                    Disk file: Client.vmdk.

Инсталляция операционной системы на вновь созданную виртуальную машину осуществляется точно так же, как инсталляция ОС на физический компьютер.

Второй шаг — это непосредственно инсталляция Linux на виртуальной машине. Установку Linux рассмотрим подробно.

Установка Linux на виртуальную машину очень проста:

Существует множество различных видов Linux с разными программами и настройками. Понять это, может быть, непросто, если вы никогда ранее не пробовали Linux.

Для запуска программы установки с загрузочного диска (CD1) в установках BIOS порядок загрузки должен начинаться с привода CD-ROM. Для установки ОС необходим дистрибутив, состоящий минимум из двух дисков. Вставьте первый диск дистрибутива Linux в устройство чтения дисков и запустите виртуальный сервер. Если загрузка  дистрибутива Linux происходит из образа, необходимо при выключенной виртуальной машине открыть панель конфигурации (VM->Settings…).

Запустите виртуальную машину. Проверьте, что виртуальная машина имеет доступ к дисководу CD-ROM или дисководу гибких дисков (в зависимости от того, какой из них потребуется в процессе инсталляции). Для этого можно воспользоваться вкладкой "Devices" в главном окне утилит VMware Tools.

Вставьте установочный диск в соответствующий дисковод и запустите программу установки.

 

Ctrl-Alt-Ins -Эмулирует для виртуальной машины нажатие Ctrl-Alt-Del.

Чтобы  выйти из  виртуальной машины в VMWare нажмите левые <Alt + Ctrl>, в VirtualPC - правый <Atl>. Эти же комбинации вернут вас к хост-системе из полноэкранного виртуального режима.

После установки диска и перезагрузки компьютера, программа установки предлагает нажать "ESC" для выбора режима монитора.

1.2 Начальный этап установки.

1.2.1 Выбор режима установки.

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

Предварительные этапы

В следующем окне выбираем язык, на котором будут выводиться сообщения в процессе установки - русский.

Затем следует выбрать тип установки.

·   "Быстрая" - автоматическая настройка ASPLinux с обычным набором программ.

·   "Выборочная" - позволяет конфигурировать ASPLinux, выбирать программы, управлять структурой разделов диска.

·   "Обновление" - обновляет существующую версию Linux, основанную на RPM.

Выберем  быструю  установку (для домашней установки и в РГР каждый студент будет делать выборочную установку, что позволит ему самому добавить недостающие пакеты). Указываем носитель, с которого будем устанавливать ASPLinux. В нашем случае это CD-ROM.

1.2.2 Разбиение жёсткого диска.

Выбираем метод назначения дискового пространства. Будьте очень внимательны на этом этапе! Если вы устанавливаете Linux в качестве дополнительной системы, лучше всего выбрать вариант, где можно вручную выбрать жёсткий диск и задать размеры создаваемых разделов.  

Предварительные этапы
Метод назначения разделов.

В этом случае, мы попадаем в панель программы ASPDiskManager, которая помогает создать на винчестере необходимые разделы.

Предварительные этапы
Главное окно ASPDiskManager.

Сначала выбираем в выпадающем меню физический диск, на который будет производиться установка. Чтобы не запутаться и выбрать нужный диск, обратите внимание на прямоугольную область чуть ниже. В ней при выборе диска будут показываться имеющиеся на нём разделы, кроме того, они будут показаны в таблице. В Linux приняты следующие имена накопителей:

·                    hda - первый диск (master), на канале IDE1;

·                    hdb - второй диск (slave), на канале IDE1;

·                    hdc - первый диск (master), на канале IDE2;

·                    hdd - второй диск (slave), на канале IDE2;

·                    hde, hdf ... - диски на дополнительных контроллерах IDE;

·                    sda, sdb ... - диски на SCSI-интерфейсе.

Многие IDE- и SATA-контроллеры распознаются в системе как SCSI-устройства, поэтому, как и в нашем случае, вы можете видеть название диска "sda". Для установки Linux необходимо наличие двух разделов, поэтому рассмотрим этот вариант. Первый раздел в начале диска будет использоваться в качестве файла подкачки (swap). После нажатия на кнопку "Создать", задаём параметры раздела. В случае, когда компьютер должен выполнить программу, размер которой превышает физический объем оперативной памяти, современные операционные системы прибегают к технологии подкачки, или своппинга. При этом блоки памяти временно сохраняются на жестком диске, а освободившийся объем оперативной памяти используется для обработки другой информации.

 

Необходимо выбрать размер диска и тип файловой системы, в нашем случае - swap. Существуют разные рекомендации по выбору размера swap.

 Swap означает виртуальную память (точнее способ её представления), или же означает подкачку данных с диска. Один из механизмов реализации виртуальной памяти, при котором отдельные запущенные процессы (обычно неактивные) перемещаются из ОЗУ на жёсткий диск, освобождая ОЗУ для загрузки других процессов. Основное отличие этого механизма от страничного заключается в том, что процессы перемещаются между ОЗУ и жестким диском целиком, поэтому иногда некоторые процессы могут полностью отсутствовать в ОЗУ. При наступлении условий активизации процесса он возвращается диспетчером памяти в ОЗУ.

Существуют различные алгоритмы выбора процессов на загрузку и выгрузку, а также различные способы выделения оперативной и дисковой памяти загружаемому процессу. Для старых компьютеров обычно выбирают величину в полтора-два раза больше объёма оперативной памяти. Если у вас современный компьютер (ОЗУ > 512 Мбайт) и вы не собираетесь решать на нём специфичные задачи, то объём можно сделать даже меньше, например 256 Мбайт. После нажатия кнопки "OK" попадаем в основное окно менеджера дисков.

Предварительные этапы 

Создаём SWAP-раздел.    

 Предварительные этапы
 Вид диска, после создания swap-раздела.

Создаём таким же образом основной раздел для системы, который должен быть первичным. Первичный раздел (англ. primary partition) обязательно должен быть на физическом диске. Этот раздел всегда содержит либо одну файловую систему, либо другие логические разделы. На физическом диске может быть до четырёх первичных разделов. Оптимальным вариантом файловой системы будет Ext3, которая по своим качественным свойствам подобна NTFS. Не забываем задать точку монтирования "/".

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

Предварительные этапы

Создание основного раздела для системы. 

   Предварительные этапы
      Окончательный вид разделов на жёстком диске.

1.2.3 Установка пакетов

Нажав на кнопку "Далее" переходим на этап выбора пакетов (программ). После расчёта размеров пакетов попадаем в окно выбора пакетов. На выбор предлагаются:

·                    "Типовая установка" - требует около 2 Гбайт;

·                    "Сервер" - около 1 Гбайт;

·                    "Разработка" - около 2,5 Гбайт;

·                    "Минимальная установка" - примерно 250 Мбайт;

·                    "Пользовательский" - пакеты выбирает пользователь.

Установка пакетов
Выбор типа установки пакетов.

Выбираем "Типовую установку" (для домашней установки и в РГР каждый студент будет делать установку сервера, что позволит ему подготовить выполнение 3 РГР).                                                 
       После запуска установки остаётся наблюдать, как система, кроме самой себя, устанавливает ещё целую массу полезных программ.

1.2.4 Выбор загрузчика ASPLinux.

  После окончания установки пакетов предоставляется возможность выбрать программу-загрузчик. Эта программа будет выбирать операционную систему при загрузке компьютера. Разработчики рекомендуют использовать ОС ASPLoader, он будет понятен начинающему пользователю даже на первых этапах знакомства с системой. В свою очередь, общепризнанным авторитетом считается загрузчик LILO (Linux Loader), и причиной тому - большое число предоставляемых настроек и высокая популярность. При использовании LILO это делается с помощью установщика карты, который считывает конфигурационный файл /etc/lilo.conf, чтобы определить доступные системы. Этот файл содержит, в частности, информацию о загрузочном разделе и расположении ядра для каждой из таких систем, а также дополнительные параметры загрузки, если они заданы.

Установка пакетов

1.2.5  Настройка сети

На этапе настройке сети большинство сетевых карт будут определены автоматически.

Настройка сети
Сетевая плата.

Нажимаем на кнопку "Далее" и попадаем в настройку основных параметров сети. Если у вас есть сетевая карта, но нет сети, то имеет смысл снять галочку с опции "Активировать при загрузке".

Настройка сети
Настройка сети.

На этом этапе также можно настроить межсетевой экран (файрвол или брандмауэр), выбрав разрешённые сетевые сервисы или задав номера портов.

Настройка сети
Настройка брандмауэра.

1.2.6  Настройка видеосистемы

Приступаем к настройке системы X Window System. Выбираем модель монитора.

Настройка видеосистемы
Выбор монитора.

Программа установки автоматически распознаёт видеокарту. Остаётся проверить объём памяти, разрешение монитора и цветовую палитру.

Настройка видеосистемы
Выбор видеокарты.

После выбора параметров обязательно необходимо протестировать выбранные настройки с помощью кнопки "Тестировать".

Настройка видеосистемы
Тестирование настроек.

Если настройки выполнены верно, вы увидите соответствующее сообщение.

1.2.7  Локализация

Выбираем язык системы, раскладку клавиатуры и сочетание клавиш для переключения языка.

Локализация

   Выбор языка системы.                                       

       Локализация        

Установка даты и времени.


         Затем следует задать пароль администратора. Рекомендуется для большей безопасности ОС вводить число символов от 7 до 12. Существует хороший способ придумывания и запоминания длинных паролей. Берём два любимых слова, например: "тёплое лето" и набираем их слитно в английской раскладке. Тем самым получаем неплохой пароль из 10-ти символов: "n`gkjtktnj", который легко набирать, и он хорошо запоминается. Для большей безопасности в пароль также можно добавить несколько цифр или часть символов сделать заглавными. Администратор в системе "Линукс" всегда имеет имя "root", поэтому остаётся только задать пароль и добавить хотя бы одного пользователя.

Локализация
Задание пароля администратора.

На этом процесс установки заканчивается. После нажатия на кнопку перезагрузки CD-ROM отдаст диск, и система будет перезагружена. Установка системы на первую конфигурацию у нас заняла 27 минут. Кроме системы, мы установили целый набор программ. Общий объём установки составил около 2 гигабайт.

1.2.8  Выбор рабочего стола.

 

Предлагается выбор между KDE и GNOME

 KDE (от английского  K Desktop Environment) —свободная среда для рабочего стола для UNIX-подобных операционных систем. Построена на основе кросс-платформенного  инструментария разработки пользовательского интерфейса Qt. Работает преимущественно под UNIX -подобными операзионными системами, которые используют графическую подсистему X Window System. Новое поколение технологии KDE 4 должно работать на Microsoft Windows и Mac OS x, по состоянию на январь 2008 основные библиотеки среды находятся на этапе тестирования.

В состав KDE входит набор тесно интегрированных между собой программ для выполнения повседневной работы. Также в рамках проекта разрабатываются интегрированная среда разработки KDevelope и офисный пакет KOffice. Использует почтовый клиент Kontact, файловый менеджер Konqeror, а так же предлагает веб–браузеры FireFox и Konqeror.

Талисман KDE — зелёный дракон Konqi.

GNOME —от английского GNU Network Object Model Environment («сетевая объектная среда GNU»),- свободная среда рабочего стола для UNIX-подобных операционных систем. GNOME является частью и официальной рабочей средой проекта GNU.

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

1.3  Первый запуск

После перезагрузки компьютера сначала запускается менеджер загрузки ASPLoader (если вы выбрали его при установке). В нём будет предложено указать операционную систему для загрузки. Если на компьютере была установлена ещё одна система, она тоже должна появиться в меню выбора.

Нажмите на картинку для увеличения!
Менеджер загрузки.

ASPLoader отличается от LILO тем, что предоставляет возможность настройки системы по умолчанию в самом менеджере. По умолчанию запускается Linux, поэтому вы увидите запуск ядра системы.

Далее включится графический режим X Window и будет показан процесс запуска сервисов, которые в Linux называются демонами. Демоны - это процессы, выполняемые автономно. Они постоянно работают в фоновом режиме. Демоны обычно запускаются одновременно с системой и завершают свою работу вместе с ней. Демон обеспечивает работу системных служб и доступен в каждый момент времени нескольким задачам и пользователям.
Вы получили доступ к ресурсам ОС LINUX. После запуска демонов появится экран входа в систему. 

1.4  Регистрация пользователя в системе

Для  входа  пользователя  с  терминала  в многопользовательскую

операционную систему LINUX необходимо зарегистрироваться в качестве пользователя.

Вход в систему производится в диалоге, когда система запрашивает имя пользователя и его пароль.

 

Login:  имя

Password: пароль

 

Внимательно наберите пароль, установленный для вас системным администратором, и нажмите клавишу <Enter>. Вводимый пароль на экране не отображается - набирайте его аккуратно! Если имя или пароль  указаны неверно,  сообщение  login повторяется.  Значение  пароля  проверяется  в  системном  файле  password, где приводятся и другие сведения о пользователях. После правильного ответа появляется приветствие LINUX и приглашение:

 

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

# -  приглашение для суперпользователя (root) ,

$ или [имя@localhost dir_name]  - для обычных пользователей.

 

Поле идентификации пользователя и определения его прав появляется приглашение:

[user_name@localhost dir_name]$  или

[root@localhost dir_name]#,  если в систему вошел  суперпользователь.

 

В сеансе работы с Linux Вашим текущим (домашним) каталогом является каталог: /home/имя, где имя - Ваше сетевое имя. К этому каталогу Вы имеете права чтения, записи, выполнения. Вы не имеете права записи к каталогам, не являющимся подкаталогами вашего домашнего каталога, если их владельцы (или системный администратор) не дали Вам соответствующих прав. Не забывайте, что в Unix/Linux символ "слэш" - разделитель имен каталогов наклонен вправо: '/'!

1.5  Завершение работы ASPLinux                      

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

Для того чтобы завершить сеанс работы ASPLinux, выполните следующие действия:

1.     Нажмите на значок Завершение работы, расположенный в Панели, или выберите соответствующий пункт в Главном меню.

2.     В открывшемся окне Завершить работу? выберите в поле Действие пункт Остановить, если Вы хотите завершить работу системы и всех приложений и выключить компьютер, или Перезапустить, если Вы хотите, после завершения работы системы и приложений перезагрузить компьютер. После чего нажмите на кнопку Да.

3.     Откроется окно, в котором необходимо в поле ввода ввести пароль пользователя, сеанс которого завершается. После ввода пароля нажмите на кнопку OK.

 

Самый безопасный выход из системы в командной строке

Для завершения работы ОС и всех приложений и перезагрузки компьютера нажмите на клавиши [Ctrl]-[Alt]-[Del] или введите команду reboot. В последнем случае на экран будет выведено приглашение

        Password:
и Вы должны будете ввести пароль пользователя, под именем которого Вы работаете. Для того чтобы прекратить работу и выключить компьютер, введите команду halt, а далее действуйте как в случае с командой reboot.

Стандартно в Linux можно использовать команду

exit - окончание сеанса пользователя. 

 

1.6  Файловый менеджер Midnight Commander(mc) .

Программа Midnight Commander= мощный, полифункциональный менеджер файлов, работающий в текстовом режиме (т.е. в текстовой консоли или терминале). Эта программа очень похожа на двухпанельные менеджеры файлов Norton Commander для MS-DOS, FAR и Windows Commander для Windows, а по набору функций не уступает лучшим из них. Midnight Commander можно рекомендовать всем пользователям ASPLinux, ранее применявшим вышеуказанные файловые менеджеры. Приведенное ниже краткое описание рассчитано на пользователей, которые уже знакомы с одним из указанных менеджеров файлов.

Интерфейс mc

Внешне программа представляет собой два вертикальных окна (панели), делящими почти весь экран на две половины.


Экран mc

Одна из панелей (на приведенном рисунке левая) является активной, другая= пассивной. Большинство операций выполняется на активной панели, однако операция копирования (и схожие с нею операции перемещения и создания символической ссылки) выполняются с использованием обеих панелей. На активной панели отображается текущий каталог. Для того чтобы сделать активную панель пассивной и наоборот (без изменения содержимого), следует нажать на клавишу [Tab].

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

Верхняя строка (расположенная над панелями)= это строка главного меню. Для перехода в эту строку следует нажать на клавишу [F9]. Для завершения работы программы служит клавиша [F10], для получения контекстно-зависимой справки= клавиша [F1].

Файловые операции mc

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

·   Установить текстовый курсор на файл или каталог и нажать на клавишу [Ins] (при этом не выделенный ранее файл выделяется, а для выделенного ранее= выделение отменяется). То же самое произойдет, если по названию объекта щелкнуть правой клавишей мыши.

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

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

 

Для того чтобы удалить объект или выделенную группу, нажмите на клавишу [F8] или соответствующую кнопку (далее эта альтернативность для краткости не оговаривается). Для того чтобы скопировать объект или выделенную группу в каталог, открытый на пассивной панели, нажмите на клавишу [F5] (для перемещения= [F6]). При этом откроется окно подтверждения операции, в поле ввода которого можно ввести новое имя объекта, в противном случае он будет скопирован (перемещен) под старым именем. Если Вы перемещаете файл , указывая для него другое имя в тот же каталог, то, фактически, файл не перемещается, а только переименовывается.

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

1.7  Несколько слов о достоинствах Linux

1.     В Linux грамотный пользователь может все или почти все настроить как администратор, все или почти все исправить либо используя исправления в новых версиях в Интернете, либо даже сам в исходных текстах и скриптах;

2.     Если вы администратор с головой, но что-то вам не понятно в поведении системы, ты можно во всем разобраться, а не гадать на кофейной гуще что с чем сочетается и что на что влияет (w2k ведь закрытая система, а API часто слишком абстрактны);

3.     Практически всегда у систем на базе Linux большой запас на модернизацию (так как меньше требования к ресурсам), так что ваша система будет долго жить пока на соседнем сервере будут мелькать WinNNNN;

4.     У Linux хорошая родословная (более 30 лет сущ. Unix) и вы станете членом уникального мирового сообщества специалистов ИТ (ведь Unix был свободен и развивался именно в университетской среде);

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

6.     Если вы  хотите все сделать быстро и   закончить работу - то Win, там все быстро: если что-то не так - переустановил и порядок. Если основательно и надолго - то лучше Unix (linux, так как он быстро догоняет современный уровень развития ИТ);

7.     Если под Linux нет прикладного софта, очень вероятно что скоро этот софт будет туда портирован коммерческим производителе. Говоря о стабильности, я меньше всего имею ввиду техническую стабильность работы ОС. Я имею ввиду поддержку производителем - пример: WinNT4 уже не поддерживается производителем. Чувствуешь - произвели систему, затем ее продали, изменили название в новой версии и сформулировали правило:"Сопровождение прекращается для -2 версии";

8.      Если вы администратор Linux (Unux), ваши знания с годами только накапливаются. А вот для Win-администратора это не так, даже хорошо зная WinNT, ты начнешь плавать, так как некоторых базовых средств управления NT ты можешь не найти в Win2000-2008;

9.      По мере достижения технического паритета для админов становятся более важны психологические аспекты (свобода/несвобода, закрытость/открытость). Некоторым людям по их психологическому складу ближе идеология Microsoft: покупка когда тебя вынудили и все можно настроить кнопками и не разбираться в тонкостях

Лабораторная работа № 1 к теме «Установка ASP Linux v10».

 

1.             Цель работы:

 -  научить студента пользоваться  программой VMware-workstation;

-  научить студента устанавливать любую ОС на примере ASP Linux;

-  дать начальное понятие об устройстве файловой системы в UNIX, о полных и относительных именах файлов;

-       научить студента входить в систему;

-       изучить понятия login'а & password'а.

2.     Рабочее задание

1.     ознакомиться с   программой VMware-workstation, которая установлена на компьютерах.

2.     устанавить  ОС на примере ASP Linux v10 в виртуальной машине следуя вышеизложенным инструкциям.

3.     Оборудование рабочего места:

-       компьютер с загруженной программной средой VMware Workstation v5.5;

-       дистрибутивы ОС ASP Linux v10.

                  

                           

ТЕМА 2. Работа с терминалом.

2.1 Командная строка. Краткие сведения и практические рекомендации

 

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

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

Чтобы получить командную строку, пользователь должен войти в систему и запустить программу, которая будет принимать его команды и передавать их на выполнение — командную оболочку (её ещё называют интерпретатор командной строки, просто оболочка, по-английски «shell»).

Получить командную строку можно многими способами. Самый простой и универсальный — зарегистрироваться на одной из первых шести виртуальных консолей: после входа в систему запустится командная оболочка и появится приглашение командной строки. Не выходя из графической среды можно получить командную строку при помощи любого эмулятора терминала — они перечислены в главном меню в разделе «Терминалы». Для пользователей графической среды KDE командная строка доступна также по нажатию F2 (функция «ввести команду»).

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

 

Когда упоминается команда, которую нужно выполнить в Linux, всегда имеется в виду команда, которую нужно ввести в командной строке.

Командная строка начинается приглашением — это подсказка, свидетельствующая о том, что система готова принимать команды пользователя. В процессе выполнения команды система может вывести те или иные сообщения, а когда выполнение завершается — вновь выводится приглашение командной строки. Приглашение может быть оформлено по-разному, но чаще всего оно заканчивается символом “$”. В примерах в документации этим символом условно обозначается командная строка: всё, что следует после него и до конца строки — это и есть команда, которую нужно ввести. Пока не нажат <Enter>, набранную команду можно редактировать.

2.2 Базовые понятия UNIX.

 

В операционной системе UNIX существует три базовых понятия: "процесс","файл" и "пользователь". Понятие "процесс" характеризует динамическую сторону происходящего в вычислительной системе. Понятие "файл" характеризует статическую сторону вычислительной системы. Все файлы, которые доступны операционной системе UNIX, как и в уже известных вам операционных системах, объединяются в древовидную логическую структуру. Файлы могут объединяться в каталоги или директории. Не существует файлов, которые не входили бы в состав какой-либо директории. Директории в свою очередь могут входить в состав других директорий. Допускается существование пустых директорий, в которые не входит ни один другой файл, и ни одна другая директория. Среди всех директорий существует только одна директория, которая не входит в состав других директорий - ее принято называть корневой. На настоящем уровне нашего незнания UNIX мы можем заключить, что в файловой системе UNIX присутствует, по крайней мере, 2 типа файлов: обычные файлы, которые могут содержать тексты программ, исполняемый код, данные и т.д. - их принято называть регулярными файлами, и директории.

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

Полные имена файлов могут включать в себя достаточно много имен директорий и быть очень длинными, с ними не всегда удобно работать. Тогда на помощь нам могут прийти понятия текущей или рабочей директории и относительного имени файла.

 Узнать, какая директория является текущей для вашего командного интерпретатора, можно с помощью команды операционной системы pwd. При движении по направлению к корневому каталогу каждый новый встретившийся узел будем обозначать двумя символами "точка" - "..", а при движении по направлению от корневого каталога будем записывать имя встретившегося узла. Разделим обозначения, относящиеся к разным узлам в этой записи символами "/". Полученную строку принято называть относительным именем файла. Относительные имена файлов меняются при смене рабочего каталога.

        Так, в нашем примере, если рабочий каталог – это директория "/d" , то для файла "/usr/b/aaa.c" относительным именем будет "../usr/b/aaa.c", а если рабочий каталог – это директория "/usr/b", то его относительное имя – "ааа.с".

Для полноты картины имя текущего каталога можно вставлять в относительное имя файла, обозначая текущий каталог одиночным символом "точка" – ".". Тогда наши относительные имена будут выглядеть как "./../usr/b/aaa.c" и "./aaa.c" соответственно.

 Для каждого нового пользователя в системе заводится специальная директория, которая становится текущей сразу после входа в систему. Эта директория получила название домашней директории пользователя.

Формат команд в ОС LINUX следующий:

имя команды [аргументы] [параметры] [метасимволы]

Имя  команды  может  содержать  любое  допустимое  имя  файла;

аргументы - одна или несколько букв со знаком минус (-); параметры -  передаваемые  значения  для  обработки;  метасимволы  интерпретируются  как  специальные  операции.  В  квадратных  скобках  указываются необязательные части команд.

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

Пользоваться утилитой man достаточно просто – наберите команду            man имя,  где имя – это имя интересующей вас команды, утилиты, системного вызова, библиотечной функции или файла. Попробуйте с ее помощью посмотреть информацию о команде pwd. Пролистать страницу полученного описания, если оно все не поместилось на экране, можно нажав клавишу <пробел>. Для прокрутки одной строки воспользуйтесь клавишей <Enter>. Вернуться на страницу назад позволит одновременное нажатие клавиш <Ctrl> и <b>. Выйти из режима просмотра информации можно нажатием клавиши <q>. Иногда имена команд интерпретатора и системных вызовов или какие-либо еще имена совпадают. Тогда для правильного выбора интересующей вас информации необходимо задать утилите man категорию, к которой относится интересующая вас информация (номер раздела).

Деление информации по категориям может слегка отличаться от одной версии UNIX к другой. В Linux, например, принято следующее разделение:

-      Исполняемые файлы или команды интерпретатора.

-      Системные вызовы.

-      Библиотечные функции.

-      Специальные файлы (обычно файлы устройств) –

-      Формат системных файлов и принятые соглашения.

-      Игры (обычно отсутствуют).

-      Макропакеты и утилиты - такие как сам man.

-      Команды системного администратора.

-      Подпрограммы ядра (нестандартный раздел).

Если вы знаете раздел, к которому относится информация, то утилиту man можно вызвать в Linux с дополнительным параметром

  man   номер_раздела имя.

Для получения точной информации о разбиении на разделы, форме указания номера раздела и дополнительных возможностях утилиты man наберите команду man man .

2.3  Работа с пользователями

Работая в окне терминала, созданном описанными способами, Вы имеете права того пользователя, под именем которого Вы работали в GNOME при запуске терминала. Однако Вы можете предоставить пользователю, от имени которого выполняются задания в окне терминала, права суперпользователя. Для этого введите в командной строке окна терминала команду su (сокращение от слова SuperUser) и затем в ответ на приглашение Password:= пароль суперпользователя. При вводе корректного пароля приглашение командной строки

[user_name@localhost dir_name]$
изменится на
[root@localhost dir_name]#

Настоятельно рекомендуется все графические задачи, требующие прав суперпользователя, запускать именно так, не входя в графическую оболочку с правами суперпользователя.

 Для получения справки по командам и программам служат инструкции man и info. Некоторые разделы справки даны на английском языке.

Система Linux сохраняет различную информацию о каждом пользователе, которую можно получить, используя перечисленные ниже команды:

username - уникальный идентификатор, присваиваемый каждому пользователю в системе. Примеры имен пользователей larry, karl и mdw. Могут использоваться буквы и цифры, а также нижнее подчеркивание и точка. Обычно имена пользователей ограничиваются восемью символами.

user - ID (или UID) - идентификатор пользователя - уникальный номер, присваиваемый каждому пользователю системы. Система обычно отслеживает идентификаторы пользователей, а не имена.

group - ID (или GID) - идентификатор группы это идентификатор группы пользователя. В Разделе 3.9 мы обсуждали права группы; каждый пользователь принадлежит к одной или более группам, определенных системным администратором. Подробнее об этом ниже.

password - Система также хранит в зашифрованном виде пароль пользователя. Команда passwd используется для установки и изменения пароля.

full name - "Полное имя" или "действительное имя" хранится вместе с именем пользователя. Например, пользователь schmoj может иметь действительное имя ``Joe Schmo'' (прим. переводчика: неужели для английского уха оно звучит также красиво, как для русского).

home directory  - Домашний каталог - это каталог, в который пользователь начально попадает при входе в систему. Каждый пользователь должен иметь свой собственный домашний каталог, обычно ниже /home.

login shell  - Исходный shell - это shell, который запускается для пользователя при его входе в систему. Это, например, может быть /bin/bash и /bin/tcsh.

                            who [am i] - получение информации о работающих пользователях. В  квадратных  скобках  указываются  аргументы  команды,  которые можно  опустить. Ответ  представляется  в  виде  таблицы,  которая  содержит следующую информацию:

 - идентификатор пользователя;

 - идентификатор терминала;

 - дата подключения;

 - время подключения.

                            quota - показывает лимит дискового пространства для пользователей.

quota [-g] [-u] [-v | -q]

quota [-u] [-v | -q] user

quota [-g] [-v | -q] group

                   Команда quota показывает установленные лимиты по использованию дискового пространства для пользователей. Только привилегированный пользователь может посмотреть установленные квоты для конкретных пользователей.

Файл /etc/passwd содержит эту информацию про пользователей. Каждая строка этого файла содержит информацию об одном пользователе; формат строки имеет вид:

username:encrypted_password:UID:GID:full_name:home_directory:login_shell

Например, это может выглядеть так:

student:Xv8Q981g71oKK:102:100:Axel Kim:/home/ student:/bin/bash

 

Как видно, первое поле `` student:'' - имя пользователя. Следующее поле ``Xv8Q981g71oKK'' - зашифрованный пароль. Пароли в читаемом виде в системе не хранятся. Сами пароли шифруются как секретные ключи. Другими словами, вы должны знать пароль, чтобы его расшифровать. Эта форма шифрации достаточно надежна.

Некоторые системы Linux используют "теневой пароль", в котором информация о паролях хранится в файле /etc/shadow. Поскольку /etc/passwd всем доступен, /etc/shadow обеспечивает дополнительный уровень секретности своей недоступностью. Теневой пароль обеспечивает и некоторые другие свойства, вроде прекращения действия пароля и т.д.; мы здесь не будем вдаваться в эти тонкости.

2.4  Работа с  группой

Каждый пользователь принадлежит к одной или более группам. Единственное значение группы замыкается на права доступа к файлу. Каждый файл имеет "групповое владение" (``group ownership''), то есть хранит права доступа, которые определяют, как члены группы могут обращаться с файлом.Существует несколько групп, определяемых системой, вроде bin, mail и sys. Пользователи не могут принадлежать к какой-либо из этих групп. Эти группы используются для системных файлов. А пользователи, наоборот, принадлежат к специальной группе, например users. Можно поддерживать несколько групп пользователей, например student, staff и faculty.

Файл /etc/group содержит информацию о группах. Формат каждой строки следующий

    group name:password:GID:other members

Примерами групп могут быть:

       root:*:0:
               users:*:100:mdw,axel
               guest:*:200:
               other:*:250:student

Первая группа, root, специальная системная группа зарезервированная для root. Следующая группа, users, для обычных пользователей. Она имеет идентификатор группы (GID) 100. К этой группе имеют доступ пользователи mdw и axel. Помните, что в /etc/passwd  каждый пользователь получил (выдаваемый по умолчанию) GID. Но пользователь может принадлежать более, чем к одной группе, путем добавления имен пользователей в другие группы (в строки файла /etc/group). Команда groups перечисляет, в какие группы вы входите.

Третья группа, guest, для гостей, а other для "других" пользователей. Пользователь student имеет доступ и в эту группу.

Поле "пароль" в /etc/group редко используется. Иногда оно используется для установления пароля на доступ к группе. Это редко бывает нужно. Для защиты привилегированных групп от обычных пользователей (с помощью команды newgroup) установите в поле пароля звездочку ("*").

Команды addgroup или groupadd могут быть использованы для добавления групп в вашу систему. Обычно легче просто самому добавить запись в /etc/group, поскольку не требуется других настроек при добавлении группы. Для удаления группы просто удалите соответствующую запись в /etc/group.

 

2.5 Системные команды

 

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

echo good morning

и  нажмите  клавишу  Enter.  На  экране  появится  приветствие "good morning"  –  аргумент  команды  echo. Командный  интерпретатор  shell вызвал команду echo, реализованную в виде программы на языке СИ, и  передал  ей  аргументы.  После  этого  интерпретатор  команд  вывел  знак-приглашение. Синтаксис команды echo:

echo  [-n]  [arg1]  [arg2]  [arg3]...

Команда  помещает  в  стандартный  вывод  свои  аргументы,  разделенные пробелами и завершаемые символом перевода строки. При наличии флага -n символ перевода строки исключается.

who [am i] - получение информации о работающих пользователях.

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

 - идентификатор пользователя;

 - идентификатор терминала;

 - дата подключения;

 - время подключения.

date - вывод на экран текущей даты и текущего времени.

cal [[месяц]год] - календарь;  если календарь не помещается на одном  экране,  то  используется  команда  cal  год | more  и  клавишей пробела производится постраничный вывод информации.

man <название  команды> -  вызов  электронного  справочника  об указанной команде (от слова manual). Выход из справочника - нажатие клавиши Q.

Команда  man  man  сообщает  информацию  о  том,  как  пользоваться справочником.

tty - сообщение имени специального файла стандартного вывода, соответствующего терминалу пользователя.

cat <имя файла> - вывод содержимого файла на экран. Команда  cat > text.1  создает новый файл  с именем text.1, который можно  заполнить  символьными  строками,  вводя  их  с  клавиатуры.  Нажатие  клавиши  Enter  создает  новую  строку.  Завершение  ввода -  нажатие  Ctrl - d.  Команда  cat  text.1 > text.2  пересылает  содержимое  файла text.1  в  файл text.2.  Слияние  файлов  осуществляется  командой  cat  text.1 text.2 > text.3.

ls [-alrstu] [имя] - вывод  содержимого каталога на  экран. Если  аргумент не указан, выдается содержимое текущего каталога.

rm <имя файла> - удаление файла (файлов).

Команда  rm text.1 text.2 text.3 удаляет файлы text.1, text.2, text.3. Другие варианты этой  команды - rm text.[123] или rm text.[1-3].

wc [имя файла] - вывод числа строк, слов и символов в файле.

clear - очистка экрана.

mc - вызов файлового менеджера (программы - оболочки) Midnight Commander, аналогичного Norton Commander.

sort [-dr] - сортировка входных файлов и вывод результата на  экран.

find / _name [имя файла]- Поиск определенного файла на всем диске с ОС Linux

  

Любая программа (зависшая или нет) может быть уничтожена. Программа в текстовом режиме часто может быть уничтожена нажатием <Ctrl><c>. Эта комбинация клавиш не сработает для больших приложений, которые блокируют <Ctrl><c>, поэтому и не используется. Вы можете послать программу в фоновый режим работы, нажав <Ctrl><z> (нет гарантий, что это сработает) или переключиться на другой терминал, например нажав <Ctrl><Alt><F2> и зарегистрироваться под тем же именем, что и пользователь, у которого зависла программа (это сработает всегда). Теперь когда вы снова управляете компьютером, найдите программу, которую хотите прервать, например, так:

                 ps

         Эта команда выводит список программ, которые сейчас запущены данным пользователем. В выводе ps можно найти идентификатор процесса (PID) зависшей программы и  уничтожить его. Например:

               kill 123   или    kill –9 1234 

 

2.6  Команды для работы с директорией

 

Для смены текущей директории командного интерпретатора можно воспользоваться командой cd от (change directory). Для этого необходимо набрать команду в виде

 сd   имя_директории,

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

 

Если же в качестве параметра задать полное или относительное имя директории:

 ls  имя_директории,

 она распечатает список файлов в указанной директории. Посмотреть полный список файлов можно, дополнительно указав команде ls опцию -a, т.е. набрав ее в виде

          ls -a  или     ls -a имя_директории

 

Формат команды ls :

             ls [acdfgilqrstv CFR] namedir - вывод содержимого каталога; если в качестве namedir указано имя файла, то выдается вся информация об этом файле. Значения популярных аргументов:

- l –- список включает всю информацию о файлах;

- t – сортировка по времени модификации файлов;

- a – в список включаются все файлы, в том числе и те, которые

начинаются с точки;

- s – размеры файлов указываются в блоках;

- d – вывести имя самого каталога, но не содержимое.

 

Для  получения файла, содержащего список всех файлов текущей директории, необходимо  выполните команду ls -a с перенаправлением выходных данных

   ls  -a > новый_файл

 

      Для создания новой поддиректории используется команда mkdir (сокращение от make directory). В простейшем виде команда выглядит следующим образом:

mkdir имя_директории, где имя_директории - полное или относительное имя создаваемой директории. У команды mkdir имеется набор опций, описание которых можно посмотреть с помощью утилиты man.

Для копирования файлов может быть использована команда cp (сокращение от copy). Команда сp умеет копировать не только отдельный файл, но и набор файлов, и даже целиком директорию вместе со всеми входящими в нее поддиректориями (рекурсивное копирование).

Для удаления файлов или директорий применяется команда rm (сокращение от remove). При удалении несколько регулярных файлов, вид команды rm выглядит следующим образом:

rm файл1 файл2 ... файлN, где файл1, файл2, ... файлN - полные или относительные имена регулярных файлов, которые вы хотите удалить. Вместо непосредственно имен файлов могут использоваться их шаблоны. Если вы хотите удалить одну или несколько директорий вместе с их содержимым (рекурсивное удаление), то к команде добавляется опция -r:

rm -r дир1 дир2 ... дирN, где дир1, дир2, ... дирN - полные или относительные имена директорий, которые вы хотите удалить. Вместо непосредственно имен директорий также могут использоваться их шаблоны. Командой удаления файлов и директорий следует пользоваться с осторожностью. Удаленную информацию восстановить невозможно.

Для переименования файла или его перемещения в другой каталог применяется команда mv (сокращение от move). Для задания имен перемещаемых файлов в ней тоже можно использовать их шаблоны

 

2.7  Стандартный ввод/вывод и их перенаправление

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

Существуют всего четыре символа перенаправления стандартного ввода/вывода:

>  -  используется для перенаправления стандартного вывода команды в 4)аил. Например, cat > file запишет выводимую командой cat информацию в файл file.

<  -  используется для переназначения стандартного ввода команды. Например, при выполнении команды cat < file в качестве стандартного ввода cat используется не клавиатура, а файл file.

>>  -  используется для дописывания стандартного вывода команды в конец существующего файла. Например, cat » file допишет выводимую командой cat информацию в конец файла file.

| - программный канал - является символом потока (конвейер). Он используется, когда необходимо передать стандартный вывод одной команды на стандартный ввод другой. Например,  cat | grep отправит стандартный вывод команды cat на стандартный ввод команды grep. (Потоки более подробно обсуждаются ниже в этой главе.)

 

Пример : [user]$ cat myfile | grep Linux | wc -l

Эта строка означает, что вывод команды cat, т. е. текст из файла myfile, будет направлен на вход команды grep, которая выделит только строки, содержащие слово "Linux". Вывод команды grep будет, в свою очередь, направлен на вход команды wc -l, которая подсчитает число таких строк.

Группирование команд

 

Группы команд или сложные команды могут формироваться с  помощью специальных символов (метасимволов):

& - процесс выполняется в фоновом режиме, не дожидаясь  окончания предыдущих процессов;

? - шаблон, распространяется только на один символ;

* - шаблон, распространяется на все оставшиеся символы;

; - если в списке команд команды отделяются друг от друга точкой с запятой, то они выполняются друг за другом;

&& - эта конструкция между командами означает, что последующая команда выполняется только при нормальном завершении  предыдущей команды ( код возврата 0 );

|| - последующая команда выполняется только, если не выполнилась предыдущая команда ( код возврата 1 );

() - группирование команд в скобки;

{ } - группирование команд с объединенным выводом;

[ ] - указание диапазона или явное перечисление ( без запятых).

 

Примеры использования метасимволов:

 

$echo  *

$ls  F*E

$ls  */memo

$who | wc - подсчет количества работающих пользователей командой wс (word count - счет слов);

$cat text.1 > text.2 - содержимое файла text.1 пересылается в файл  text.2;

$mail student < file.txt - электронная почта передает файл file.txt  всем пользователям, перечисленным в командной строке;

$cat text.1,text.2 - просматриваются файлы text.1 и text.2;

$cat text.1 >> text.2 - добавление файла text.1 в конец файла  text.2;

$cc primer.c & - трансляция СИ - программы в фоновом режиме.   Имя выполняемой программы по умолчанию a.out.

$cc -o primer.o primer.c - трансляция СИ-программы с образованием файла выполняемой программы с именем primer.o;

$rm  text.* - удаление всех файлов с именем text;

${cat text.1; cat text.2} | lpr - пpосмотp файлов text.1 и text.2 и вывод их на печать;

Наряду с перенаправлением выходных данных существует способ перенаправить входные данные. Если во время выполнения некоторой команды требуется ввести данные с клавиатуры, можно положить их заранее в файл, а затем перенаправить стандартный ввод этой команды с помощью знака "меньше" – "<" и следующего за ним имени файла с входными данными. Другие варианты перенаправления потоков данных можно посмотреть в UNIX Manual для командного интерпретатора.

Символы  "<" и ">" можно менять местами в командной строке, но они оба нужны. Команды, которые выглядят похоже, на самом деле могут совершенно по-разному обрабатываться операционной системой.

2.8  Команды создания файла.

 

Чтобы  создавать файлы, и просматривать их содержимое на экране можно воспользоваться командой cat. Если набрать ее в виде

                       cat   имя_файла

то на экран выведется все его содержимое.

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

Если даже ваш файл и текстовый, но большой, то все равно вы увидите только его последнюю страницу. Большой текстовый файл удобнее рассматривать с помощью утилиты more (описание ее использования вы найдете в UNIX Manual). Команда cat    интересна с другой точки зрения.

Если мы в качестве параметров для команды cat задать не одно имя, а имена нескольких файлов

   сat   файл1 файл2 ... файлN

то система выдаст на экран их содержимое в указанном порядке. Вывод команды cat можно перенаправить с экрана терминала в какой-нибудь файл, воспользовавшись символом перенаправления выходного потока данных – знаком "больше" – ">".

 Команда  cat  файл1 файл2 ... файлN > файл_результата

сольет содержимое всех файлов, чьи имена стоят перед знаком ">", воедино в файл_результата – конкатенирует их (от слова concatenate и произошло ее название).

Большой текстовый файл удобнее рассматривать с помощью утилиты more.

 Например, команда

$ cat pat.file    выполняет те же действия, что и команда  $ cat < pat.file

Однако на самом деле это различные команды. В первом случае pat.file — это аргумент команды cat. С точки зрения Linux аргументы — это переменные, используемые в командной строке. В данном случае получилось так, что аргумент — это файл. Во втором же примере файл pat.file играет роль стандартного ввода для команды cat.

Перенаправление может использоваться как для стандартного вывода, так и для стандартного ввода. Команда cat может использоваться для копирования файлов следующим образом:

$ cat kevin.report > pat.report

В этом примере стандартным вводом служит файл kevin.report, а стандартным выводом — файл pat.report. Содержимое файла kevin.report не изменяется.

Для того чтобы дописать данные в конец существующего файла, используется специальный символ перенаправления. В следующем примере содержимое файла kevin.report дописывается в конец файла pat.report:

$ cat kevin.report » pat,report

 

touch — команда Unix, предназначенная для установки времени последнего измeнения файла или доступа в текущее время. Также используется для создания пустых файлов.

touch [-acfhm] [-r файл] [-t [[CC]YY]MMDDhhmm.[SS]] файл

  -a  Устанавливает время последнего доступа к файлу. Время последнего изменения не устанавливается, если явно не задан ключ -m

  -c  Указывает утилите не создавать файл, если он не существует, при этом никаких сообщений об ошибке показано не будет.

  -f  Пытается обновить информацию о времени, даже если права доступа файла не позволяют делать.

  -h  Указывает утилите не изменять данные о файле, если он задан символической ссылкой.

  -m  Устанавливает время последней изменения файла.

  -r file  Использовать значения времени из файла, заданного аргументом file.

  -t time  Устанавливает время последнего изменения и доступа в соответствии с указанным форматом time.

Формат даты, указанный в ключе -t задается в соответствии с шаблоном [[СС]YY]MMDDhhmm[.SS]:

  СС — первые две цифры года (век).

  YY — последние две цифры года.

  Если параметр CC не задан и значение YY находится в пределах 69 и 99, то тогда СС устанавливается равным 19,

  в противном случае используется 20.

  MM — двузначный номер месяца.

  DD — двузначный номер дня.

  hh — значение часов даты.

  mm — значение минут даты.

  SS — значение секунд даты.

Таблица основных команд Linux и их аналоги в DOC

Команда Linux

Действие

Аналог в DOS

 ls, dir 

 Вывод на экран информации о файлах и каталогах 

  dir 

 cd 

 Смена текущего каталога 

  cd 

  pwd  

 Текущий каталог 

  - 

  cp  

 Копирование файлов в другой каталог и/или с другим именем 

  copy 

 mv 

 Перенос файла и переименование его 

  move,rename 

 rm 

 Удаление файла 

  del 

 mkdir 

 Создание каталога 

  mcdir,md 

 rm 

 Удаление каталога 

  rm,rmdir 

 man 

 Вывод помощи (по командам ОС) 

  help 

 more 

 Вывод содержимого файла на экран с паузами после заполнения каждого экрана 

  more 

 cat filename 

 Вывод на экран содержимого файла nbsp

  type 

 cat > Newfilename 

 ВПеренаправление содержимого файла в новый файл/создание нового файла с заданым в другом файле содержимым 

  - 

 Ctrl+D 

 Окончание перенаправления 

  - 

 grep 

 Поиск строк в файле, соответствующих запросу 

  - 

 chmode 

 Смена атрибутов файла 

  atrib 

 chown 

 Смена владельца файла 

  - 

 df 

 Вывод информации о наличии свободного места на диске 

  dir 

 find 

 Поиск и вывод на экран имен файлов, соответствующих заданным критериямnbsp

  - 

 file 

 Вывод информации о файле 

  - 

 vc 

 Подсчет слов или знаков в файле 

  - 

 

Опции команд
        
Большинство команд имеет многочисленные опции. Опция вводится с помощью "-" (тире). Например:

    dir    -l

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

          dir   -l -a   или      dir    -la
    
     Любая из двух команд покажет мне список файлов в текущем каталоге в расширенном формате (опция -l), и включит все файлы в список ,также и скрытые (опция -a). Большинство часто используемых опций обозначены одной буквой, как и в UNIX. Но есть и новый стиль, который выглядит так: dir --help
Это - опция длиной более одного символа, и она должна начинаться с двойного тире. Вышеуказанная команда показывает краткую помощь для команды
dir, включая список всех опций. Так как их очень много (более одного экрана), лучше ввести эту команду так: dir --help | more


         Лабораторная работа № 2 к теме «Работа с терминалом».

 

2.1           Цель работы:

-       дать начальное понятие об устройстве файловой системы в UNIX, о полных и относительных именах файлов;

-       научить выполнять простейшие команды работы с файловой системой и пользоваться командой man.

2.2        Рабочее задание        

1.    Войти в систему

2.    Создать пользователя   - со своим именем

3.    Назначить пароль и войти под этим пользователем

4.      Создайте свою домашнюю структуру каталогов с помощью команды mkdir, используя название кафедры, своей группы и свою фамилию, например /home/kafedra_CT/№ГРУППЫ… в соответствии с вариантом, полученным у преподавателя (см. таблицу 1- электронный вариант у преподавателя). (Черными линиями представлена вложенность файлов/подкаталогов в каталоги. Синими линиями представлены ссылки. Красными линиями - символические ссылки. Стрелка на красной линии указывает на целевой файл ссылки. Файлы создаются копированием ранее созданного файла командой cp с внесением в копии некоторых изменений)

5.    Для всех вариантов выполнить следующие действия:

5.1         Создать ссылки (синие линии). Создать символические ссылки (красные линии). Ссылки создаются командой ln, символические ссылки - ей же, но с ключом -s:

5.2          В домашней директории создать файл hw командой touch

5.3          Записать в него строку «Hello  word! I am ….»

5.4          Вывести содержимое файла  hw на экран

5.5          Создать с помощью команды cat новый текстовый файл.

5.6         Изучить справку к команде ls, выполнить ее с различными ключами.   Привести в отчете команду ls  и все ключи и провести их анализ.

5.7          Просмотреть каталоги при помощи оболочки  mc

5.8          Научиться с помощью команд cp, rm, mkdir, mv создавать, копировать, удалять переименовывать файлы, создавать собственные поддиректории просматривать их содержимое и перемещаться по логическому дереву файловой системы.

5.9           Посмотреть свой PATH, используя команду  echo $PATH

5.10    Изучить системные команды такие как cal, du, date, df, free и др.

Таблица 1.

Вариант 1.

Вариант 6.

Вариант 2.

Вариант 7.

Вариант 3.

Вариант 8.

Вариант 4.

Вариант 9.

Вариант 5.

Вариант 10.

2.3          Домашнее задание

 

                 1. Выучить клавиатурные сочетания

2. Изучить справку к файловому менеджеру Midnight Commander, запустить его, изучить перечень доступных команд, сочетания клавиш для выполнения часто применяемых команд, особенности встроенного текстового редактора.

3. Создать архив папок с помощью команд tar, gzip

4. Научиться устанавливать пакеты

2.4           Оборудование рабочего места:

-      компьютер с загруженной программной средой VMware Workstation v5.5;

-      установленная на виртуальной машине ОС  Linux.

 

Контрольные вопросы.

 

1.                Какие организационные действия необходимо предпринять, если вы забыли пароль.?

2.                Какой  возвращается указатель обычно для идентификации ошибочной ситуации?

3.                Какая стандартная функция UNIX применяется для получения символьной информации об ошибке на стандартном выводе программы для ошибок (по умолчанию экран вашего терминала)?

4.                Какие базовые понятия используются в операционной системе Unix?

5.                Какое понятие характеризует статическую сторону вычислительной системы?

6.                Что включает в себя полное имя файла?

7.                На какие категории делится информация в Linux?

8.                Назначение команды man.

9.                Простейшие команды работы с файлами и директориями.

 

ТЕМА 3.  Принципы работы в текстовом редакторе vi.

 

В составе ОС LINUX обычно поставляются текстовые редакторы: ed - интерактивный строковый редактор, vi и ех - его расширенные версии. Под именем vi (visual interpretator - визуальный интерпретатор)  эта программа  работает  как  экранно-ориентированный  редактор, а под именем ех - как строчно-ориентированный. Нижеследующие команды необходимо выполнять по ходу прочтения.

 

Vi - текстовый редактор, входящий в поставку практически всех операционных систем семейства Unix. Это гибкий инструмент, позволяющий выполнять очень широкий спектр задач.

3.1 Запуск vi

 

Редактор vi позволяет создавать новые файлы и редактировать существующие. 

Для вызова редактора vi используется команда vi:

 

vi [+line] [-R] [-х] [-r] [-t] file...    где

 

+line - номер строки, с которой Вы хотите начать редактирование;

R - читать; это означает, что файл можно только просматривать, но не модифицировать;

 х - расшифровывающее чтение т.е. просмотр файла, зашифрованного командой сryрt, или редактирование обычного текста с последующим шифрованием по мере записи на диск;

r - восстановление файла после системного или программного крахов;

t - вызов для редактирования файла, который содержит названный (в поле filе команды vi) тег (tag).

 

Тег - это список символов, с которых начинается раздел в текстовом файле. Теги разных файлов объединяют в один файл -  файл  тегов  с  именем tags.  Опцией -t  обеспечивается  вызов файла tags,  который  содержит  названный  тег  и  имя  редактируемого файла,  в  котором  тег  находится.  Команду  вызова  редактора  можно использовать  в форме   vi  +/word/file -  начало  редактирования файла file  с  первой  строки,  которая  содержит  слово word,  или  в  форме  vi +file - начало редактирования файла с последней строки.

В простейшем случае для вызова редактора нужно ввести команду  vi техт и нажать клавишу Enter. Можно запустить vi без имени файла - в этом случае для сохранения результатов работы сообщите имя файла редактору позже.

Когда vi загрузится, вы увидете окно, похожее на следующее:

 

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

"filename" 21 lines, 385 characters

Если это новый файл сообщение будет выглядеть следующим образом :

"newfile"  [New file]

При запуске vi без имени файла - нижняя часть экрана будет пустой. Если не отображается одно из этих сообщений - возможно у вас неверный тип терминала. Наберите :q и "Enter" для выхода из vi и установите поддерживаемый тип терминала.

 

3.2 Режимы работы vi

 

В редакторе vi существуют два режима работы : командный и вставки текста. Командный - режим ввода команд. Обычно эти команды короткие - состоят из одной или двух букв. Режим вставки текста - вставляется в файл то, что вы набираете на клавиатуре.

По умолчанию редактор запускается в командном режиме.

Для перехода в командный режим vi  нужно  нажать  клавишу  Еsс.  Теперь  редактор  находится  в  командном режиме vi.

 

3.3 Выход из vi

 

Следующее, что необходимо знать, после того как вы запустили vi – это то, как его закрыть, потому что не помогут ни <escape>, ни  <Alt+X>,  ни  даже  <Ctrl+C>.  Нет в нем и так любимой народом верхней  строчки,  именуемой  "Главное меню". Потому перед его запуском ознакомьтесь со следующей таблицей:

 

Команда                            Описание

        :q!   Выход без сохранения

        :w   Сохранение изменений

        :w <filename> Сохранение как <filename>

        :wq   Выход с сохранением

        :q    Выход, если файл не изменялся

 

Чтобы выйти из режима вставки текста нажмите клавишу "Esc".

 

Так как редактор vi имеет два рабочих режима, то для завершения сеанса работы необходимо перейти в командный режим.

Команда для выхода из vi - ":q". В командном режиме наберите двоеточие и "q" и нажмите клавишу "Enter". Если вы вносили изменения в файл - редактор предупредит об этом и не позволит завершить сеанс подобным образом. Выход из редактора без сохранения изменений - ":q!".

Команда для сохранения изменений - ":w". Можно сохранить изменения и завершить сеанс работы одновременно - ":wq". Для изменения имени файла выполните - ":w filename". Например для сохранения файла с новым именем filename2 выполните : ":w filename2".

Другая возможность завершения сеанса работы с редактором - выполнение команды ":ZZ". В командном режиме выполните ":ZZ" (эквивалент команды ":wq"). Если были сделаны изменения - они будут сохранены. Это самый простой вариант.

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

 

3.4 Перемещение курсора

 

Как показано на рисунке, чтобы управлять курсором, можно использовать клавиши h, j, k и l (нижний регистр – без «shift»):

 

 

Особенно интересно, что для перемещения курсора на пять знаков вправо, вы можете набрать 5l; чтобы переместить курсор на три линии вниз, вы можете набирать 3j и т.д.

 

Для того, чтобы переместить курсор на начало линии, нажмите 0 (числовой нуль). Для того, чтобы переместить курсор на конец линии, нажмите $.

 

Команды перемещения курсора:

h - на одну позицию влево;

l - на одну позицию вправо;

j - на одну позицию вниз;

k - на одну позицию вверх;

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

) - к концу текущего предложения;

{ - к началу текущего раздела (разделителем раздела является пустая строка);

} - к концу текущего раздела;

[ - к началу текущей секции;

] - к концу текущей секции;

О - к началу текущей строки;

$ - к концу текущей строки;

Н - к началу экрана;

М - на середину экрана;

L - к концу экрана;

nG - к  строке  с номером n (на последнюю  строку,  если номера n нет);

 % - к символу парной скобки, если курсор находится под одной из них.

 

Команды управления экраном:

^U - смещение текста на одну строку вверх (СТRL-U);

^D - смещение текста на одну строку вниз (СТRL-D);

^В - смещение текста на один кадр назад (СТRL-В);

^F - смещение текста на один кадр вперед (СТRL-F).

 

Команды перемещения текущей строки:

• в верхнюю часть экрана нужно ввести команду z и нажать клавишу Enter;

• в середину экрана z;

• в нижнюю часть экрана z- .

Для  очистки  экрана  от  сообщений  нужно  использовать  команды СТRL-R и СТRL-L; тексты в рабочей области при этом сохраняются.

 

Команды расстановки "маркеров" в тексте, и быстрого перехода на эти метки:

     m<симв.> - запоминает текущую позицию курсора как символ <симв.>;

     `<симв.> - возвращает курсор на позицию, запомненную как <симв.>;

Например,  запомнив начало второго параграфа как "m2", Вы в дальнейшем сможете возвращаться к нему командой "`2".

Так же, к командам навигации можно отнести и команды поиска.

 

Команды поиска

/<образец поиска> - поиск в тексте по образцу;

/ - повторный поиск по предыдущему образцу (найти далее);

?<образец поиска> - поиск по образцу в обратном направлении;

? - повтор поиска по предыдущему образцу в обратном направлении;

Эти 4 команды должны обязательно завершаться нажатием клавиши <Enter>.

 

[No.]<Ctrl-A> - поиск No.-го слова, совпадающего с тем, на которомстоит курсор, начиная с позиции курсора в сторону конца документа;

[No.]f<char>  -  перемещает  курсор  на No.-й после курсора символ       <char> в строке;

[No.]t<char>  -  перемещает  курсор на символ, стоящий перед No.-м после курсора символом <char> в строке;

[No.]F<char>  -  перемещает  курсор на No.-й перед курсором символ      <char> в строке;

[No.]T<char>  -  перемещает курсор на символ, стоящий после No.-го перед курсором символа <char> в строке.

 

## Здесь и далее [No.] означает любое число введенное с клавиатуры.

Этих команд навигации вполне достаточно для быстрого перемещения в любое место редактируемого документа.

 

Режим вставки и редактирования текста

Перейти  в  режим  ввода  текста можно  с  помощью  команд  добавления текста, которые не отображаются на экране после их ввода:

а/А - ввод текста после курсора/после конца строки (аррend - присоединение);

i/I -  вставка  текста  перед  курсором/с 1-й  позиции  данной  строки (insert - вставить);

о/О -  образовать  пустую  строку  ниже  имеющейся /  выше  имеющейся.

 

Команды изменения текста:

[No.]r<char> - заменяет символ в точке нахождения курсора (и No.-1 последующих символов) символом <char>;

[No.]~  -  заменяет  текущий  и  следующие No.-1 символов этими же символами в другом регистре;

[No.]s  -  заменяет  No.  символов  в  строке, начиная с текущего,

вводимым  далее текстом. Вводимые символы после No.-го добавляются

после замененных. Граница области замены отмечается символом "$".

Поясним  эту команду. Пусть у нас есть строка с текстом "This is a big string".  Мы  хотим  слово  "big" заменить более справедливым "small". Поставим курсор на букву "b" (естественно, используя команду "fb" – мы же  уже  не  маленькие, чтобы стрелочками по тексту скакать). Заменить нам  нужно  три  символа,  поэтому:  "3s".  Теперь  просто вводим наше "small"  -  первые  три  символа введутся в режиме замены, последующие добавятся,  не  затирая то, что нам нужно. Теперь <escape>, и любуемся на дело наших рук, не забывая при этом громко восхищаться редактором.

[No.]R  -  включает  режим замены (вводимые символы будут замещать текущие до конца строки, затем символы будут добавляться);

[No.]S  -  очищает  строку  и  переходит  в  режим  вставки текста

 (аналогичный  результат  достигается  последовательным выполнением  команд  "[No.]dd"  и  "O").

[No.]C  -  удаляет  символы  от  текущей  позиции курсора до конца строки  и переходит в режим вставки текста. No. так же относится к удалению.

[No.]c - удаляет символы в указанном направлении, которое задается командами   перемещения   курсора   (No.  отдельных  символов  для  направлений "влево" и "вправо" и No. строк для "вверх" и "вниз") и  переводит редактор в режим вставки текста.

 

Команды смещения текста:

<(или>( - к началу текущего предложения;

<)или>) - к концу текущего предложения;

<{или>{ - к началу текущего раздела;

<}или>} - к концу текущего раздела.

 

В командах смещения текста можно использовать множители, например может  использоваться  команда 2>> (сдвиг  вправо). Смещение устанавливается  командой: set sw=m. По  умолчанию m=8. После  того как  курсор  подведен  к  требуемой  строке,  нужно  набрать  символы << или >>.

 

Переход в режим ex.

 

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

Все они устанавливаются с помощью ex-команды ":set". "no" перед именем опции отключает ее.

Чтобы перейти  к  группе  команд редактора ех (под  именем  ех  редактор  работает  как  строчно-ориентированный), нужно ввести символ : (двоеточие), команду и нажать <Enter> или Еsс.

Команды редактора ех начинаются с символа : и отображаются в нижней части экрана. После нажатия клавиши Еsс или <Enter> происходит возврат (назад) в командный режим. :set  [no]list  -  включает  режим  отображения служебных символов (таких  как конец строки, который будет отображаться символом "$",  и т.д.);

:set [no]nu - включает отображение номеров строк;

:set  [no]showmode - включает отображение режима (command, insert,

append,  replace)  в нижнем правом углу экрана, в котором редактор находится в данный момент;

:set [no]verbose - включает режим расширенных сообщений (на каждое

ошибочное действие будет выдаваться соответствующее пояснение);

   Увековечить  сделанные  настройки  можно  в  exrc-файлах. Данные файлы применяются в следующей последовательности:

    1. /etc/vi.exrc - глобальный файл настроек редактора;

    2. $HOME/.exrc - пользовательский файл настроек;

    3. .exrc - локальный файл настроек для текущей директории.

   Действовать  будут  те  настройки, которые применены последними. В эти файлы следует занести те ex-команды, которые должны быть исполнены при открытии  редактора.  Например,  если Вы хотите, чтобы редактор всегда работал  с  включенным отображением режима и расширенными сообщениями, то   создайте   в   своем  домашнем  каталоге  файл  .exrc  следующего содержания:

             set showmode

             set verbose

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

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

 

Переход в Shell.

 

Редактор позволяет в процессе работы с ним выполнять  команды ОС LINUX. Для  этого  нужно  перейти  в  командный режим Shell с помощью команды !.

Рассмотрим  пример.  Определите  текущее  время  командой date (вывод и установка даты) :! date. Здесь символ : означает переход в командный режим ех, а символ ! дает доступ к Shell. Для продолжительной  работы  с  командами Shell можно  вызвать  командой :bash и после окончания работы вернуться в редактор vi, набрав СТRL-D.

Для возврата в командный режим vi нажмите клавишу Enter.

 

Взаимодействие  с  командным интерпретатором Shell будет рассмотрено в Теме 8.

Лабораторная работа к теме 3  «Текстовый редактор vi»

 

     1  Цель работы:

-       научить студента создавать и редактировать файлы.

    

      2     Рабочее задание:

Использовать структуру каталогов своего варианта заданий из лабораторной работы №2

1. Используя редактор VI, создать два текстовых файла с расширением TXT (можно использовать свои тексты).

 

Текст 1

Есть в осени первоначальной
Короткая, но дивная пора —
Весь день стоит как бы хрустальный,
И лучезарны вечера...
Где бодрый серп гулял и падал колос,
Теперь уж пусто всё — простор везде, —
Лишь паутины тонкий волос
Блестит на праздной борозде.

Текст 2

Уж солнца раскаленный шар
С главы своей земля скатила,
И мирный вечера пожар
Волна морская поглотила.

Уж звезды светлые взошли
И тяготеющий над нами
Небесный свод приподняли
Своими влажными главами.

 

2. Командой cat просмотреть текстовые файлы на экране.

3. Объединить текстовые файлы в единый файл и посмотреть  его на экране командой paste имя1 имя2, используя два параметра  –d  и –s  поочередно. Сравнить результаты.

4. Из первого файла удалить все слова содержащие букву «и».

5. Скопировать первую строку первого файла в конец файла. Сравнить и проанализировать результаты.

6. Вырезать номер и 2-е слово, результат сохранить в 1-м временном файле (cut  -f1,3 -d' ' >temp01).

7. Вывести файл без заголовка и лишних строк, но с номерами строк во временный файл, используя команду pr , результат сохранить во  2-м временном файле.

8. Удалить 1-й строки из 2- файла, символ из нее никуда не подставляется, результат сохранить в 3-м временном файле. 1-е символы строк сохраняются во временном файле.

9. Сцепить построчно 2-й и 3-й временные файлы, вставив между сцепляемыми строками перевод строки, используя команду paste с ключом -d'\n'  (man paste). Результат сохранить в 4-м временном файле.

10. Сдвинуть все строки первого файла на 3 символа табуляции.

11. Объединить 2-ую, 3-ю, 4-ую строку во втором файле.

12. Поставить метку в конце второй строки 1-го файла и перейти на нее с конца файла.

13.Сделать так, чтобы при открытии vi по умолчанию отображались служебные символы и номера строк.

14. Используя man, проанализировать и описать каждую команду и ее пара метры.

 

3      Домашнее задание:

 

Настроить кириллицу в Vi. Привести в отчете результаты работы.

Копии экрана с выполненным заданием и описание выполненных действий привести в отчете.

ТЕМА 4.  Изучение  файловой системы OC LINUX и функций по обработке и управлению данными.

 

4.1  Файловая структура системы LINUX

Иерархическая структура файловой системы

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

Файловая система является краеугольным камнем операционной системы UNIX. Она обеспечивает логический метод организации, восстановления и управления информацией. Строго говоря, следует различать физическую файловую систему, которая отвечает за управление дисковым пространством и размещение файлов в физических адресах диска и логическую файловую систему, которая обеспечивает логическую структуру хранения файлов - пространство имен файлов. ОС Unix и Linux могут работать с различными физическими файловыми системами, но логическое представление файловой системы в Unix/Linux всегда одинаково. В данном документе везде под термином "файловая система" понимается "логическая файловая система".

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

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


           Обыкновенные файлы - это набор символов, хранящихся на диске. Они могут хранить тексты или программы или коды программ.

Специальные файлы соответствуют физическим устройствам (например, терминал или диск).

Символическая связь - это файл, который указывает на другой файл.

 

Имя  пути


          Каждый файл и справочник системы UNIX идентифицируется уникальным именем пути. Имя пути показывает местоположение файла или справочника и обеспечивает направление поиска его. Существует 2 типа имени пути: полное и родственное.

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

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

Чтобы понять как полное имя пути строится, обратитесь к следующему примеру. Предположим, что вы работаете в справочнике startship, расположенном в /home. Вы задаете команду pwd и система печатает полное имя пути вашего рабочего справочника: /home/startship, где

/ - это корневой справочник (root);

home - системный справочник, расположенный на один уровень ниже справочника root;

/ - разделяет имена справочников root и startship;
startship - текущий рабочий справочник.

 

 Каждый каталог и файл файловой системы имеет уникальное полное имя - имя, задающее полный путь, оно задает полный путь от корня файловой системы через цепочку каталогов к соответствующему каталогу или файлу).

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

Каталог, являющийся корнем файловой системы (корневой каталог), в любой файловой системе имеет предопределенное имя "/" (слеш). Этот же символ используется как разделитель имен в пути. Полное имя файла, например, /bin/sh означает, что в корневом каталоге должно содержаться имя каталога bin, а в каталоге bin должно содержаться имя файла sh. Коротким или относительным именем файла называется имя (возможно, составное), задающее путь к файлу от текущего рабочего каталога (существует команда и соответствующий системный вызов, позволяющие установить текущий рабочий каталог).

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

Так, например, для структуры, показанной на следующем рисунке доступ к отмеченному на рисунке файлу из текущего каталога возможен по полному имени:

/home/apalko/file2

или по относительному имени:

./../../apalko/file2

Каталогам или файлам любые имена назначаются в соответствии со следующими правилами:

·   допустимы все символы, за исключением /;

·   некоторые имена лучше не использовать, такие как пробел, табуляция и следующие: ? " # $ ^ ( ) ; < > [ ] | \ * @ ' ~ &. Если Вы воспользуетесь символами пробела или табуляции в имени файла или справочника, то Вы должны заключить имя в двойные кавычки в командной строке;

·  избегайте использования знаков + - или . в качестве первого символа в имени файла;

·  система UNIX различает большие и маленькие буквы именах файлов и каталогов.

·  Нельзя создавать имена большей длины, чем это предусмотрено операционной системой (для Linux – 255 символов).

·  Нельзя использовать символ NUL (не путать с указателем NULL!) – он же символ с нулевым кодом, он же признак конца строки в языке C.

·  Нельзя использовать символ '/'.

 

Также нежелательно применять символы "звездочка"  –  "*",  "знак вопроса" – "?", "кавычка" – "\"", "апостроф" – "\'", "пробел" – " " и "обратный слеш" – "\\"(символы записаны в нотации символьных констант языка C).

Единственным исключением является корневая директория, которая всегда имеет имя "/". Эта же директория по вполне понятным причинам представляет собой единственный файл, который должен иметь уникальное имя во всей файловой системе. Для всех остальных файлов имена должны быть уникальными только в рамках той директории, в которую они непосредственно входят.

Два способа просмотра файловой системы

1. С помощью команды.

2. С помощью графической оболочки KDE, GNOME.

 Для того чтобы просмотреть список приложений, которые доступны для любого пользователя, в командной строке необходимо ввести: ls/usr/bin.

Закончить просмотр: нажать клавишу Q.

 

В ОС Linux существует 3 типа файлов:

Рассмотрим 3 типа файлов.

1.Пользовательские файлы данных обычно содержат простые данные, состоящие из текста и

чисел (.txt).

2.  Системные  файлы  данных  используются  ОС  для отслеживания паролей и регистрации учётных записей пользователей.

3. Выполняемые файлы.

При указании пути к файлу в Linux используется прямой слеш в отличие от Windows, который использует обратный слеш. Первый начальный слеш обозначает корневой каталог.

Чтобы просмотреть нужный каталог надо в командной строке набрать следующие строки:

Каталоги

Содержание

/

Корневой, верхний, каталог файловой системы Linux

/root

Корневой (домашний) каталог для суперпользователя (root)

/bin

Команды, утилиты

/sbin

Системные утилиты

/dev

Устройства, которые изображены как файлы

/lib

Библиотеки

/home/username

Файлы, принадлежащие пользователю, вошедшему в систему под именем <username>

/opt

Дополнительный каталог

/boot

Ядро, которое запускается при загрузке системы

/etc

Файлы конфигурации

/usr

Приложения, программы. Обычно включает каталоги типа /usr/spool, /usr/man, /usr/include, /usr/iocal

/mnt

Другие медиа-устройства, смонтированные в системе, такие как проигрыватель компакт-дисков (CD-ROM) или флоппи-дисковод (FD-Drive)

 

4.3.2  Управление процессами и потоками в ОС Linux

 

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

Очень важно защищать саму операционную систему от возможности ее повреждения каким бы то ни было пользовательским процессом. В ОС UNIX это достигается за счет того, что ядро системы работает в собственном "ядерном" виртуальном пространстве, к которому не может иметь доступа ни один пользовательский процесс.

Основой ОС является ядро. Ядро системы предоставляет возможности (набор системных вызовов) для порождения новых процессов, отслеживания окончания порожденных процессов и т.д. С другой стороны, в ОС UNIX ядро системы - это полностью пассивный набор программ и данных. Любая программа ядра может начать работать только по инициативе некоторого пользовательского процесса (при выполнении системного вызова), либо по причине внутреннего или внешнего прерывания (примером внутреннего прерывания может быть прерывание из-за отсутствия в основной памяти требуемой страницы виртуальной памяти пользовательского процесса; примером внешнего прерывания является любое прерывание процессора по инициативе внешнего устройства). В любом случае считается, что выполняется ядерная часть обратившегося или прерванного процесса, т.е. ядро всегда работает в контексте некоторого процесса.

Составляющие процессов: Все построение операционной системы UNIX основано на использовании концепции процессов. Контекст процесса складывается из пользовательского контекста и контекста ядра. Под пользовательским контекстом процесса понимают код и данные, расположенные в адресном пространстве процесса. Под понятием контекст ядра объединяются системный контекст и регистровый контекст. Выделим в контексте ядра стек ядра, который используется при работе процесса в режиме ядра  (kernel mode), и данные ядра, хранящиеся в структурах, являющихся аналогом блока управления процессом - PCB. В данные ядра входят: идентификатор пользователя - UID, групповой идентификатор пользователя - GID, идентификатор процесса - PID, идентификатор родительского процесса - PPID.

Каждому процессу соответствует контекст, в котором он выполняется. Контекст процесса системного уровня в ОС UNIX состоит из “статической” и “динамических” частей. Для каждого процесса имеется одна статическая часть контекста системного уровня и переменное число динамических частей.

Статическая часть контекста процесса системного уровня включает следующее:

1.                Описатель процесса, т.е. элемент таблицы описателей существующих в системе процессов. Описатель процесса включает, в частности, следующую информацию:

·        состояние процесса;

·        физический адрес в основной или внешней памяти u-области процесса;

·        идентификаторы пользователя, от имени которого запущен процесс (UID, user identifier);

·        идентификатор процесса (PID, process identifier);

·        прочую информацию, связанную с управлением процессом.

2.                U-область (u-area) - индивидуальная для каждого процесса область пространства ядра, обладающая тем свойством, что хотя u-область каждого процесса располагается в отдельном месте физической памяти, u-области всех процессов имеют один и тот же виртуальный адрес в адресном пространстве ядра. Именно это означает, что какая бы программа ядра не выполнялась, она всегда выполняется как ядерная часть некоторого пользовательского процесса, и именно того процесса, u-область которого является "видимой" для ядра в данный момент времени. U-область процесса содержит:

·        указатель на описатель процесса;

·        идентификаторы пользователя;

·        счетчик времени, в течение которого процесс реально выполнялся (т.е. занимал процессор) в режиме пользователя и режиме ядра;

·        параметры системного вызова;

·        результаты системного вызова;

·        таблица дескрипторов открытых файлов;

·        предельные размеры адресного пространства процесса;

·        предельные размеры файла, в который процесс может писать;

·        и т.д.

Традиционный механизм управления процессами на уровне пользователя:

Как свойственно операционной системе UNIX вообще, имеются две возможности управления процессами – с использованием командного языка (того или другого варианта Shell) и с использованием языка программирования с непосредственным использованием системных вызовов ядра операционной системы.

Система предоставляет возможность для пользовательских процессов явно генерировать сигналы, направляемые другим процессам. Для этого используется системный вызов  kill pid, signum (Этот системный вызов называется “kill”, потому что наиболее часто применяется для того, чтобы принудительно закончить указанный процесс.) Параметр signum задает номер генерируемого сигнала (в системном вызове kill можно указывать не все номера сигналов). Параметр pid имеет следующие смысл:

·        если в качестве значения pid указано целое положительное число, то ядро пошлет указанный сигнал процессу, идентификатор которого равен pid;

·        если значение pid равно нулю, то указанный сигнал посылается всем процессам, относящимся к той же группе процессов, что и посылающий процесс (понятие группы процессов аналогично понятию группы пользователей; полный идентификатор процесса состоит из двух частей - идентификатора группы процессов и индивидуального идентификатора процесса; в одну группу автоматически включаются все процессы, имеющие общего предка; идентификатор группы процесса может быть изменен с помощью системного вызова setpgrp);

·        если значение pid равно -1, то ядро посылает указанный сигнал всем процессам, действительный идентификатор пользователя которых равен идентификатору текущего выполнения процесса, посылающего сигнал.

Команды управления процессами

 

ps [al] [number] - команда для вывода информации о процессах, принцип действия этой команды приблизительно аналогичен нажатию Ctrl>+<Alt>+<Del> в Windows с тем исключением, что в Linux все более наглядно:

-a - вывод информации обо всех активных процессах, запущенных с вашего терминала;

-l - полная информация о процессах;

number - номер процесса.

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

 

F  S  UID  PID  PPID  C  PRI  NI  ADDR  SZ  WCHAN  TTY  TIME  CMD

 

S  200   210    7       0     2    20      80      30       703a       03     0:07       cc

R   12    419    7     11     5    20      56      20                     03     0:12       ps

 

·                  F - флаг процесса (1 - в оперативной памяти, 2 - системный процесс, 4 - заблокирован в ОЗУ, 20 - находится под управлением другого процесса, 10 - подвергнут свопингу);

·                  S - состояние процесса (O - выполняется процессором , S - задержан, R - готов к выполнению, I - создается);

·                  UID - идентификатор пользователя;

·                  PID - идентификатор процесса;

·                  PPID - номер родительского процесса;

·                  C - степень загруженности процессора;

·                  PRI - приоритет процесса, вычисляется по значению переменной NICE и чем больше число, тем меньше его приоритет;

·                  NI - значение переменной NICE для вычисления динамического приоритета, принимает величины от 0 до 39;

·                  ADDR - адрес процесса в памяти;

·                  SZ - объем ОЗУ, занимаемый процессом;

·                  WCHAN - имя события, до которого процесс задержан, для активного процесса - пробел;

·                  TTY - номер управляющего терминала для процесса;

·                  TIME - время выполнения процесса;

·                  CMD - команда, которая породила процесс.

 

topкоманда отображает список системных процессов, но в режиме реального времени. После ее запуска нажатием определенных клавиш (в английской раскладке) можно управлять как отображением этих процессов, так и ими самими. Например:

·        <Shift>+<N> — сортировка по PID;

·        <Shift>+<A> — сортировать процессы по возрасту;

·        <Shift>+<P> — сортировать процессы по использованию ЦПУ;

·        <Shift>+<M> — сортировать процессы по использованию памяти;

·        <Shift>+<T> — сортировка по времени выполнения.

 

nice [-приращение приоритета] команда[аргументы] - команда изменения приоритета. Каждое запущенное задание (процесс) имеет номер приоритета в диапазоне от 0 до 39, на основе которого ядро вычисляет фактический приоритет, используемый для планирования процесса. Значение 0 представляет наивысший приоритет, а 39 - самый низший. Увеличение номера приоритета приводит к понижению приоритета, присвоенного процессу. Команда nice -10 ls -l увеличивает номер приоритета, присвоенный процессу ls -l на 10.

renice 5 1836 - команда устанавливает значение номера приоритета процесса с идентификатором 1836 равным 5. Увеличить приоритет процесса может только администратор системы. Например, команда

[root]# renice -1 987 –u daemonp 32        -  увеличивает на 1 приоритет процессов с PID 987 и 32, а также всех процессов пользователя daemon

kill [-sig] <идентификатор процесса> - завершение работы «зависшей» программы, или  прекращение процесса до его программного завершения. sig - номер сигнала. Sig = -15 означает программное (нормальное) завершение процесса, номер сигнала  = -9 - уничтожение процесса. По умолчанию sig= -9. Вывести себя из системы можно командой kill -9 0. Пользователь с низким приоритетом может прервать процессы, связанные только с его терминалом. В Linux существует 63 разных сигнала, их перечень можно посмотреть по команде

[user]$ kill –l

Программные каналы (pipe)

Linux так же, как Unix поддерживает программные каналы двух типов: именованные и неименованные. Именованные программные каналы создаются командой mknod. Программный канал - это специальный файл, в который можно «писать» информацию и из которого эту информацию можно «читать». Причем порядок записи информации и последующего чтения – FIFO (очередь).

Именованный канал имеет имя, которое указывается при вызове команды mknode:

#mknod [опции] <имя> p

Использовать именованный канал может любой процесс, «знающий» имя канала.

Пример: демонстрации работы именованного программного канала :

-       создаем именованный программный канал командой mknod с именем pipe;

-       направляем  текст в программный канал:

           echo [текст ]  >  pipe

-       меняем консоль;

-       получаем через канал текст и,  используя команду tee, выводим на экран:

           tee < pipe 

 

Неименованные программные каналы в командной строке создаются с помощью символа  |

                     #ls -l | tee filetee

              #cat filename > filename1 | pwd > filename|ls|sort

              #find /usr -name "*.let" –print | more

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

 

Фоновый pежим :

  Например:  #cat *.let > myprog&

           #jobs

...

# sort *.let > doc & lpr *.let &

#at <time>

 #nice <name>&

 #nice -15 proc&

    В приведенных примерах знак & снижает приоритет процесса.

Снижение пpиоpитета приводит к созданию фоновых процессов.

Для организации более "глубокого" фонового процесса, чем это позволяет сделать оператор & используется команда nohup ( no hand up - не отключа­ться ).

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

Если с помощью nohup запустить процесс, он не будет прекращен системой несмотря на отключение терминала или модема.

Запущенная с помощью nohup команда сразу не начнет выполняться. Если процесс необходимо начать позднее или запускать его периодически, то сле­дует прибегнуть к услугам демона cron.

Демон cron - это процесс в фоновом режиме, запущенный программой init Linux. Cron предоставляет услуги планировщика всем процессам Linux.

Можно заставить cron запускать программу в определенное время.

Команда crontab - для каждого пользователя создается его собственный файл со списком заданий в каталоге

/usr/spool/cron/crontabs.

Например, если вы пользователь и именем kiv, то

/usr/spool/cron/crontabs/kiv

Перевод процесса в фоновый режим

Если необходимо запустить какой-то процесс путем запуска программы из командной строки, то обычно процесс запускается, как говорят, "на переднем плане". Это значит, что процесс "привязывается" к терминалу, с которого он запущен, воспринимая ввод с этого терминала и осуществляя на него вывод. Но можно запустить процесс в фоновом режиме, когда он не связан с терминалом. Для запуска процесса в фоновом режиме в конце командной строки запуска программы добавляют символ &.

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

В оболочке bash имеются две встроенные команды, которые служат для перевода процессов на передний план или возврата их в фоновый режим: команды fg и bg, которые служат для перевода процессов на передний план или возврата их в фоновый режим. В качестве аргумента обеим этим командам передаются номера тех заданий, которые присутствуют в выводе команды jobs. Если аргументы отсутствуют, то подразумевается задание, помеченное знаком +. Команда fg переводит указанный в аргументе процесс на передний план, а команда bg — переводит процесс в фоновый режим. Одной командой bg можно перевести в фоновый режим сразу несколько процессов, а вот возвращать их на передний план необходимо по одному.

4.3.3 Связывание файлов с разными именами

 

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

Ссылки, о которых идет речь, являются "жесткими" связями и представляют собой ссылки на один и тот же физический файл из двух или более элементов каталога. Удаление файла по одной из ссылок приводит к удалению только элемента каталога, сам же файл сохраняется и может быть доступен по другим ссылкам. Физический файл удаляется только при удалении последней ссылки на него.

Один файл можно сделать принадлежащим нескольким каталогам. Для этого используется команда ln (link):

ln <имя файла 1> <имя файла 2>

Имя 1-го файла -  это  полное  составное  имя файла,  с  которым  устанавливается связь; имя 2-го файла - это полное имя файла в новом каталоге, где будет использоваться эта связь. Новое имя может не отличаться  от  старого. Каждый файл может иметь несколько  связей,  т.е. он может использоваться в разных каталогах под разными именами.

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

Команда ln с аргументом -s создает символическую связь:

ln -s <имя файла 1> <имя файла 2>

 

Здесь имя 2-го файла является именем символической связи.          Символическая  связь  является  особым  видом  файла,  в  котором  хранится имя файла, на который символическая связь ссылается. LINUX работает с символической связью не так, как с обычным файлом - например, при выводе на экран содержимого символической связи появятся данные файла, на который эта символическая связь ссылается.

 

Пример: введите команду ls и сделайте link на файл fil.3 и затем ls

$ ls  -il

82343 – rw – r – r- -r- - 1 IU715937 … fil.3

$ ln fil.3 datlink

$ ls il

 

82343……….2IU715937 …….datlink

82343……….2IU715937……...fil.3

 

После этого уничтожьте файл datlink и ls

$ rm  datlink

$ ls  il

 

82343 – rw-r- - r- -1IU715937…fil.3

 

4.3.4  Команды - Фильтры

 

Фильтры — это команды (или программы), которые воспринимают входной поток данных, производят над ним некоторые преобразования и выдают результат на стандартный вывод (откуда его можно перенаправить куда-то еще по желанию пользователя). К числу команд-фильтров относятся уже упоминавшиеся выше команды cat, more, less, wc, cmp, diff, а также следующие команды:

tr      - Заменяет во входном потоке все встречающиеся символы, перечисленные в заданном перечне, на соответствующие символы из второго заданного перечня

comm         - Сравнивает два файла по строкам и выдает на стандартный вывод 3 колонки: в одной — строки, которые встречаются только в 1 файле, во второй — строки, которые встречаются только во 2-ом файле: и в третьей — строки, имеющиеся в обоих файлах

pr      - Форматирует для печати текстовый файл или содержимое стандартного ввода

sed    - Строковый редактор, использующийся для выполнения некоторых преобразований над входным потоком данных (берется из файла или со стандартного ввода)

tee       -  особый фильтр, который "раздваивает" входной поток, с одной стороны направляя его на стандартный вывод, а с другой — в файл (имя которого вы должны задать). Легко видеть, что по своему действию команда tee аналогична оператору перенаправления 1>&file.

grep, fgrep, egrep        - Ищут во входном файле или данных со стандартного ввода строки, содержащие указанный шаблон, и выдают их на стандартный вывод

grep [-vcilns] [шаблон поиска] <имя файла> - поиск файлов с указанием или без указания контекста (шаблона поиска). 

Значение ключей:

- v – выводятся строки, не содержащие шаблон поиска;

- c – выводится только число строк, содержащих или не  содержащих шаблон;

- i – при поиске не различаются прописные и строчные буквы;

- l – выводятся только имена файлов, содержащие указанный  шаблон;

- n – перенумеровать выводимые строки;

- s – формируется только код завершения.

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

 

Примеры.

1. Напечатать имена всех файлов текущего каталога, содержащих последовательность "student" и имеющих расширение .txt:

$grep -l student *.txt

2. Определить имя пользователя, входящего в ОС LINUX с терминала tty23:

who | grep tty23

3.                Трансляция СИ - программы в фоновом режиме.   Имя выполняемой программы по умолчанию a.out.

                            $cc primer.c &-

4.                Трансляция СИ-программы с образованием файла выполняемой программы с именем primer.o;

$cc -o primer.o primer.c -

4.3.5 Клавиатурные сочетания

Ctrl+C – завершить текущую команду

Ctrl+Z – остановить текущую команду, продолжть с fg на переднем плане или bg в фоне

Ctrl+D – разлогиниться, тоже самое, что и exit

Ctrl+W – удалить одно слово в текущей строке

Ctrl+U – удалить строку

!! - повторить последнюю команду

exit – разлогиниться

 

Лабораторная  работа № 4 к теме «Изучение  файловой системы OC LINUX и функций по обработке и управлению данными».

 

1  Цель работы

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

 

2  Рабочее задание

 

Для вариантов заданий из лабораторной работы №2 выполнить следующие действия:

1.                Зарегистрироваться в системе LINUX.

2.                Определить день недели, в который Вы родились.

3.                Получить подробную информацию обо всех активных процессах.

4.                Используя редактор VI, создать два текстовых файла (с расширением TXT) и командой САТ просмотреть их на экране. (Использовать из лаб/раб.№2).

5.                Получить информацию о работающих пользователях, подсчитать их количество и запомнить в файле.

6.                Создать в каталоге /home вложенный каталог /kafedra_CT_CT. В каталоге /home/kafedra_CT создайте три вложенных каталога №ГРУППЫ/papka1/papka2, а также  в каталоге №ГРУППЫ создайте еще один каталог folder1.

7.                В каталоге /home/kafedra_CT/№ГРУППЫ/papka1 создайте два файла любого содержания разными способами (file1.txt and file2.txt).

8.                Просмотрите содержимое этих файлов. Сделать символическую cсылку (с помощью ln)  ~/группа/ folder1. Убедиться, что ссылка указывает на те же файлы.

9.                Определите имя текущего каталога.

10.           Скопируйте файл /home/kafedra_CT/№ГРУППЫ/papka1/file1.txt в каталог /home/kafedra_CT/№ГРУППЫ/folder1.

11.           Произведите копирование каталога /home/kafedra_CT/№ГРУППЫ/papka1 вместе с подкаталогами и файлами в каталог /home/kafedra_CT/№ГРУППЫ/ folder1.

12.           Переименуйте файл /home/kafedra_CT/№ГРУППЫ/folder1/ papka1/file1.txt в  файл /home/kafedra_CT№ГРУППЫ/ folder1/ papka1/text1.txt.

13.           Переименуйте каталог home/kafedra_CT/№ГРУППЫ/folder1/papka1 в каталог /home/kafedra_CT/№ГРУППЫ/folder1/ folder2

14.           Осуществите поиск файла file2.txt.Результаты поиска выведите на экран.

15.           Переместите один из найденных файлов в каталог /home/kafedra_CT /№ГРУППЫ/papka1/papka2

16.           Скопируйте файл  /home/kafedra_CT/№ГРУППЫ/folder1/folder2/text1.txt в файл /home/kafedra_CT/№ГРУППЫ/papka1/ file2.txt.

17.           Перенаправьте содержимое каталога /home/kafedra_CT/№ГРУППЫ/folder1 с отображением параметров в файл /home/kafedra_CT/№ГРУППЫ/folder1 /folder2/info.txt

18.           Просмотрев содержимое файла /home/kafedra_CT/№ГРУППЫ/papka1/ file1.txt, скопируйте его в каталог /home/kafedra_CT/№ГРУППЫ/ folder1/folder2.

19.           Просмотрите содержимое файла /home/kafedra_CT/№ГРУППЫ/folder1 folder2/info.txt и произведите подсчет количества строк в нем.

20.           Изучить справку к команде ps, выполнить ее с ключами -a, -e, a, x, ax, записать результаты в файл, например: ps -e > ps.log.

21.          Объединить текстовые файлы в единый файл и посмотреть  его на экране, учитывая конвейер « | ».

22.           Посмотреть приоритет своего процесса и уменьшить скорость его выполнение за счет повышения номера приоритета.

23.           Запустить в фоне какой-либо процесс. С помощью автоматизированных средств сохранить в файл текущий список запущенных процессов. С помощью команды grep произвести поиск по данному файлу запущенного процесса. Убить процесс по его id. Заново сохранить список процессов в определенный файл.

24.           Создать еще один каталог.

25.           Установить дополнительную связь объединенного файла с новым каталогом, но под другим именем.

26.           Создать символическую связь.

27.           Сделать текущим новый каталог и вывести на экран расширенный список информации о его файлах.

28.           Произвести поиск заданной последовательности символов в файлах текущей директории и получить перечень соответствующих файлов.

29.           Получить информацию об активных процессах и имена других пользователей.

30.           Сдать отчет о работе и удалить свои файлы и каталоги.

31.           Выйти из системы.

 

Контрольные вопросы

 

1.       Перечислите основные функции и назначение многопользовательской многозадачной операционной системы LINUX и ее отличительные особенности от однопрограммной системы DOS.

2.       Какое назначение имеет ядро системы и интерпретатор команд?

3.       В чем заключается понятие "процесс" и какие операции можно выполнить над процессами?

4.       Как задаются и выполняются простые и сложные команды?

5.       Что считается файлами в OC LINUX?

6.       Объясните назначение связей с файлами и способы их создания.

7.       Что определяет атрибуты файлов и каким образом их можно просмотреть и изменить?

8.       Какие методы создания и удаления файлов, каталогов Вы знаете?

9.       В чем заключается поиск по шаблону?

10.  Какой командой можно получить список работающих пользователей и сохранить его в файле?

 

ТЕМА  5. Управление доступом к данным.

 

5.1  Права доступа

 

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

Правильная настройка прав доступа позволяет повысить надёжность системы, защитив от изменения или удаления важные системные файлы. Наконец, поскольку внешние устройства с точки зрения Linux также являются объектами файловой системы, механизм прав доступа можно применять и для управления доступом к устройствам.

С помощью прав доступа отдельные пользователи могут иметь свои «личные» файлы и каталоги. К примеру, если пользователь niko создал в своём домашнем каталоге файлы (каталог /home/kolyar/..), то он является владельцем этих файлов и может определить права доступа к ним для себя и остальных пользователей. Он может, например, полностью закрыть доступ к своим файлам для остальных пользователей или групп пользователей, или разрешить им читать свои файлы (read), запретив изменять (write) и исполнять их (execute).Однако в большинстве случаев другим пользователям разрешается по умолчанию читать ваши файлы, но не изменять и не удалять их.

У любого файла в *nix-подобных системах (к каковой Linux также относиться) есть владелец - один из пользователей. Помимо этого, каждый файл одновременно принадлежит и некоторой группе пользователей системы. Каждый пользователь имеет возможность входить в любое количество групп, и в каждую группу может входить любое количество пользователей из числа определённых в системе.

Также помимо учётных записей, которые используют люди для работы с системой, в Linux предусмотрены учётные записи для т. н. системных пользователей: с точки зрения системы это такие же пользователи, которые могут быть владельцами файлов, однако эти учётные записи используются только для работы некоторых программ-серверов. Например, стандартный системный пользователь mail используется программами доставки почты.

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

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

5.2 Права доступа и администрирование системы

 

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

Поскольку программы, исполняемые от имени суперпользователя (root), могут совершать любые действия с любыми файлами и каталогами, их выполнение может нанести системе серьёзный ущерб. Это может быть как следствием уязвимостей или ошибок в программах, так и результатом ошибочных действий самого пользователя. Поэтому работа с правами суперпользователя требует особой осторожности. Чтобы уменьшить связанные с этим риски, разработчики системы рекомендуют для выполнения задач, требующих таких прав, использовать утилиту sudo.

 

5.3 Виды прав доступа

 

Рассмотрим, какие бывают права доступа. Они определяются по отношению к трём типам действий: чтение, запись и исполнение. Эти права доступа могут быть предоставлены трём классам пользователей: владельцу файла (пользователю), группе, которой принадлежит файл, а также всем остальным пользователям, не входящим в эту группу. Разделение на права подразумевает совершение строго определенных действий над файлами и директориями. Так, право на чтение даёт пользователю возможность читать содержимое файла или, если такой доступ разрешён к каталогам, просматривать содержимое каталога (используя команду ls). Право на запись даёт пользователю возможность записывать или изменять файл, а право на запись для каталога — возможность создавать новые файлы или удалять файлы из этого каталога. Наконец, право на исполнение позволяет пользователю запускать файл как программу или сценарий командной оболочки (разумеется, это действие имеет смысл лишь в том случае, если файл является программой или сценарием). Владение правами на исполнение для каталога позволяет перейти (командой cd) в этот каталог.

Следовательно, в LINUX различаются 3 уровня доступа к файлам и каталогам:

1) доступ владельца файла;

2) доступ группы пользователей, к которой принадлежит владелец файла;

3) остальные пользователи.

 

Для каждого уровня существуют свои байты атрибутов, значение которых расшифровывается следующим образом:

r – разрешение на чтение;

w – разрешение на запись;

x – разрешение на выполнение;

- – отсутствие разрешения.

 

Первый символ байта атрибутов определяет тип файла и может интерпретироваться со следующими значениями:

- – обычный файл;

d – каталог;

l – символическая связь;

в – блок-ориентированный специальный файл, который соответствует таким периферийным устройствам, как накопители на магнитных дисках;

с – байт-ориентированный специальный файл, который может  соответствовать таким периферийным устройствам как принтер, терминал.

В домашнем каталоге пользователь имеет полный доступ к файлам (READ, WRITE, EXECUTE; r, w, x).

 

Атрибуты файла можно просмотреть командой ls -l и они представляются в следующем формате:

 

d              rwx            rwx                 rwx

 |                 |                  |                      |

 |                 |                  |                      | Доступ для остальных пользователей

 |                 |                  | Доступ к файлу для членов группы

 |                 | Доступ к файлу владельца 

 | Тип файла (директория)

Для понимания прав доступа подробно рассмотрим пример:

/home/ivanov/docs# ls -l report1303 
-rw-r--r-- 1 ivanov users 505 Mar 13 19:05 report1303

Первое поле в этой строке (-rw-r--r--) отражает права доступа к файлу. Третье поле указывает на владельца файла (ivanov), четвёртое поле указывает на группу, которая владеет этим файлом (users). Последнее поле — это имя файла (report1303). Другие поля описаны в документации к команде ls.

Данный файл является собственностью пользователя ivanov и группы users. Последовательность -rw-r--r-- показывает права доступа для пользователя — владельца файла, пользователей — членов группы-владельца, а также для всех остальных пользователей.

Первый символ из этого ряда (-) обозначает тип файла. Символ - означает, что это — обычный файл, который не является каталогом (в этом случае первым символом было бы d) или псевдофайлом устройства. Следующие три символа (rw-) представляют собой права доступа, предоставленные владельцу ivanov. Символ r — сокращение от read (англ. читать), а w — сокращение от write (англ. писать). Таким образом, ivanov имеет право на чтение и запись (изменение) файла report1303.

После символа w мог бы стоять символ x, означающий наличие прав на исполнение (англ. execute, исполнять) файла. Однако символ -, стоящий здесь вместо x, указывает, что ivanov не имеет права на исполнение этого файла. Это разумно, так как файл report1303 не является программой. В то же время, пользователь, зарегистрировавшийся в системе как ivanov, при желании может предоставить себе право на исполнение данного файла, поскольку является его владельцем. Для изменения прав доступа к файлу или каталогу используется команда chmod.

Следующие три символа (r--) отражают права доступа группы к файлу. Группой-собственником файла в нашем примере является группа users. Поскольку здесь присутствует только символ r, все пользователи из группы users могут читать этот файл, но не могут изменять или исполнять его.

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

Рассмотрим несколько примеров:

-rwxr-x--x

Пользователь-владелец файла может читать файл, изменять и исполнять его; пользователи, члены группы-владельца могут читать и исполнять файл, но не изменять его; все остальные пользователи могут лишь запускать файл на выполнение.

-rw-------

Только владелец файла может читать и изменять его.

-rwxrwxrwx

Все пользователи могут читать файл, изменять его и запускать на выполнение.

----------

Никто, включая самого владельца файла, не имеет прав на его чтение, запись или выполнение. Хотя такая ситуация вряд ли имеет практический смысл, с точки зрения системы она является вполне корректной. Разумеется, владелец файла может в любой момент изменить права доступа к нему.

Атрибуты файла можно просмотреть командой ls.

Пример. Командой ls -l получим листинг содержимого текущей директории student

 

- rwx --- --- 2 student 100  Mar  10 10:30 file_1

- rwx --- r-- 1 adm      200  May 20 11:15 file_2

- rwx --- r-- 1 student 100  May 20 12:50 file_3

 

После байтов атрибутов на экран выводится следующая информация о файле:

- число связей файла;

- имя владельца файла;

- размер файла в байтах;

- дата создания файла (или модификации);

- время;

- имя файла.

В таком выводе неудобно то, что вы не можете определить, где файлы, а где каталоги. Многие пользователи предпочитают, чтобы ls выводила так же идентификатор типа:

$ ls -FC

 

bin/

cdrom/

home/

mnt/

sbin/

usr/

boot/

dev/

lib/

proc/

suncd/

var/

cdr/

etc/

lost+found/

root/

tmp/

vmlinuz

Эта команда добавляет слэш после имён каталогов, звезду после имён выполняемых файлов, и т.д.

ls так же может быть использована для получения более подробной информации о файлах. Например, чтобы увидеть, даты создания, имена владельцев, права доступа, вы воспользуетесь подробным списком:

        $ ls -l

 

drwxr-xr-x

2

root

bin

4096

May

7

1994

bin/

drwxr-xr-x

2

root

root

4096

Feb

24

03:55

boot/

drwxr-xr-x

2

root

root

4096

Feb

18

01:10

cdr/

drwxr-xr-x

14

root

root

6144

Oct

23

18:37

cdrom/

drwxr-xr-x

4

root

root

28672

Mar

5

18:01

dev/

drwxr-xr-x

10

root

root

4096

Mar

8

03:32

etc/

drwxr-xr-x

8

root

root

4096

Mar

8

03:31

home/

drwxr-xr-x

3

root

root

4096

Jan

23

21:29

lib/

Предположим, мы хотим увидеть список скрытых фалов в текущем каталоге. Для этого воспользуйтесь такой командой:

     $ ls -a

 

.

bin

cdrom

home

mnt

sbin

usr

..

boot

dev

lib

proc

suncd

var

.pwrchute_tmp

cdr

etc

lost+found

root

tmp

vmlinuz

Файлы, имя которых начинается с точки (так называемые ''dot файлы'') не показываются при простом выполнении ls, поэтому называются ''скрытыми''. Вы увидите их только, если добавите опцию -a.

5.4 Основные команды

 

Атрибуты файла и доступ к нему, можно изменить командой:

chmod <коды защиты> <имя файла>

 

Синтаксис команды chmod (CHange MODe - изменить режим):

 

chmod {a,u,g,o}{+,-}{r,w,x} filenames

 

Коды защиты могут быть заданы в числовом или символьном виде. Для символьного кода используются один или несколько из следующих символов:

 a (сокращение от "all" -- все), u (сокращение от "user" -- пользователь), g (сокращение от "group" -- группа), или o (сокращение от "other" -- прочие). Затем вы точно определяете, добавляете ли вы права (+) или убираете (-). Наконец, вы пишете один или несколько символов из следующего набора: r ("read" -- чтение), w ("write" -- запись), x ("execute" -- исполнение).

 

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

с помощью команды ls -l.

 

Пример работы с комадной chmod в консоли:

Права доступа в системе Linux

Изменение владельца и группы для одного или более файлов - chown, chgrp:

Синтаксис команды chown (CHange OWNer - изменить владельца) выглядит следующим образом:

chown [опции] <пользователь[:группа]> <файл|каталог> [файл|каталог...]

Опции включают:

·                    -R: рекурсия. Для изменения владельца для всех файлов и подкаталогов в указанном каталоге.

·                    -v: подробный режим. Показывает все действия, выполняемые chown; сообщает, у каких файлов были изменены владельцы в результате выполнения команды, а какие файлы остались без изменений.

·                    -c: подобна опции -v, но сообщает только о тех файлах, что были изменены.

Несколько примеров:

сhown  nobody /shared/book.tex: изменяет владельца файла /shared/book.tex на nobody.

chown -Rc queen:music *.mid concerts/: изменяет владельца всех файлов в текущем каталоге, чьи имена заканчиваются на .mid, и всех файлов и подкаталогов в каталоге concerts/ на пользователя queen и группу music, сообщая только о тех файлах, которые были затронуты командой.

Команда chgrp (CHange GRouP - изменить группу) позволяет вам изменить группу владельца для файла (или файлов); ее синтаксис очень похож на синтаксис команды chown:

chgrp [опции] <группа> <файл|каталог> [файл|каталог...]

Опции для этой команды такие же, как и у chown, и она используется очень похожим способом. Так, команда:

chgrp disk /dev/hd*

изменяет группу владельца всех файлов в каталоге /dev/ с именами, начинающимися с hd, на группу disk.

Команда на получение или установки маски режима создания файлов:

umask  - предназначена для изменения маски создания файлов командной оболочки или просмотра ее текущего значения. При отсутствии параметра команда выдает значение установленной маски создания файлов в восьмеричном виде. Для установления нового значения оно задается как параметр value в восьмеричном виде.

Синтаксис команды

   umask [value]

 

Если у кого-нибудь возникнет необходимость в использовании последних трех команд, то оперативно получить по ним справку поможет команда man (сокращение от "manual"). Формат ее вызова простой:

 

/home/niko# man ls

 

и на экран будет выведена экранная документация для команды ls.

Для полного доступа umask задается как 0000, для полного запрета 0777. Как вы знаете права доступа определяются в буквенном (drwxrw-r--) или в числовом(0764) выражении. Где 1 - выполнение (x), 2 – запись (w), 4 – чтение (r). Складывая эти числа в разных комбинациях, поучаем уровень доступа для владельца(второе число), группы(третье) и для остальных(четвертое число). Первое число соответствует биту безопасности или директории. Для вычисления маски нужно соответственно отнять выражение необходимого уровня доступа от 0777(например 07770640 = 0137).

 

Лабораторная  работа № 5  к теме «Управление доступом к данным».

 

1. Цель работы

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

 

2. Рабочее задание

 

1.                Изучить формат команд chown и chgrp. Перейти к директории /home/kafedra_CT/№ГРУППЫ/ФИО/ (использовать варианты заданий к лабораторной  работе № 2)

2.                  Открыть для своей группы доступ к своему домашнему каталогу - для поиска в каталоге и к рабочей копии файла в домашнем каталоге - для чтения и записи.

3.                Определить различные права  доступа к файлу владельца файла в символьном и числовом виде  /home/kafedra_CT/№ГРУППЫ/ФИО/ papka1/file1.txt  (file2.txt, file3.txt ):

a.                владелец файла может читать, писать и выполнять файл. Члены группы и все прочие пользователи могут читать и выполнять файл;

b.               владелец файла может читать и выполнять в файл. Всем остальным доступ к файлу закрыт;

c.               все могут читать писать и выполнять файл.

4.                Определить различные права  доступа к файлу группы, которой принадлежит файл в символьном и числовом виде.

5.                Изучить формат команды ls.

6.                Вызовите команду ls -al для директории /home/kafedra_CT/№ГРУППЫ/ и проанализируйте ее выдачу. Вывести полную информацию обо всех файлах и проанализировать уровни доступа.

7.                Создать файл stuff,  измененить к нему права доступа командой chmod

a.     дать всем пользователям право читать файл stuff;

b.    лишить права на выполнение всех, кроме владельца;.

c.     разрешить владельцу все (read, write и execute);

d.    запретить все (read, write и execute) пользователям категории другие (other).

8.                Повторить п.5 к каждой команде и проанализировать

9.                Добавить для всех  файлов директории  /home/kafedra_CT/№ГРУППЫ/ ФИО/   (при необходимости добавить файлы) право выполнения членам группы и остальным пользователям.

10.            Просмотреть атрибуты файлов.

11.            Измените атрибуты файла и  права доступа к нему.

12.            Создайте новый файл и посмотрите на права доступа к нему, установленные системой при его создании.

13.            Закрыть доступ к своему домашнему каталогу.

14.            Изучите значения маски, которые она может принимать, задать маску с помощью команды umask.

 

Контрольные вопросы

 

1.                      На какие группы делятся в системе пользователи?

2.                      Что такое UID?

3.                      Что такое GID?

4.                Чем руководствуется операционная система при выставлении  прав  доступа?

5.                      Какие права доступа можно определить для файла?

6.                      Для чего используется маска создания файлов для программы?

7.                      Какие значения может принимать маска?

8.                      Сохраняется ли маска создания файлов  между сеансами работы в системе?

9.                      Какое значение маски будет при новом входе в систему?

 

ТЕМА 6. Монтирование файловых систем, работа с дисками.

 

     6.1 Монтирование и демонтирование файловой системы

 

Одно из первых, что удивляет пользователя, перешедшего с WINDOWS к UNIX-подобным системам, - это необходимость монтировать (присоединять) дисководы, CD-ROM и файловые системы жесткого диска. А затем для сохранения целостности данных на носителе необходимо размонтировать устройство. Если отсоединить устройство без операции размонтирования, то файловая система будет разрушена. Большинство проблем возникает с дискетами, так как CD-ROM или оптический диск без размонтирования блокируется и обычным путем не извлекается.

Файловое дерево формируется из отдельных частей, называемых файловыми системами. Все диски и устройства в вашем компьютере являются частью одной большой файловой системы. Разделы жёсткого диска, CD-ROM'ы и дискеты находятся в одном дереве файлов. Для того, чтобы подключить эти носители к файловой системе, и вы могли получить доступ к ним, вам необходимо использовать команду mount. Эта команда берет из существующего файлового дерева каталог (называется точкой монтирования) и делает его корневым каталогом присоединяемой файловой системы. Например, команда

mount  /dev/sda  /users

монтирует файловую систему, находящуюся на устройстве /dev/sda, под именем users.

После монтирования с помощью команды ls /users можно посмотреть, что содержит эта файловая система.

Таким образом, в системе LINUX вся файловая ситема представлена как единое дерево каталогов. Аналогично монтируется сетевая файловая система. Например:

mount host.asu.ugatu.ac.ru:/users /husers

где сетевой диск /users на машине host.asu.ugatu.ac.ru монтируется как каталог /husers. Монтирование внешних устройств при их использовании необходимо выполнять, если в системе нет соответствующих настроек для их автоматического монтирования.

Некоторые устройства монтируются автоматически во время загрузки системы. Они перечислены в файле /etc/fstab. Для любого устройства, которое нужно монтировать автоматически, должна присутствовать своя запись в этом файле. Для использования остальных накопителей вам каждый раз понадобится выполнять команду монтирования.

 

6.2  Файл fstab.

 

Давайте рассмотрим пример файла /etc/fstab:

% cat /etc/fstab
/dev/sda1         /                   ext2        defaults        1   1
/dev/sda2        /usr/local      ext2        defaults        1   1
/dev/sda4        /home           ext2        defaults        1   1
/dev/sdb1        swap            swap        defaults        0   0
/dev/sdb3        /export         ext2        defaults         1   1
none               /dev/pts        devpts      gid=5,mode=620  0   0
none               /proc            proc         defaults        0   0
/dev/fd0         /mnt            ext2          defaults         0   0
/dev/cdrom    /mnt/cdrom    iso9660     ro              0   0

 

В первой колонке указывается название устройства. Название устройства чаще всего зависит от конкретной UNIX (LINUX) системы и от самого устройства. Обычно для IDE-дисков это что-то подобное /dev/hda1, /dev/hda2, /dev/hdb1; для floppy-дисководов /dev/fd0, /dev/fd1 и т.д.

Однако, здесь есть особенности. Для файловой системы procfs, дающей доступ к внутренним структурам ядра, здесь может находиться любой текст, а для сетевой файловой системы указывается имя сервера и подкаталога на нем.

В нашем случае устройства - это пять разделов, распределённые по двух жёстким SCSI-дискам, две специальные файловые системы, для которых не нужны устройства, дискета и CD-ROM.

Во второй колонке указывается точка монтирования устройства. Это должно быть название каталога к которому будет подмонтирована файловая система, за исключением случая с разделом для свопинга (его содержимое может быть любым, но обязательно должно присутствовать, так как этого требует формат файла.). В данном поле нужно обратить внимание на следующее обстоятельство, если у Вас одна система монтируется, к примеру, в каталог /mnt/disk1, а вторая, находящаяся на другом носителе, в каталог /mnt/disk1/razdel, то сторка с описанием /mnt/disk1 должна стоять в файле /etc/fstab до строки с описанием точки монтирования /mnt/disk1/razdel.

В третьей колонке находится тип файловой системы устройства. Для Linux зачастую это будут файловые системы ext2 (устарела), ext3, reiserfs, xfs и jfs. Приводы CD-ROM и DVD обозначаются как iso9660 и auto, а устройствами системы Windows будут msdos, vfat или ntfs.

В четвёртой колонке перечисляются параметры, применяемые к примонтированным файловым системам. Значение defaults прекрасно подойдёт практически во всех случаях. Однако для устройств, используемых только для чтения, следует добавить флаг ro. Существует ещё много других параметров:

-async весь ввод-вывод осуществляется ассинхронно

-atime изменять параметр "время доступа" при обращении к файлам (по умолчанию)

-auto система может быть смонтирована при автоматическом монтировании

-defaults установки по умолчанию rw + suid + dev + exec + auto + nouser + async

-dev система может содержать файлы блочных и символьных устройств

-exec система может содержать исполняемые файлы

-loop для размещения можно использовать обычный файл (стандартно файловые системы размещаются на устройствах, к каковым обычные файлы не относятся, но если указать параметр loop программа mount находит свободное loop-устройство, "связывает" с ним с помощью программы

-losetup заданный файли передает имя этого устройства системному вызову

-mount, именно так монтируются образы CD-ROM)

-noatime

-noauto

-nodev

-noexec

-nosuid

-nouser параметры, противоположные по значению соответствующим параметрам без "no"

-remount перемонтировать уже смонтированную систему, например для изменения параметров первоначального монтирования

-rw смонтировать файловую систему для чтения и для записи (по умолчанию)

-suid разрешить интерпретацию битов SUID и SGID

-sync весь ввод-вывод осуществляется синхронно

-user разрешить обычному пользователь (не обладающему правами root) монтировать и размонтировать данную файловую систему. Этот параметр влечт за собой noexec, nosuid и nodev, если после него явно не указано exec, suid или dev.

Перечисленные опции интерпретируются командой mount. Некоторые параметры должны интерпретироваться ядром системы, в данной статье они не рассматриваются.

Уровень дампа

Это поле используется программой dump, для создания резервных копий. Если файловая система должна участвовать в процессе резервного копирования, то здесь должно стоять число 1, если нет - 0.

 

Порядковый номер для fsck

 Перед автоматическим подмонтированием файловая система проверяется программой fsck, которая проверяет ее целостность, и, если необходимо, исправляет ошибки. Это занимает определенное количество времени, иногда очень большое. Чтобы ускорить этот процесс можно запускать проверку для некоторых устройств параллельно.

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

При установке Linux программа setup создаст за вас основную часть файла fstab.

 

Использование mount можно упростить, если добавить в файл /etc/fstab пункт с монтируемым устройством. Например, допустим, что нам нужно примонтировать CD-ROM, а наш файл fstab похож на тот, что был представлен выше (вообще, если в файле fstab имеется запись для устройства, то оно будет смонтировано автоматически при загрузки ОС). Тогда нам нужно вызвать mount таким образом:

% mount /cdrom

Поскольку в fstab есть запись с указанной точкой монтирования, для mount будет известно, какие опции нужно использовать. Если записи для этого устройства нет, тогда mount нужно использовать с набором параметров:

% mount -t iso9660 -o ro /dev/cdrom /cdrom

В эту команду включена так же самая информация, что и в примере файла fstab, однако нам всё равно нужно указать все части. Здесь -t iso9660 - это тип файловой системы монтируемого устройства. В нашем случае это файловая сисТЕМА iso9660, которая наиболее часто используется на накопителях CD-ROM. Опция -o ro сообщает о том, что устройство используется только для чтения. /dev/cdrom - это название монтируемого устройства, а /cdrom - точка монтирования в файловой системе. Либо команду можно выполнить так:

mount -t auto /dev/cdrom /mnt/cdrom

где тип файловой системы указан как auto, что позволяет ОС самостоятельно определить файловую систему вашего накопителя.

 

Если команда монтирования не сработала, то, может быть, устройства /dev/cdrom нет в вашей системе. Попробуйте

ls -l /dev/cdrom

/dev/cdrom - это просто общепринятая символьная ссылка на реальное устройство.  На IDE-системах, ваш CD-ROM может оказаться, например, на /dev/hdb.  В таком случае, попробуйте /dev/hdb вместо /dev/cdrom в команде mount:

mount -t auto /dev/hdb /mnt/cdrom

Так же следует попробовать /dev/hdc или /dev/hdd, если ваш CD это IDE CDROM на втором IDE- шлейфе. Если и это не поможет, вспомните - может быть у вас не IDE, а SCSI CDROM? Тогда попробуйте /dev/sda, /dev/sr0, etc. Можно использовать /dev/cdrom в любом случае, поскольку некоторые программы считают, что он есть. Если же в  системе его нет, можно создать символьную ссылку, используя, например:

ln -s /dev/hdb /dev/cdrom

если ваш CDROM - это диск /dev/hdb.

Если вы не можете смонтировать из-за ошибки "Устройство уже смонтировано или директория занята (the device is already mounted or directory busy)", то, может быть, точка монтирования /mnt/cdrom - это текущая директория. Сменить текущую директорию на любую другую, чтобы иметь возможность монтировать в ней.

 

Перед тем, как извлечь дискету, CD-ROM или любой другой съёмный накопитель, который в данный момент примонтирован, вы должны сначала отмонтировать его. Это выполняется командой umount. Для этого в файловой системе не должно быть открытых файлов и процессов, ее использующих. То есть она должна быть незанятой. В качестве аргумента к umount вы можете использовать название устройства или точку его монтирования. Например, если вам нужно отмонтировать CD-ROM из предыдущего примера, подойдёт любая из этих команд:

# umount /dev/cdrom

# umount /cdrom

 

Формат функции mount может включать параметр –t , за которым следует параметр, определяющий тип файловой системы и может принимать следующие значения:

msdos - файловая система на основе FAT;

vfat - файловая система FAT32

ext2 – файловая система типа UNIX;

minix – файловая система, соответствующая стандарту POSIX для взаимодействия между различными платформами;

qnx – тип файловой u1089 системы QNX, поддерживается только для чтения;

ufs – файловая система BSD, только для чтения;

ntfs – файловая системаWindows NT, но только для чтения.

 

Поддерживается также ряд экспериментальных файловых систем, например, ext3 - журнальная файловая система, extfs – файловая система с криптографической защитой и т.д. Например, монтирование дискеты, отформатированной в DOS, к каталогу /media/floppy:

mount -t vfat /dev/fd0 /media/floppy

или

mount /media/floppy

где /dev/fd0 - системное имя файла-устройства на гибких дисках.

Дискета, отформатированная в LINUX-системе, может быть смонтирована следующим образом

mount -t ext2 /dev/fd0 /mnt/a

Командой df или mount (без ключей) можно посмотреть, какие файловые системы смонтированы и какой объем они имеют.

Монтирование и размонтирование всех файловых систем выполняется этими командами, кроме корневой файловой системы, которая обслуживается отдельно от остальных.

Файл /etc/mtab хранит информацию о том, какие файловые системы смонтированы в данный момент и с какими параметрами было произведено монтирование.

Короткий список возможных имен устройств:

hda -- Основной(master) диск на IDE-шлейфе

hdb -- Второй(slave) диск на первом IDE-шлейфе (Вы должны иметь как минимум два жестких диска для этого)

hdc -- Основной(master) диск на втором IDE-шлейфе (если у вас два IDE-шлейфа в вашем компьютере, у многих современных компьютеров он есть)

hdd -- Второй(slave) диск на втором IDE-шлейфе (опять же, если есть)

sda   -- Первый SCSI-диск

sdb -- Второй scsi диск ("sdc" третий scsi диск, и т.д.(по латинскому алфавиту). В системе может быть много scsi-дисков).

sr0  -- Первый scsi-CDROM (иногда называется scd0)

sr1 --Второй scsi-CDROM (иногда называется scd1),  (sr2 -третий scsi CDROM, и т.д. В системе может быть много scsi CD).

 

6.3 Разбиение жесткого диска с Cfdisk

 

Для обычного употребления мы рекомендуем файловою систему ext3. Ext3 является стандартной файловой системой для sidux и при этом хорошо поддерживается (maintained).

Откройте консоль, станьте root, что потребует ввода пароля, и стартуйте cfdisk:

su

cfdisk /dev/hda

 

Интерфейс

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

The cfdisk user interface

 

 

Удаление раздела

Чтобы удалить раздел, его выделяют кнопками  вверх, вниз и выбирают команду кнопками вправо, влево Delete (Удалить) и подтверждают клавишей Enter.

The cfdisk user interface

 

Создание нового раздела

Для создания нового раздела используется команда New (Новый) (выбирают кнопками вправо, влево), и нажимают на Enter. Вы должны выбрать между созданием первичного или логического раздела. При создании логического раздела, cfdisk автоматически создает расширенный раздел,в котором уже содержится логический. Затем Вы должны определить величину раздела (в мегабайтах). Если Вы не можете определить величину раздела, возвращайтесь с ESC к основному экрану и выбирай количество мегабайт командой:

Units (Единицы)

The cfdisk user interface

 

Тип раздела

Чтобы устанавить тип раздела, для Linux swap или Linux, выделите соответствующий раздел и используйте команду:

Typ (Тип)

Теперь Вы получите список с типами Нажмите Space, и появляется продолжение на второй странице. Найдите необходимый тип ((Linux swap является тип 82, Linux получает тип 83).

 

The cfdisk user interface

Загружаемый раздел

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

Bootable (Загружаемый)

 

Результат сохраните на диск

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

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

Enter

The cfdisk user interface

 

Завершение

Чтобы выйти из программы, используйте команду Quit (Окончить). После завершения работы cfdisk, перед установкой, необходимо в любом случае перезагрузиться, чтобы перечитать новую таблицу разделов.

 

6.4  Создание разделов с помощью программы fdisk

 

Жесткий диск компьютера может быть разбит на один или более логических дисков, называемых разделы. Схема разбиения описана в таблице разбиения диска, находящейся на 0 секторе жесткого диска. На каждый такой раздел может быть установлена своя операционная сисТЕМА.

Для работы ОС Linux необходимо создать по крайней мере один раздел. На этом разделе должен находиться корневой каталог файловой системы. Второй раздел, посвященный Linux, обычно создают как раздел подкачки (swap). Кроме того, чтобы BIOS получил гарантированный доступ к загрузочным файлам, дополнительно создают на первых 1024 цилиндрах отдельный загрузочный раздел, где будет храниться образ ядра и т.д.

fdisk — утилита для создания и редактирования таблицы разделов.

fdisk понимает таблицы разделов типа DOS, типа BSD и типа SUN.

fdisk не может создавать большие разделы и не понимает таблицы разделов типа GPT (GUID Partition Table).

 

Работа с утилитой fdisk осуществляется через командный интерфейс.

Наберите fdisk /dev/hda для разбиения первого жесткого диска. Вы попадете в командный интерфейс. Команда m выдает возможные команды с расшифровкой, команда p печатает существующую в настоящий момент таблицу разделов.

The number of cylinders for this disk is set to 4870.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

   (e.g., DOS FDISK, OS/2 FDISK)

 

Command (m for help): m

Command action

   a   снять или установить флаг активности раздела (потребуется ввести номер

   b   редактировать bsd метку диска

   c   переключить флаг совместимости DOS

   d   удалить раздел;

   l   вывести список известных программе типов разделов;

   m   помощь

   n   создать (добавить) новый раздел;

   o   создать новую пустую таблицу разделов в стиле DOS;

   p   вывести таблицу разделов

   q   выйти из программы, не записывая на диск сделанные изменения;

   s   создать новый пустой  диск SUN

   t   изменить метку типа раздела;

   v   проверить таблицу разделов;

   w   записать исправленную таблицу разделов на диск и выйти из программы;

   x   дополнительные возможности (только для экспертов).

 

Command (m for help): p

 

Disk /dev/hda: 40.0 GB, 40060403712 bytes

255 heads, 63 sectors/track, 4870 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/hda1               1        1275    10241406   83  Linux

/dev/hda2            1276        2550    10241437+  83  Linux

/dev/hda3   *        2551        3825    10241437+  83  Linux

/dev/hda4            3826        4870     8393962+   5  Extended

/dev/hda5            3826        3858      265041   82  Linux swap

/dev/hda6            3859        4870     8128858+  83  Linux

 

6.5 Форматирование дисков

 

Форматирование дисков выполняется в два этапа. На первом этапе непосредственно производится форматирование (несмонтированного) диска.

 

fdformat [options] device

 Низкоуровневое форматирование дискет. Устройством (device) для форматирования обычно является /dev/fd0 или /dev/fdl. Параметр -n Не производить проверку после завершения форматирования.

На втором этапе создается корневая файловая сисТЕМА с использованием системной функции mke2fs (mkfs) с аргументами.

mke2fs [options] device [blocks]

mkfs.ext2 [options] device [blocks]

Команда системного администрирования. Форматирование устройства под файловую систему ext2fs. Можно указать количество блоков на устройстве либо позволить mke2fs определить его автоматически.

Параметры

—b block-size Указать размер блока в байтах.

-с  Перед форматированием проверить устройство на наличие сбойных блоков.

-f fragment-size Указать размер фрагмента в байтах.

—i bytes-per-inode Создавать inode-блок для каждых bytes-per-inode байт дискового пространства. Значение должно быть больше либо равно 1024. По умолчанию равно 4096.

-1 filename Прочитать список сбойных блоков из указанного файла.

-m percentage Зарезервировать percentage процентов блоков для привилегированного пользователя.

-q Тихий режим.

-v Режим диагностики.

-S Записывать только дескрипторы суперблока и групп блоков. Запретить запись таблицы inode-блоков, а также блочных и inode-битовых карт. Параметр полезен при попытках спасти поврежденную файловую систему.

 

mkfs [options} [fs-options] filesys [blocks]

Создать файловую систему на устройстве (например, на разделе жесткого диска). Аргумент filesys является либо именем устройства, либо точкой монтирования. Команда, по существу, представляет собой интерфейс для вызова соответствующего варианта mkfs в зависимости от файловой системы, указанной в параметре -t. К примеру, для создания второй расширенной файловой системы Linux вызывается mkfs.ext2 (что идентично mke2fs); файловые системы MS-DOS используют mkfs.msdos. fs-options - это параметры создаваемой системы, blocks - размер файловой системы в блоках по 1024 байт.

Параметры

—V Диагностика работы, включая все выполняемые для создания файловой системы команды.

—t fs-type Тип создаваемой файловой системы. Специфические параметры файловой системы

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

—с Перед созданием файловой системы произвести проверку на наличие сбойных блоков.

—1 file Взять список существующих сбойных блоков из указанного файла.

—v Диагностика работы.

 

Создание файловой системы в стиле MS DOS можно выполнить командой mformat без проверки (приставка m позволяет выполнять DOS - команды в среде Linux: mdir, mcopy и др.)

mformat a:

При форматировании и создании файловой системы диск должен быть размонтирован.

 

Лабораторная работа № 6 к теме «Монтирование файловых систем,

 работа с дисками».

 

1. Цель работы

 

Целью работы является изучение принципов взаимодействия LINUX- системы с внешними устройствами и формирования системных и инсталляционных дисков.

 

2. Задания   для лабораторных работ

 

1.          В введите: ls /dev > HddFile.txt

2.          Выключите виртуальную машину

3.          При выключенной виртуальной машине открыть панель конфигурации (VM->Settings).

4.          Создать небольшой жесткий диск и подключить его к своей виртуальной машине.

5.          Включить машину. Открыть консоль. Перелогиниться суперпользователем.

6.          В введите: cat /etc/fstab и cat/etc/mtab. Ознакомиться с содержимым файлов.

7.          В введите: ls /dev

8.          В листинге есть файлы hdaXX и hdbXX (или sdaXX и sdbXX если виртуальные диски являются scsi дисками), соответствующие первому и второму жестким дискам.

9.          Найти среди них созданный жесткий диск (используйте файл, созданный на первом шаге задания, он поможет найти новое устройство жесткого диска)

10.     Создайте на этом жестком диске раздел на весь объем с файловой системой ext3.

11.     После создания раздела его необходимо отформатировать (в качестве типа файловой системы для форматирования используйте ext3)

12.     Создать каталог в /mnt, например disk

13.     Ввести mount –t auto /dev/hdb1 /mnt/disk.

14.     Перейти на смонтированную файловую систему. Попробовать зайти туда же из графического интерфейса или из консоли.

15.     Ввести cat /etc/mtab

16.     В строке описания диска отсутствует опция маски доступа. Значит доступ может получить лишь тот, кто смонтировал ФС, то есть суперпользователь.

17.     Добавить запись диска в файл /etc/fstab.

18.     Проверить автомонтирование данного диска после перезагрузке машины.

19.     Размонтировать ФС (можно воспользоваться unount /mnt/disk или umount /dev/hdb1).

20.     Видоизменяем нашу команду как: mounto umask=0137 /dev/hdb1 /mnt/disk и пробуем зайти с правами обычного пользователя.

21.     Вводим команду ls -l /mnt и проверяем права доступа.

22.      Поэкспериментируйте с уровнем доступа к файловой системе (umask) и к обычным каталогам (команда chmod).

23.      Для автоматического монтирования ФС при загрузке нужно создать строку в файле /etc/fstab. (Можно скопировать соответствующую строку из /etc/mtab  в том же виде). Перезагрузитесь и посмотрите результат.

 

Отчет об ошибках при монтировании посмотреть командой dmesg

Флеш диски представлены в системе файлами /dev/sdXX, так как доступ к ним реализован через scsi интерфейс. Файловой системой используемой для их монтирования является vfat.

 

Контрольные вопросы

 

1. Каким образом можно отформатировать диск для поддержки файловой системы на основе FAT, NTFS и для взаимодействия разных типов файловых систем.

2. В чем заключаются функции монтирования и размонтирования файловой системы и какими командами они выполняются в ОС Linux.

3. Какие образы требуются для создания гибкого системного диска ОС Linux, где они размещаются.

4. Каким способом можно перенести образы на формируемый системный диск.

5. Как ограничить доступ к устройствам на гибких дисках.

6. Какие режимы работы может поддерживать ОС Linux на гибких дисках и какие режимы работы нельзя подключить.

ТЕМА 7. Восстановление пароля администратора при помощи LiveCD дистрибутива.

 

LiveCD – особый вид дистрибутивов Linux, загружающихся прямо с диска без установки. Примеры LiveCD дистрибутивов: SLAX, KNOPPIX, TravelCD и др.

Начало работы:

1.                Загружаем компьютер с любого LiveCD Linux дистрибутива.

2.                Заходим под пользователем root и загружаем терминал

3.                Далее возможны два варианта восстановления пароля суперпользователя:

1.               Изменение пароля на новый

2.               Обнуление пароля

 

7.1 Для ОС LINUX

 

Вариант 1

 

1.                      Нам надо примонтировать коренвой раздел нашей Линукс системы. Для этого необходимо знать, где находится система. Например, для первого раздела на первом SCSI-диске набираем команду:

 

mount –t auto /dev/sda1 /mnt/linux

 

Конечно предварительно надо создать директорию для монтирования. Другой пример: для второго раздела на первом IDE-диске:

 

mount –t auto /dev/hda2 /mnt/linux

 

2.                      Теперь переходим в директорию, куда смонтировали раздел с установленной системой:

 

cd /mnt/linux

 

3.                      Далее необходимо выполнить команду:

 

chroot .

 

Либо можно не переходя в директорию набрать команду

 

chroot /mnt/linux

 

Произойдет автоматический переход в эту директорию

4.                      Предыдущая команда заставляет Linux считать указанную директорию корневой, поэтому все команды, которые мы будем набирать в данном терминале, будут непосредственно влиять на нашу установленную Linux-систему. Поэтому, набрав команду

 

 passwd

 

или команду

 

passwd <user_name>

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

5.                      Поменяв пароль, вводим команду

 

reboot

 

или просто перезагружаем систему с жесткого диска и видим, что пароль суперпользователя изменился.

 

Вариант 2

 

·                  Выполняем первый пункт предыдущего варианта (монтирование раздела с установленной системой), т.к. нам необходимо обнулить пароль именно там.

·                  Все учетные записи в Linux хранятся в файле /etc/passwd, но т.к. многим программам, таким как login, ftp и т.п. необходим доступ к этому файлу, пароли в этом файле теперь не хранятся.

Дополнительная информация (в т.ч. пароль) к учетной записи храниться в файле /etc/shadow.

·                  Строки этого файла имеют следующий формат:

имя_пользователя: зашифрованный_пароль:... (другая  дополнительная информация)

Чтобы узнать подробный формат данного и других конфигурационных файлов, обращайтесь к 5-ому разделу справочной системы Linux:

 

man 5 shadow

 

·                  Чтобы удалить пароль администратора или любого другого пользователя в системе, необходимо удалить все символы от 1-ого до 2-ого двоеточия в файле /etc/shadow в строчке, начинающейся с имени нужного пользователя.

·                  Например, 1-ая строчка файла /etc/shadow выглядит вот так:

root:$1$gW2e1VfA$Xa2uvx2qU2R3UJo/kLaxr0:13652:0:99999:7:::

·                  Набираем команду

 

vi /mnt/linux/etc/shadow

Преобразуем первую строку в строку вида

root::13652:0:99999:7:::

и сохраняем файл.

Перезагружаем систему и заходим под нужным пользователем не вводя пароля.

 

7.2  Для ОС WINDOWS

        

Пароли в Windows хранятся в зашифрованном виде: сначала пароль шифруется, а после его хэш шифруется по хэшу системы, который хранится в файле windows\system32\config\system. Таким образом, файл SAM, находящийся в том же каталоге, содержит только хэши хэшей паролей. Пароль можно либо просто поменять, либо подобрать его. Первый способ, как правило, более быстрый, но не годится для сильно заметен, т.к. восстановить предыдущий пароль почти невозможно. Второй способ более незаметен, но требует больше времени, т.к. алгоритмы шифрования по большей части работают только в одну сторону, иначе они были бы бесполезны, т.е. получить сразу из хэша пароль практически невозможно (исключением является т.н. Rainbow bruteforce).

 

Смена пароля в WINDOWS

 

Рассмотрим один из способов изменения пароля. В этом способе необходимо примонтировать раздел с Windows и предварительно поставить утилиту chntpw. Для изменения паролей утилите достаточно указать лишь расположение SAM-файла. Удобнее всего пользоваться утилитой в интерактивном режиме, указав опцию -i, после этого, следуя инструкциям, можно с лёгкостью поменять или убрать пароль у любого пользователя.

 

 

Запустив chntpw выбрать "1 - Edit user data and passwords", далее программа выведет список всех пользователей системы, даже неактивных, здесь необходимо указать либо полное имя пользователя, либо его RID в hex-формате в виде 0x<RID>. Далее можно убрать пароль(1)  поставить свой(2), а также сделать любого пользователя администратором(3) или разблокировать пользователя(4). Для того, чтобы изменения записались в файл, нужно корректно выйти из утилиты, для этого следуя инструкциям, сначала вводим "!", а потом "q". На вопрос о подтверждении записи в файл отвечаем согласием.

 

 

 

Один из способов подбора пароля происходит с помощью утилит bkhive, samdump2 и john (the ripper). Программа bkhive вытаскивает из файла system хэш стистемы, samdump вытаскивает уже хэши паролей по заданному хэшу системы, а john подбирает пароли.

#bkhive /mnt/hda1/WINDOWS/system32/config/system syskey.txt  - сохраняет ключ системы в файл  syskey.txt

#samdump2-linux /mnt/hda1/WINDOWS/system32/config/sam syskey.txt>hashes.txt - вытаскивает хэши паролей и сохраняет их в файл  hashes.txt

Далее идёт непосредственно подбор паролей john'ом. John The Ripper — свободная программа, предназначенная для восстановления паролей по их хэшам. Основное назначение программы — аудит слабых паролей в UNIX системах. Программа также может выполнять аудит NTLM хэшей, Kerberos, и др. Существуют реализации под различные ОС. Весьма популярна из-за поддержки большого количества хэшей, автораспознавания хэша и настраиваемого взломщика. Также поддерживает модули, предоставляющие поддержку MD4 хэшей, LDAP и MySQL паролей.

John The Ripper проводить атаку по словарю и брутфорс. В режиме атаки по словарю программа берёт предполагаемые пароли из указанного файла и сверяет их хэш с атакуемым хэшем. В режиме брутфорса программа перебирает все возможные комбинации пароля.

#john hashes.txt -w:eng.txt  - подбор по словарю eng.txt по хэшам, определённым программой.

#john hashes.txt -f:NT -w:eng.txt  - подбор паролей по словарю по NT-хэшам

#john hashes.txt -i:all — подбор в режиме брутфорса по всем наборам

Для проведения такого подбора достаточно скопировать с целевой системы файлы SAM и system, после чего, подбор можно совершать на любой машине. Недостатком этого метода является длительность подбора сильных паролей и, на данное время, трудности подбора паролей на нелатинской раскладке.

 

Лабораторная работа №7 к теме «Восстановление пароля администратора при помощи LiveCD дистрибутива. Команда grep. Команда test».

 

1  Цель работы

 

-               научить студента восстанавливать пароль администратора при помощи LiveCD дистрибутива.

 

2           Рабочее задание

 

 Восстановить пароля администратора при помощи LiveCD дистрибутива:

 

1.                Загрузить копьютер с любого LiveCD Linux дистрибутива.

2.                Зайти под пользователем root и загружаем терминал

3.                Восстановить  пароль суперпользователя двумя вариантами:

-       через изменение пароля на новый

-       через обнуление пароля.

 

7.4 Контрольные вопросы

 

1. Каким образом можно отформатировать диск для поддержки файловой системы на основе FAT, NTFS и для взаимодействия разных типов файловых систем.

2. В чем заключаются функции монтирования и размонтирования файловой системы и какими командами они выполняются в ОС Linux.

3. Какие образы требуются для создания гибкого системного диска ОС Linux, где они размещаются.

4. Каким способом можно перенести образы на формируемый системный диск.

5. Как ограничить доступ к устройствам на гибких дисках.

6. Какие режимы работы может поддерживать ОС Linux на гибких дисках и какие режимы работы нельзя подключить.

 

 ТЕМА 8. SHELL. Создание и выполнение командных файлов

 в среде ОС LINUX.

 

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

 

8.3.1. Переменные командного интерпретатора

 

Для  обозначения  переменных Shell  используется  последовательность букв, цифр и символов подчеркивания; переменные не могут начинаться с цифры. Присваивание значений переменным проводится с использованием знака = , например, РS2 = '<' . Для обращения к значению переменной перед ее именем ставится  знак $. Их можно разделить на следующие группы:

- позиционные переменные вида $n, где n - целое число;

- простые переменные,  значения которых может  задавать пользователь или они могут устанавливаться интерпретатором;

- специальные переменные # ? - ! $ устанавливаются интерпретатором  и  позволяют  получить  информацию  о  числе  позиционных переменных, коде завершения последней команды, идентификационном  номере  текущего  и фонового  процессов,  о  текущих  флагах  интерпретатора Shell.

Простые переменные. Shell присваивает значения переменным:

z=1000

х= $z

есhо $х

1000

Здесь переменной x присвоено значение z.

Позиционные переменные. Переменные вида $n, где n - целое число,  используются  для  идентификации  позиций  элементов  в  командной  строке  с  помощью  номеров,  начиная  с  нуля.  Например,  в командной строке

саt  text_1  text_2...text_9

аргументы  идентифицируются  параметрами $1...$9.  Для  имени  команды  всегда  используется S0.  В  данном  случае $0 -  это  саt, $1 -text_1, $2 - text_2 и т.д. Для присваивания значений позиционным переменным используется команда set, например:

set arg_1 arg_2... arg_9

здесь $1 присваивается значение аргумента arg_1, $2 - arg_2 и т.д.

Для доступа к аргументам используется команда echo, например:

echo $1 $2 $9

arg_1 arg_2 arg_9

Для  получения  информации  обо  всех  аргументах (включая  последний) используют метасимвол *. Пример:

echo $*

arg_2  arg_3 ... arg_10  arg_11  arg_12

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

Специальные переменные. Переменные - ? # $ ! устанавливаются  только Shell. Они  позволяют  с  помощью  команды  echo  получить следующую информацию:

- –  текущие  флаги  интерпретатора (установка  флагов  может быть изменена командой set);

# – число аргументов, которое было сохранено интерпретатором при выполнении какой-либо команды;

? – код возврата последней выполняемой команды;

$ – числовой идентификатор текущего процесса PID;

! – PID последнего фонового процесса.

 

8.3.2. Арифметические операции

Команда  expr (express --  выражать)  вычисляет  выражение expression  и  записывает  результат  в  стандартный  вывод.  Элементы выражения разделяются пробелами; символы, имеющие специальный смысл в командном языке, нужно экранировать. Строки, содержащие специальные  символы,  заключают  в  апострофы. Используя  команду

expr,  можно  выполнять  сложение,  вычитание,  умножение,  деление, взятие остатка, сопоставление символов и т. д.

 

Пример. Сложение, вычитание:

b=190

a=` expr 200 - $b`

где ` - обратная кавычка (левая верхняя клавиша). Умножение *, деление /, взятие остатка %:

d=` expr $a + 125 "*" 10`

c=` expr $d % 13`

Здесь  знак  умножения  заключается  в  двойные  кавычки,  чтобы интерпретатор не воспринимал его как метасимвол. Во второй строке переменной с присваивается значение остатка от деления переменной d на 13.

Сопоставление  символов  с  указанием  числа  совпадающих  символов:

concur=` expr "abcdefgh" : "abcde"`

echo $concur

ответ 5.

Операция сопоставления обозначается двоеточием (:). Результат - переменная соncur.

Подсчет  числа  символов  в  цепочках  символов.  Операция  выполняется с использованием функции length в команде expr:

chain="The program is written in Assembler"

str=` expr length "$chain"`

Echo $str

ответ 35. Здесь результат подсчета обозначен переменной str.

        

8.3.3. Встроенные команды

 

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

cd [dir] - назначение текущего каталога;

exec [cmd [arg...]] <имя файла> - выполнение команды, заданной аргументами cmd и arg, путем вызова соответствующего выполняемого файла.

umask [ -o | -s] [nnn] -  устанавливает  маску  создания  файла (маску режимов доступа создаваемого файла, равную восьмеричному числу nnn: 3  восьмеричных цифры для пользователя,  группы и других).  Если  аргумент nnn  отсутствует,  то  команда  сообщает  текущее значение маски. При наличии флага -o маска выводится в восьмеричном виде, при наличии флага -s - в символьном представлении;

set, unset - режим работы интерпретатора, присваивание  значений параметрам;

eval [ -arg] - вычисление и выполнение команды;

sh <filename.sh> - выполнение командного файла filename.sh;

exit [n] - приводит к прекращению выполнения программы, возвращает код возврата, равный нулю, в вызывающую программу;

trap [cmd] [cond] -  перехват  сигналов  прерывания,  где: cmd - выполняемая команда; cond=0 или EXIT - в этом случае команда cmd выполняется  при  завершении  интерпретатора; cond=ERR -  команда cmd  выполняется  при  обнаружении  ошибки; cond -  символьное  или числовое обозначение сигнала, в этом случае команда cmd выполня-

ется при приходе этого сигнала;

export [name [=word]...] -  включение  в  среду. Команда  export объявляет, что переменные name будут включаться в среду всех вызываемых впоследствии команд;

wait [n] - ожидание завершения процесса. Команда без аргументов  ожидает  завершения  процессов,  запущенных  синхронно.  Если указан числовой аргумент n, то wait ожидает фоновый процесс с номером n;

read name -  команда  вводит  строку  со  стандартного  ввода  и присваивает прочитанные слова переменным, заданным аргументами name.

 

Пример. Пусть имеется shell-файл data, содержащий две команды:

echo -n "Please write down your name:"

read name

Если вызвать файл на выполнение, введя  его имя,  то на  экране появится сообщение:

Please write down your name:

Программа ожидает ввода с клавиатуры (в данном случае - фамилии пользователя). После ввода фамилии и нажатия клавиши Enter команда выполнится и на следующей строке появится знак - приглашение.

        

8.3.4. Управление программами

 

Команды true и false служат для установления требуемого кода завершения пpоцесса: true - успешное завершение, код завершения 0; false - неуспешное завершение, код может иметь несколько значений, с помощью которых определяется причина неуспешного завершения.

Коды  завершения  команд  используются  для  принятия  решения  о дальнейших действиях в операторах цикла while и until и в условном операторе if. Многие команды LINUX вырабатывают код завершениятолько для поддержки этих операторов.

Условный  оператор if  проверяет  значение  выражения.  Если оно равно true, Shell выполняет следующий за if оператор, если false, то следующий оператор пропускается. Формат оператора if:

if  <условие>

      then

                 list1

      else

                 list2

   fi

Команда  test (проверить) используется  с  условным  оператором if и операторами циклов. Действия при этом зависят от кода возврата test. Test проводит анализ файлов, числовых значений, цепочек символов. Нулевой код выдается, если при проверке результат положителен, ненулевой код при отрицательном результате проверки.

В случае анализа файлов синтаксис команды следующий:

test [ -rwfds] file

где

-r – файл существует и его можно прочитать (код завершения 0);

-w – файл существует и в него можно записывать;

-f – файл существует и не является каталогом;

-d – файл существует и является каталогом;

-s – размер файла отличен от нуля.

При анализе числовых значений команда  test проверяет, истинно ли данное отношение, например, равны ли А и В . Сравнение выполняется в формате:

-eq                     эквивалентно             А  =  В

-ne                     эквивалентно             А <> B

     test A -ge B            эквивалентно             А >= В

-le                      эквивалентно             А <= В

-gt                     эквивалентно              А  >  В

-lt                      эквивалентно             А  <  В

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

 

Кроме команды  test имеются  еще некоторые  средства для проверки:

! -  операция  отрицания  инвертирует  значение  выражения,  например, выражение if test true эквивалентно выражению if test ! false;

o -  двуместная  операция "ИЛИ" (or)  дает  значение true,  если один из операндов имеет значение true;

a - двуместная  операция "И" (and) дает  значение true,  если  оба операнда имеют значение true.

 

8.3.5. Циклы

 

Оператор  цикла  с  условием  while true  и  while false.  Команда while (пока) формирует циклы, которые выполняются до тех пор, пока команда while определяет значение следующего за ним выражения как true или false. Фоpмат оператора цикла с условием while true:

while           list1

       do

                       list2

                done

Здесь list1 и list2 - списки команд. While проверяет код возврата списка команд, стоящих после while, и если его значение равно 0, то выполняются команды, стоящие между do и done. Оператор цикла с условием while false имеет формат:

until            list1

       do

list2

      done

В отличие от предыдущего случая условием выполнения команд между  do  и  done  является  ненулевое  значение  возврата. Программный  цикл  может  быть  размещен  внутри  другого  цикла (вложенный цикл).  Оператор  break  прерывает  ближайший  к  нему  цикл.  Если  в программу ввести оператор break с уровнем 2 (break 2), то это обеспечит выход за пределы двух циклов и завершение программы. 

Оператор  continue  передает  управление  ближайшему  в  цикле оператору while.

Оператор цикла с перечислением for:

 

for    name    in    [wordlist]

do

list

done

где  name - переменная; wordlist - последовательность слов; list - список  команд. Переменная name  получает  значение  первого  слова  последовательности wordlist,  после  этого  выполняется  список  команд, стоящий  между  do  и  done.  Затем name  получает  значение  второго слова wordlist  и  снова  выполняется  список list. Выполнение прекра-

щается после того, как кончится список wordlist.

Ветвление по многим направлениям case. Команда case обеспечивает  ветвление  по многим  направлениям  в  зависимости  от  значений аргументов команды. Формат:

case <string> in

s1) <list1>;;

s2) <list2>;;

 .

 .

 .

sn) <listn>;;

*) <list>

esac

 

3десь list1, list2 ... listn -  список  команд Производится  сравнение шаблона string с шаблонами s1, s2 ... sk ... sn. При совпадении выполняется список команд, стоящий между текущим шаблоном sk и соответствующими знаками ;;.

 

8.3.6. Переменные

 

Переменные начинаются с символа $.

Если хотите передавать какие либо атрибуты команде, то для этого существуют переменные, предоставляемые системой($1,$2,$3 и т.д.). Их называют позиционными, т.к. имя переменной соответствует ее позиции.

#!/bin/sh

echo hello $1 world from $2

Теперь выполните с атрибутами: ./script my student

чтобы выполнить команду и присвоить вывод переменной нужно заключить команду в апострофы(«`»). Сравните вывод двух скриптов:

#!/bin/sh

myvar=ls

echo $myvar

и

#!/bin/sh

myvar=`ls`

echo $myvar

 

Теперь перейдем к циклам и условным переходам:

#!/bin/sh

if [ $1 = "saluton" ]; then

         for student in $*

         do

                   if [ $student = "saluton" ]; then echo saluton studentoj

                   else

                            echo saluton $student

                   fi

         done

else echo saluton `id`

fi

 

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

/home/guest# cat chapter1 chapter2 chapter3 > book

/home/guest#  wc  -1 book
/home/guest#  lp book

объединяют файлы, содержащие главы книги: chapter1, chapter2, chapter3, и помещают результат в файл book. Затем подсчитывается число строк в книге (в файле book) и отображается на дисплее и, наконец, печатается командой lр.

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

#!/bin/sh

# A shell  script to create and print the book

cat chapter1  chapter2  chapter3  > book
wc -1  book
lp book

Если этот сценарий будет помещен в файл makebook, то вы можете просто использовать далее команду

/home/guest# makebook

которая выполнит все команды сценария.

Сценарии shell -это обычные текстовые файлы, которые вы можете создавать с помощью редактора. Давайте  подробно посмотрим   на  этот   сценарий.  

·                  Первая   строка "#!bin/sh/" говорит о том,  что  этот файл есть сценарий и сообщает shell,  как  выполнить  сценарий.  В  данном  случае необходимо передать сценарий для выполнения команде bin/sh/, где  bin/sh/ -  сама программа  shell.  Почему это  важно? В большинстве систем UNIX bin/sh/ - это shell Баурновского типа, например bash. Инициируя работу сценария shell выполняется, используя bin/sh/, при этом мы гарантируем, что сценарий будет выполняться именно под shell Баурновского типа (а не, скажем, под С shell). Этот сценарий будет выполняться под shell Баурна, даже если вы используете Tcsh (или какой-то другой С shell) как свою рабочую оболочку.

·                  Вторая строка представляет из себя комментарий.
Комментарии начинаются символом "#" и могут продолжаться до конца строки - они игнорируются
shell и могут использоваться программистом для пояснений.

·                  Остальные строки сценария - обычные команды в том виде, в каком бы вы их вводили прямо на выполнение.

Shell читает каждую строку сценария и выполняет эту строку, как будто вы ввели эту строку в ответ на подсказку shell.

Права доступа важны для сценариев. Если вы создали сценарий, вы должны убедиться, что вы имеете права на его выполнение. Если вы создавали сценарий в редакторе, то он (обычно) не получает автоматически прав на выполнение. Можно
использовать команду 
/
home/guest chmod u+x makebook  чтобы дать самому себе разрешение на выполнение shell- сценария makebook.

 

Пример 2: Создадим файл в домашнем каталоге:  vi script.Чтобы сисТЕМА смогла разобрать что это скрипт, а так же тип интерпретатора, на первой строке надо записать : #!/bin/sh

Можно вводить команды, которые вы вводите в консоли например : ls , mkdir mydir и т.д. #!/bin/sh

ls

mkdir mydir

echo hello world

Теперь нужно сделать скрипт запускаемым: chmod u+x script

И выполнить : ./script

 

Пример 3: Это пример скрипта, где используется сложный синтаксис команд: вывод одной используется как ввод другой с дополнительным форматированием и т.д. Так же видно, что были использованы переменные.

#!/bin/sh

var=`ps u | grep -m 1 sc.sh | cut -f1 -d' '`

uid=`cat /etc/passwd | grep $var | cut -f3 -d':'`

gid=`cat /etc/passwd | grep $var | cut -f4 -d':'`

echo "Данные пользователя, запустившего скрипт:"

echo "UID: " $uid

echo "GID: " $gid

echo "Name:" $var

 

Пример 4: Разобрать самостоятельно-

echo -n 'Please, write down your age'

read age

case $age in

test $age -le 20) echo 'you are so young' ;;

test $age -le 40) echo 'you are still young' ;;

test $age -le 70) echo 'you are too young' ;;

*)echo 'Please, write down once more'

esac

В конце текста помещена звездочка * на случай неправильного ввода числа.

 

Лабораторная работа №8 к теме «СОЗДАНИЕ И ВЫПОЛНЕНИЕ КОМАНДНЫХ ФАЙЛОВ В СРЕДЕ ОС LINUX»

 

1  Цель работы

 

- изучение студентами  методов  создания и выполнения командных файлов на языке Shell - интерпретатора.

 

2  Рабочее задание

 

Составьте  и  выполните shell -  программы,  включающей  следующие действия:

1. Вывод на экран списка параметров командной строки с указанием номера каждого параметра.

2. Присвоение переменным А, В и С значений 10, 100 и 200, вычисление и вывод результатов по формуле  D=(A*2 + B/3)*C.

3. Формирование файла со списком файлов в домашнем каталоге, вывод на экран этого списка в алфавитном порядке и общего количества файлов.

4. Переход в другой каталог, формирование файла с листингом каталога и возвращение в исходный каталог.

5. Запрос и ввод имени пользователя, сравнение с  текущим логическим именем пользователя и вывод сообщения: верно/неверно.

6.  Запрос и  ввод имени файла  в  текущем  каталоге и  вывод  сообщения о типе файла.

7. Циклическое  чтение  системного  времени и  очистка  экрана  в заданный момент.

8.  Циклический  просмотр  списка  файлов  и  выдача  сообщения при появлении заданного имени в списке.

 

 Контрольные вопросы

 

1. Какое назначение имеют shell - файлы?

2. Как создать shell - файл и сделать его выполняемым?

3. Какие типы переменных используются в shell - файлах?

4. В чем заключается анализ цепочки символов?

5. Какие встроенные команды используются в shell - файлах?

6. Как производится управление программами?

7. Назовите операторы создания циклов.

 

 

Список использованной литературы 

1. Скловская А.М. Команды LINUX. Справочник. Издательство: Диа-софт. 2004. – 848 с.

2.  Моли Б. Unix/Linux: Теория и практика программирования. Издательство: КУДИЦ-ОБРАЗ, 2004. – 576 с.

3. Д. Н. Колисниченко, Питер В. Аллен. Linux. Полное руководство. Издательство: Наука и техника,2005.-784 с.

4. Бендел Д., Нейпир Р. Использование Linux. /Пер.с англ. - М.: издательский дом "Вильямс",2004. - 784 с.

5. Немет Э., Снайдер Г., Сибас С., Хейн Т.Р. UNIX: руководство системного администратора. Для профессионалов / Пер. с англ. – СП.:Питер; К.: Издательская группа BHV, 2002. – 928 с.

6.  http://www.linuxjournal.com.

7.  http://pluto.xTech.RU/Russian/Unix-Doc/ - сервер Новосибирского института систем информатики. Содержит книги и документацию по UNIX на русском языке.

 

Литература:

1. Бешков А. Виртуальный полигон для администратора и разработчика. – // Журнал «Системный администратор», №9(10), сентябрь 2003 г. – 08-23 с.

2. Бешков А. Виртуальный полигон для разработчика и администратора  на  основе  Linux  и  VMWare.  –  //  Журнал «Системный администратор», №11(12), ноябрь 2003 г. –04-17 с.

3. Бешков  А.  VMWare  со  всеми  удобствами.  –  //  Журнал «Системный  администратор»,  №6(19),  июнь  2004  г.  –12-17 с.

4. Костромин  В.  Linux  для  пользователя.  -  «БХВ-Петер-бург», 2002 г.