Найти минимум функции n переменных методом Гольдфарба

 

Пояснительная записка к дипломному проекту


страниц, 66 рисунков, 23 таблицы и 33 источника.

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

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

Метод исследования - сбор статистических данных, анализ, написание программы.

Аппаратура - компьютер IBM PC совместимый под управлением операционной ситемы Linux Debian, сетевые карты Ethernet.

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

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

Прогнозные предложения о развитии объекта исследования - ряд мер по оптимизации работы сети на платформе операционной системы Linux.

Перечень ключевых слов - операционная система (ОС) Linux, протоколы управления, оптимизация работы сети.


СОДЕРАЖНИЕ


ВВЕДЕНИЕ

. ПОСТАНОВКА ЗАДАЧИ

. ОБЗОР ЛИТЕРАТУРНЫХ ИСТОЧНИКОВ

.1 Основные задачи оптимизации сетей

.2 Оптимизация работы сети на основе протоколов управления в ОС Linux

3. ОБОСНОВАНИЕ АКТУАЛЬНОСТИ ТЕМЫ И ЕЕ ПРАКТИЧЕСКОЙ ЗНАЧИМОсти

. СИСТЕМОТЕХНИЧЕСКИЙ АНАЛИЗ

.1 Принцип конечной цели

.2 Принцип единства

.3 Принцип связности

.4 Принцип модульности

.5 Принцип иерархии

.6 Принцип функциональности

.7 Принцип развития

.8 Принцип сочетания централизации и децентрализации32

.9 Принцип учета неопределенностей и случайностей32

. ВАРИАНТНЫЙ АНАЛИЗ РЕАЛИЗАЦИИ ПРОГРАММНОГО МОДУЛЯ

.1 Построение иерархии

.2 Построение матрицы парных сравнений 2-го уровня

.3 Оценка критериев (второй уровень иерархии)

.3.1 Синтез локальных приоритетов для матрицы парных сравнений 2-го уровня

.3.2 Исследование на согласованность матрицы парных сравнений 2-го уровня

.3.3 Анализ результатов оценки критериев

.4 Оценка альтернатив (третий уровень иерархии)

.4.1 Критерий «Быстродействие»

.4.2 Критерий «Стоимость»

.4.3 Критерий «Используемые ресурсы»

.4.4 Критерий «Возможность аутентификации сервера»

.4.5 Критерий «Возможность шифрования паролей и данных»

.4.6 Анализ результатов оценки альтернатив

.5 Синтез глобальных приоритетов

.6 Количественные оценки вкладов критериев в конечный результат

. ОПИСАНИЕ ПРОГРАММНОГО МОДУЛЯ

.1 Общие сведения

.2 Функциональное назначение

.3 Руководство пользователя

.4 Описание логической структуры

ТЕСТИРОВАНИЕ ПРОГРАММНОГО ПРОДУКТА

.1 Объект испытаний

.2 Цель испытаний

.3 Требования к программе

.4 Средства и порядок испытаний

.5 Методы испытаний

.6 Анализ результатов тестирования

. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ СОЗДАНИЯ ПРОГРАММНОГО ПРОДУКТА

.1 Исследование программного продукта

.1.1 Назначение программного продукта

.1.2 Основные свойства программного продукта

.1.3 Основные потребительские свойства

.1.4 Требования к функциональным характеристикам программного продукта

.1.5 Требования к надежности программного продукта

.1.6 Требования к условиям эксплуатации

.1.7 Конкурентоспособность

.1.8 Оценка рыночной направленности

.2 Исследование рынка сбыта программного продукта (ПП)

.2.1 Сегментация рынка

.2.2 Анализ тенденции рынка

.2.3 Предпочтительный потребитель

.2.4 Возможные причины финансовых неудач

.3 Итоги маркетинговых исследований

.4 Определение затрат на проектирование продукта

.4.1 Определение трудоемкости разработки ПП

.4.2 Вычисление себестоимости часа машинного времени

.4.3 Формирование цены предложения разработчика

.4.4 Расчёт капитальных затрат

.4.5 Расчет эксплуатационных расходов

.4.6 Оценка эффективности проектируемого программного продукта

. ОХРАНА ТРУДА

.1 Анализ условий труда разработчика проектируемого продукта

.1.1 Краткая характеристика помещения и выполняемых работ

.1.2 Планировка и размещение оборудования и рабочих мест

.1.3 Микроклимат рабочей зоны

.1.4 Шум и вибрация

.1.5 Освещение

.1.6 Электро- и пожаробезопасность

.1.7 Электромагнитное излучение

.1.8 Эргономика и техническая эстетика

.1.9 Напряженность труда. Режим труда и отдыха работников

.2 Расчет системы естественного освещения

. БЕЗОПАСНОСТЬ В ЧРЕЗВЫЧАЙНЫХ СИТУАЦИЯХ

.1 Вводная часть

.2 Расчётная часть

.3 Мероприятия по защите сотрудников лаборатории

ЗАКЛЮЧЕНИЕ

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

ПРИЛОЖЕНИЕ А


ВВЕДЕНИЕ


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

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

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

Объединение компьютеров в сети позволило значительно повысить производительность труда. Компьютерные сети используются как для производственных (или офисных) нужд, так и для обучения, общения и т.д.

Практически все операционные системы, занимающие заметное место на рынке, стали сетевыми. Сетевые функции сегодня встраиваются в ядро ОС, являясь ее неотъемлемой частью. Операционные системы получили средства для работы со всеми основными технологиями локальных (Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, FDDI, ATM) и глобальных (Х.25, frame relay, ISDN, ATM) сетей, а также средства для создания составных сетей (IP, IPX, AppleTalk, RIP, OSPF, NLSP).

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


1. Постановка задачи


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

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

-установка, конфигурирование и запуск в сети служб DHCP, DNS, FTP, Proxy и электронной почты;

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

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

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

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

б) обработка данных, введенных пользователем, написание скриптов, через которые программа будет взаимодействовать с операционной системой и сетью;

г) анализ данных и выдача результатов пользователю.

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

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

-модуль протоколов высокого уровня;

-модуль маршрутизации.

Каждый модуль будет иметь графический интерфейс.

В рамках разработки модуля протоколов управления следует спроектировать и реализовать:

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

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

Программное обеспечение должно быть тестировано.

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

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



2. ОБЗОР ЛИТЕРАТУРНЫХ ИСТОЧНИКОВ ПО ТЕМЕ


.1 Основные задачи оптимизации сетей


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

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

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

Все варьируемые параметры могут быть сгруппированы различным образом. Например, параметры отдельных конкретных протоколов (максимальный размер кадра протокола Ethernet или размер окна неподтвержденных пакетов протокола TCP) или параметры устройств (размер адресной таблицы или скорость фильтрации моста, пропускная способность внутренней шины маршрутизатора). Параметрами настройки могут быть и устройства, и протоколы в целом. Так, например, улучшить работу сети с медленными и зашумленными глобальными каналами связи можно, перейдя со стека протоколов IPX/SPX на протоколы TCP/IP. Также можно добиться значительных улучшений с помощью замены сетевых адаптеров неизвестного производителя на адаптеры BrandName.

) Определить порог чувствительности для значений критерия эффективности. Так, производительность сети можно оценивать логическими значениями "Работает"/ "Не работает", и тогда оптимизация сводится к диагностике неисправностей и приведению сети в любое работоспособное состояние. Другим крайним случаем является тонкая настройка сети, при которой параметры работающей сети (например, размер кадра или величина окна неподтвержденных пакетов) могут варьироваться с целью повышения производительности (например, среднего значения времени реакции) хотя бы на несколько процентов. Как правило, под оптимизацией сети понимают некоторый промежуточный вариант, при котором требуется выбрать такие значения параметров сети, чтобы показатели ее эффективности существенно улучшились, например, пользователи получали ответы на свои запросы к серверу баз данных не за 10 секунд, а за 3 секунды, а передача файла на удаленный компьютер выполнялась не за 2 минуты, а за 30 секунд.

Таким образом, можно предложить три различных трактовки задачи оптимизации:

) Приведение сети в любое работоспособное состояние. Обычно эта задача решается первой, и включает:

поиск неисправных элементов сети - кабелей, разъемов, адаптеров, компьютеров;

проверку совместимости оборудования и программного обеспечения;

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

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

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

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


.2 Оптимизация работы сети на основе протоколов управления в ОС Linux


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

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

Командная оболочка (или интерпретатор команд) - это программа, задача которой состоит в том, чтобы передавать ваши команды операционной системе и прикладным программам, а их ответы - вам. По своим задачам ему соответствует command.com в MS-DOS или cmd.exe в Windows, но функционально оболочки в Linux несравненно богаче. На языке командной оболочки можно писать небольшие программы для выполнения ряда последовательных операций с файлами и содержащимися в них данными - сценарии (скрипты).

В дистрибутиве Linux доступны следующие командные оболочки:

? bash - самая распространённая оболочка под Linux. Она умеет дополнять имена команд и файлов, ведёт историю команд и предоставляет возможность их редактирования;

? pdkdh - клон korn shell, хорошо известной в системах UNIX командной оболочки;

? sash - особенность этой оболочки состоит в том, что она не зависит ни от каких разделяемых библиотек и включает в себя упрощённые реализации некоторых важнейших утилит, таких как ls, dd и gzip. Поэтому sash особенно полезна при восстановлении после некоторых системных сбоев или при обновлении версии важнейших разделяемых библиотек;

? tcsh - улучшенная версия C shell;

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

Оболочкой по умолчанию является bash (Bourne Again Shell). Чтобы проверить, какая оболочка используется, небходимо набрать команду: echo $SHELL.

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

Ниже перечислены некоторые из эмуляторов терминала вошедших в дистрибутив Linux:

? xterm - стандартный эмулятор терминала для X Window System. Этот эмулятор совместим с терминалами DEC VT102/VT220 и Tektronix 4014 и предназначен для программ, не использующих графическую среду напрямую. Если операционная система поддерживает изменение окна терминала (например, сигнал SIGWINCH в системах, произошедших от 4.3bsd), xterm может использовать сообщать программам, запущенным в нем, что размер окна изменился;

? aterm - это цветной эмулятор терминала rxvt версии 2.4.8, дополненный полосами прокрутки в стиле NeXT от Альфредо Кодзима (Alfredo Kojima). Он предназначен для замены xterm в случае, если не нужна эмуляция терминала Tektronix 4014.

Оптимизация работы сети на платформе операционной системы Linux по протоколам управления выполняется на четырех этапах или уровнях [4]:

) Управление пользователями.

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

Файл /ETC/PASSWD

Файл /еtс/раsswd содержит список пользователей, которые известны системе. В процессе регистрации пользователя система обращается к этому файлу в поисках идентификатора пользователя и его домашнего каталога. Каждая строка файла описывает одного пользователя и содержит семь полей, разделенных двоеточиями:

регистрационное имя;

шифрованный пароль или заполнитель пароля;

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

идентификатор группы по умолчанию;

поле GЕСОS (полное имя, номер офиса, рабочий и домашний телефоны);

домашний каталог;

регистрационная оболочка.

В наши дни совершенно недопустимо хранить зашифрованные пароли в текстовом виде. Современные быстрые компьютеры позволяют взламывать такие пароли за считанные минуты. Все версии UNIX позволяют спрятать их, поместив в отдельный файл, недоступный для чтения. Это называется механизмом скрытых паролей и (по вполне понятным причинам) применяется в большинстве дистрибутивов. Механизм скрытых паролей становится понятнее, когда его описывают в качестве расширения к традиционному файлу /еtс/раsswd.

Ниже рассматривается назначение отдельных полей файла /еtс/раsswd.

Регистрационное имя

Регистрационные имена (называемые также пользовательскими именами) должны быть уникальными и состоять не более чем из 32 символов. Они могут содержать любые символы, кроме двоеточия и символа новой строки. Если используется база данных, длина имени ограничена 8 символами независимо от операционной системы.

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

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

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

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

Например, схема выбора имен может быть такой: первый инициал и фамилия каждого сотрудника. Пользователь Брент Браунинг (Вгеnt Вгowning), таким образом, превратится в bbrowning, но девять символов это слишком много для некоторых систем. Лучше присвоить пользователю регистрационное имя brentb, а bbrowning сделать элементом файла а1iases: bbrowning: brentb.

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

В крупных организациях в адресах электронной почты часто используются полные имена (например, John.Q.Рublic@mysite.соm), благодаря чему регистрационные имена скрываются от внешнего мира. Это прекрасная идея, но, чтобы облегчить работу администраторам, необходимо установить четкое и понятное соответствие между регистрационными именами и реальными именами пользователей.

Регистрационные имена должны быть уникальными в двух отношениях. Во-первых, необходимо, чтобы имя пользователя на всех компьютерах было одинаковым. Это удобно как самому пользователю, так и администратору. Во-вторых, регистрационное имя всегда должно относиться к одному и тому же лицу. Некоторые команды (например, ssh) можно настроить так, чтобы они аутентифицировали удаленных пользователей по регистрационным именам. Даже если адреса scott@boulder и scott@refuge относятся к разным пользователям, то в случае неправильной настройки учетных записей оба пользователя могут при определенных обстоятельствах получить доступ к файлам друг друга, не вводя пароль.

Зашифрованный пароль.

Прежде чем переходить к деталям, напомним: в большинстве систем зашифрованные пароли хранятся в файле /еtс/shadow, а не /еtс/раsswd.

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

Вручную редактируя файл /еtс,/раsswd для создания новой учетной записи, необходимо поставить звездочку (*) в поле зашифрованного пароля. Звездочка воспрепятствует несанкционированному использованию учетной записи до установки реального пароля. Нельзя оставлять это поле пустым, иначе безопасность системы подвергнется серьезному нарушению, поскольку для доступа к такой учетной записи пароль не требуется.

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

В большинстве дистрибутивов Linux по умолчанию используется алгоритм МD5. С криптографической точки зрения алгоритм МD5 лишь не многим более устойчив, чем DES, зато в нем допускаются пароли произвольной длины. Чем длиннее пароли, тем они надежнее. Поскольку алгоритм МD5 весьма универсален и безопасен, рекомендуется применять его во всех системах, которые его поддерживают.

Зашифрованные пароли имеют постоянную длину (34 символа в случае МD5 и 13 символов в случае DES) независимо от длины исходного пароля. Пароли шифруются с добавлением случайной примеси, чтобы одному исходному паролю соответствовало много зашифрованных форм. Таким образом, факт выбора пользователями одинаковых паролей не может быть выявлен путем просмотра зашифрованных паролей. Пароли МD5 легко распознать, так как они всегда начинаются с последовательности $1$.

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

Идентификатор пользователя (UID) - это 32-битное целое число. Но для обеспечения совместимости со старыми системами мы рекомендуем, чтобы значение самого старшего идентификатора по возможности не превышало 32767 (наибольшее 16-битное целое число со знаком).

По определению пользователь гооt имеет идентификатор 0. В большинстве систем есть также псевдопользователи bin, daemon и ряд других. Как правило, такие псевдоимена помещаются в начало файла /еtс/раsswd, и им назначаются маленькие идентификаторы. Чтобы зарезервировать побольше номеров для неперсонифицированных пользователей, рекомендуется присваивать реальным пользователям идентификаторы, начиная с номера 100 (или выше).

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

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

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

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

Идентификатор группы по умолчанию

Как и идентификатор пользователя, идентификатор группы (GID) является 32-битным целым числом. Идентификатор 0 зарезервирован для группы с именем гооt, идентификатор 1 - для группы bin, а идентификатор 2 для группы daemon.

Группы определяются в файле /еtс/group, а поле идентификатора группы в файле /еtс/раsswd задает стандартный (эффективный) идентификатор на момент регистрации пользователя в системе. Этот идентификатор не играет особой роли при определении прав доступа; он используется лишь при создании новых файлов и каталогов. Новые файлы обычно включаются в эффективную группу своего владельца, но если у каталога установлен бит SGID (2000) или файловая система смонтирована с опцией grpid, новые файлы включаются в группу своего каталога.

Поле GECOS

Поле GECOS в основном используется для хранения персональной информации о каждом пользователе. Оно не имеет четко определенного синтаксиса. Первоначально в Веll Labs его использовали для хранения регистрационной информации, необходимой при передаче пакетных заданий из UNIХ-систем мэйнфрейму, работающему под управлением GECOS (Gеnегаl Еlесtriс Соmрrеhеnsivе Ореrаting Sуstem - комплексная операционная система компании Gеnегаl Еlесtriс).

В принципе структура поля GECOS может быть произвольной, но команда finger интерпретирует разделенные запятыми элементы поля в следующем порядке:

полное имя (часто используется только это поле);

номер офиса и здания;

рабочий телефон;

домашний телефон.

С помощью команды сhfn можно изменять информацию, содержащуюся в поле GECOS. Эта команда используется для ведения и обновления списка телефонных номеров, но ею часто злоупотребляют: пользователь может изменить информацию так, что она станет нецензурной или некорректной.

Домашний каталог

Войдя в систему, пользователь попадает в свой домашний каталог. Если на момент регистрации этот каталог отсутствует, выводится сообщение вроде nо hоmе diгесtоrу (домашний каталог отсутствует). Если в качестве значения поля домашнего каталога по умолчанию DEFAULT_НОМЕ в файле /еtс/1оgin.defs установлено nо, продолжение регистрации пользователя будет невозможно в противном случае пользователь попадает в корневой каталог.

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

Регистрационная оболочка

В качестве регистрационной оболочки, как правило, задается интерпретатор команд, например /bin!sh или /bin/сsh, но в принципе это может быть любая программа. По умолчанию используется интерпретатор bash, который запускается, если соответствующее поле в файле /еtс/раsswd не задано. В Linuх имена сsh и sh являются всего лишь ссылками на tcsh (надмножество команд csh) и bash (GNU-версия sh), соответственно. Во многих дистрибутивах есть также открытая версия интерпретатора ksh.

Пользователи могут менять интерпретатор с помощью команды сhsh. Файл /еtс/shells содержит список тех интерпретаторов, которые доступны для выбора. В SuSE этот список является обязательным для соблюдения, а в Red Hat будет лишь выдано предупреждение в случае выбора незарегистрированного интерпретатора.

Файл /ETC/SHADOW

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

Файл shadow не включает в себя файл раsswd, и последний не генерируется автоматически при изменении файла shadow. Оба файла необходимо сопровождать независимо друг от друга (или использовать команду наподобие useradd для автоматического управления файлами). Как и /еtс/раsswd, файл /еtс/shadow содержит одну строку для каждого пользователя. Каждая строка состоит из 9 полей, разделенных двоеточиями;

регистрационное имя;

зашифрованный пароль;

дата последнего изменения пароля;

минимальное число дней между изменениями пароля;

максимальное число дней между изменениями пароля;

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

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

срок действия учетной записи;

зарезервированное поле, которое в настоящее время всегда пустое.

Лишь первые два поля обязательно должны быть заполнены. Поля дат задаются в виде числа дней (а не секунд), прошедших с 1-го января 1970 г. Это отличается от стандартного способа вычисления времени в UNIХ. Задавать поля можно с помощью команды usermod.

Типичная запись выглядит так:

millert:inN0.VRsc1Wn.:11508:0:180:14::12417:

Более подробное описание каждого поля.

Регистрационное имя берется из файла /еtс/раsswd. Оно связывает записи файлов passwd и shadow.

Зашифрованный пароль идентичен тому, который ранее хранился в файле /еtс/ раsswd.

Третье поле содержит дату последнего изменения пользователем своего пароля. Это поле обычно заполняется программой /usr/bin/раsswd.

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

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

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

Седьмое поле определяет, спустя какое число дней после устаревания пароля отменяется учетная запись. Его назначение не совсем понятно.

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

Девятое поле зарезервировано на будущее.

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

millert:inN0.VRsc1Wn.:11508:0:180:14::12417:

В этой записи говорится о том, что пользователь millert последний раз менял свой пароль 18 июля 2006 г. Следующий раз пароль должен быть изменен через 180 дней. За две недели до этого пользователь начнет получать предупреждения о необходимости сменить пароль. Учетная запись действительна до 31 декабря 2010г.

С помощью утилиты рwconv можно согласовать содержимое файлов /еtс/shadow и /еtс/раsswd. Большинство параметров файла shadow берется из стандартных установок файла /еtс/login.defs.

Базовая модель управления учетными записями реализуется автоматизированными утилитами с помощью стандартных команд:

) adduser - регистрирует нового пользователя или изменяет информацию по умолчанию о новых пользователях.

Синтаксис:

adduser [options] [--home DIR] [--shell SHELL] [--no-create-home] [--uid ID] [--firstuid ID] [--lastuid ID] [--ingroup GROUP | --gid ID][--disabled-password] [--disabled-login][--gecos GECOS] [--add_extra_groups] user;

adduser --system [параметры] [--home КАТ] [--shell ОБОЛОЧКА] [--no-create-home][--uid ID] [--group|--ingroup ГРУППА|--gid ID] [--disabled-password] [--disabled-login] [--gecos GECOS] пользователь.

Добавление обычного пользователя

При запуске с двумя аргументами и без параметров --system или --group, adduser добавляет обычного пользователя. adduser выберет первый доступный UID из диапазона обычных пользователей, заданного в файле настройки. UID может быть изменён с помощью параметра --uid. Диапазон, задаваемый файлом настройки, может быть изменён с помощью параметров --firstuid и --lastuid.

По умолчанию, каждый пользователь в Debian GNU/Linux входит в соответствующую группу с тем же именем. Объединение пользователей в группы позволяет групповую запись в каталог, что легко достигается посредством помещения соответствующих пользователей в новую группу, установкой set-group-ID бита на каталог и проверкой того, что все пользователи используют значение umask со значением 002. Если параметру USERGROUPS присвоить значение no, то все GID пользователей будут устанавливаться в USERS_GID. Первичные группы пользователей также могут быть изменены из командной строки с помощью параметров --gid или --ingroup, которые задают группу по id или по имени соответственно.

Также, пользователей можно добавить в одну или более групп, указанных в adduser.conf, установкой ADD_EXTRA_GROUPS равной 1 в adduser.conf, или указав --add_extra_groups в командной строке.создаёт домашний каталог в соответствии со значениями DHOME, GROUPHOMES и LETTERHOMES. Домашний каталог может быть изменён из командной строки с помощью параметра --home, а оболочка с помощью --shell. На домашнем каталоге устанавливается Set-group-ID бит, если USERGROUPS равно yes, и поэтому любые файлы, создаваемые в домашнем каталоге пользователя, будут иметь правильную группу.копирует файлы из SKEL в домашний каталог, запрашивает информацию для finger (gecos) и пароль. Gecos также может быть задан с помощью параметра --gecos. При задании параметра --disabled-login, учётная запись будет создана, но пока не будет определён пароль, доступ через неё останется заблокированным. При задании параметра --disabled-password пароль не нужен, но вход в систему всё равно возможен (например с помощью SSH RSA ключей).

Если файл /usr/local/sbin/adduser.local существует, то он будет выполнен после создания учётной записи пользователя, чтобы выполнить все локальные настройки. Аргументы передаваемые adduser.local: имя_пользователя uid gid домашний_каталог.

Значение переменной среды VERBOSE устанавливается по следующему правилу:

0, если указан -quiet;

1, если не указан --quiet или -debug;

2, если указан -debug.

Добавление системного пользователя.

При запуске с одним параметром без аргументов и параметром --system, adduser добавляет системного пользователя. Если пользователь с тем же именем уже существует, то adduser завершает работу с выдачей предупреждения.выберет первый доступный UID из диапазона системных пользователей, заданного в файле настройки (FIRST_SYSTEM_UID и LAST_SYSTEM_UID). Если необходим какой-то определённый UID, то можно указать его с помощью параметра --uid.

По умолчанию, системные пользователи помещаются в группу nogroup. Чтобы поместить нового системного пользователя в уже существующую группу, используйте параметры --gid или --ingroup. Чтобы поместить нового системного пользователя в новую группу с тем же ID, используйте параметр --group.

Домашний каталог создаётся по тем же правилам что и для обычных пользователей. Новый системный пользователь имеет оболочку /bin/false (если не указан параметр --shell) и заблокированный пароль. Начальные файлы настроек не копируются.

Параметры:

--conf файл - использовать файл вместо /etc/adduser.conf.;

--disabled-login - не запускать passwd для задания пароля. Пользователь не сможет использовать свою учётную запись, пока его пароль не установлен;

--disabled-password - то же что и --disabled-login, но вход в систему возможен(например, с помощью ключей SSH RSA), но не использующих парольную аутентификацию;

--force-badname - по умолчанию, имена пользователя проверяются согласно заданному регулярному выражению NAME_REGEX, указанному в конфигурационном файле. Этот параметр заставляет adduser выполнять только слабую проверку правильности имени;

--gecos GECOS - задаёт поле gecos для новой создаваемой записи. adduser не будет запрашивать информацию для finger, если указан этот параметр;

--gid ID - при создании пользователя этот параметр помещает пользователя в группу с этим номером;

--group - при совместном использовании с --system, создаётся группа с тем же именем и ID как и у системного пользователя. Если же -system не задана, то создаётся группа с указанным именем;

--help - показать краткую инструкцию;

--home КАТ - использовать КАТ в качестве домашнего каталога пользователя, а не как задаётся по умолчанию в файле настроек. Если каталог не существует, то он будет создан и будут скопированы начальные файлы настроек;

--shell оболочка - использовать оболочку в качестве регистрационной оболочки, а не как задано по умолчанию в файле настроек;

--ingroup ГРУППА - добавить нового пользователя в ГРУППУ, а не в группу с тем же именем или группу по умолчанию, определяемую USERS_GID в конфигурационном файле. Это влияет на первичную группу пользователей;

--no-create-home - не создавать домашний каталог, даже если он не существует;

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

--debug - показывать отладочную информацию, очень полезно, если вы хотите понять в чём проблема у adduser;

--system - создать системного пользователя;

--uid ID - принудительно назначить новому userid определённый номер. adduser завершится неудачно, если такой userid уже используется;

--firstuid ID - изменить первый uid диапазона, из которого выбран данный uid (заменяет значение FIRST_UID, указанное в конфигурационном файле);

--lastuid ID - изменить последний uid диапазона, из которого выбран данный uid (LAST_UID);

--add_extra_groups - добавляет нового пользователя в дополнительные группы, указанные в конфигурационном файле;

--version - показать номер версии и информацию об авторском праве.

Команда useradd завершая работу, возвращает следующие значения:

0 - указанный пользователь существует. Возникает в 2 случаях: пользователь был создан adduser или пользователь уже был в системе перед тем как вызывалась adduser. Запуск adduser второй раз с теми же параметрами также вернёт 0;

1 - не удалось создать пользователя, так как он уже существуют но с другим UID, чем указано. Имя пользователя было отвергнуто, так как не подпадает под настроенные регулярные выражения. Работа adduser была прервана сигналом. Или по многим другим ещё неописанным причинам, которые объясняются выдаваемыми на консоль сообщениями. Затем можно убрать параметр --quiet, что сделает вывод adduser более подробным.

) userdel - изменяет системные файлы учётных записей, удаляя все записи, относящиеся к указанному имени_пользователя. Заданная учётная запись должна существовать.

Синтаксис:

deluser [параметры] [--force] [--remove-home] [--remove-all-files] [--backup] [--backup-to КАТ] пользователь;

deluser --group [параметры] группа;

deluser [параметры] пользователь группа.

При запуске с параметром, не имеющим аргументов и без параметра --group, deluser удалит обычного пользователя. По умолчанию, deluser удаляет пользователя без уничтожения домашнего каталога, почтового ящика или всех файлов системы, принадлежащих данному пользователю. Чтобы домашний каталог и почтовый ящик удалялся, можно указать параметр --remove-home. С параметром --remove-all-files удаляются все файлы в системе, принадлежащие данному пользователю. Заметим, что в этом случае указывать параметр --remove-home необязательно, так как все файлы, включая домашний каталог и почтовый ящик уже помечены на удаление параметром --remove-all-files.

Если необходимо сделать резервную копию всех файлов перед их удалением, то можно указать параметр --backup, при котором будет создан файл имя_пользователя.tar(.gz|.bz2), в каталоге, заданном параметром --backup-to (по умолчанию используется текущий рабочий каталог). Параметры удаления и резервного копирования также можно задать как действия по умолчанию в файле настройки /etc/deluser.conf.

Если необходимо удалить учётную запись root (uid 0), можно воспользоваться параметром --force; его указание подтверждает, что удаление пользователя root не является случайной ошибкой.

Если файл /usr/local/sbin/deluser.local существует, то он будет выполнен после удаления учётной записи пользователя, чтобы выполнить все локальные очистки. Аргументы, передаваемые deluser.local: имя_пользователя uid gid домашний_каталог

Параметры команды userdel:

--conf файл - использовать файл вместо файлов по умолчанию /etc/deluser.conf и /etc/adduser.conf.;

--help - показать краткую инструкцию;

--quiet - не выводить сообщения о ходе работы;

--system - выполнить удаление, только если пользователь является системным. Это помогает избежать случайного удаления не системного пользователя. Также, если пользователь не существует, то значение ошибки не возвращается. Этот параметр чаще всего используется в сценариях сопровождения пакетов Debian;

--backup - выполнить резервное копирования всех файлов домашнего каталога и почтовое хранилище (mailspool-file) в файл с именем /$user.tar.bz2 или /$user.tar.gz.;

--backup-to - помещать файлы резервных копий не в /, а в каталог, заданный этим параметром;

--remove-home - удалить домашний каталог пользователя и его почтовое хранилище. Если указан --backup, то файлы будут удалены после создания резервной копии;

--remove-all-files - удалить все файлы из системы, принадлежащие этому пользователю. Замечание: указывать ещё и --remove-home не имеет смысла. Если указан --backup, то файлы будут удалены после создания резервной копии;

--version - показать номер версии и информацию об авторском праве.

Команда userdel завершая работу, возвращает следующие значения:

0 - действие успешно выполнено;

1 - удаляемый пользователь не является системным. Действие не выполнено;

2 - пользователь не существует. Действие не выполнено;

4 - внутренняя ошибка. Действие не выполнено;

9 - для удаления учётной записи root требуется указание параметра "--force". Действие не было выполнено.

) usermod - изменяет системные файлы учётных записей согласно переданным в командной строке параметрам.

Синтаксис: usermod [параметры] LOGIN.

Параметры команды usermod:

a, --append - добавить пользователя в дополнительную группу;

c, --comment - новое значение поля комментария в файле пользовательских паролей. Обычно его изменяют с помощью программы;

d, --home - новый домашний каталог пользователя. Если указан параметр -m, то содержимое текущего домашнего каталога будет перемещено в новый домашний каталог, который будет создан, если он ещё не существует;

e, --expiredate - дата, когда учётная запись пользователя будет заблокирована. Дата задаётся в формате ГГГГ-ММ-ДД;

f, --inactive - число дней, которые должны пройти после устаревания пароля, чтобы учётная запись заблокировалась навсегда. Если указано значение 0, то учётная запись блокируется сразу после устаревания пароля, а при значении -1 данная возможность не используется. По умолчанию используется значение -1;

g, --gid - имя или числовой идентификатор новой начальной группы пользователя. Группа с таким именем должна существовать. Идентификатор группы должен указывать на уже существующую группу. По умолчанию идентификатор группы установлен в 1;

G, --groups - список дополнительных групп, в которых числится пользователь. Перечисление групп осуществляется через запятую, без промежуточных пробелов. На указанные группы действуют те же ограничения, что и для группы указанной в параметре -g. Если пользователь член группы, которой в указанном списке нет, то пользователь удаляется из этой группы. Такое поведение можно изменить с помощью параметра -a, при указании которого к уже имеющемуся списку групп пользователя добавляется список указанных дополнительных групп;

l, --login - имя пользователя будет изменено с emphasis remap="I">ИМЯ;

L, --lock - заблокировать пароль пользователя. Это делается помещением символа '!' в начало шифрованного пароля, что приводит к блокировке пароля. Не используйте этот параметр вместе с -p или -U;

o, --non-unique - при использовании с параметром -u, этот параметр позволяет указывать не уникальный числовой идентификатор пользователя;

p, --password - шифрованное значение пароля, которое возвращает функция crypt;

s, --shell - имя новой регистрационной оболочки пользователя. Если задать пустое значение, то будет использована регистрационная оболочка по умолчанию;

u, --uid - числовое значение идентификатора пользователя (ID). Значение должно быть уникальным, если не задан параметр -o. Значение должно быть неотрицательным. Значения от 0 до 999 обычно зарезервированы для системных учётных записей. Для всех файлов, которыми владеет пользователь и которые расположены в его домашнем каталоге идентификатор владельца файла будет изменён автоматически. Для файлов, расположенных вне домашнего каталога идентификатор нужно изменять вручную;

U, --unlock - разблокировать пароль пользователя. Это выполняется удалением символа '!' из начала шифрованного пароля. Не используйте этот параметр вместе с -p или -L.

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

Синтаксис: users [OPTION]... [FILE]

) passwd - меняет (или устанавливает) пароль, связанный с входным_именем пользователя. Обычный пользователь может менять только пароль, связанный с его собственным входным_именем.

Синтаксис: passwd [параметры] [LOGIN].

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

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

Параметры команды passwd:

a, --all - этот параметр можно использовать только вместе с -S для вывода статуса всех пользователей;

d, --delete - удалить пароль пользователя (сделать его пустым). Это быстрый способ заблокировать пароль учётной записи. Это делает указанную учётную запись беспарольной;

e, --expire - немедленно сделать пароль устаревшим. В результате это заставит пользователя изменить пароль при следующем входе в систему;

h, --help - показать краткую справку и закончить работу;

i, --inactive дней - этот параметр используется для блокировки учётной записи по прошествии заданного числа дней после устаревания пароля. То есть, если пароль устарел и прошло более указанных дней, то пользователь больше не сможет использовать данную учётную запись;

k, --keep-tokens - указывает, что изменение пароля нужно выполнить только для устаревших ключей аутентификации (паролей). Пользователи хотят оставить свои непросроченные ключи нетронутыми;

l, --lock - блокирует указанного пользователя. Блокировка осуществляется добавлением к паролю префикса «!»;

m, --mindays - задать минимальное количество дней между сменой пароля. Нулевое значение этого поля указывает на то, что пользователь может менять свой пароль когда захочет;

q, --quiet - не выводить сообщений при работе;

r, --repository - изменить пароль в репозитории;

S, --status - показать состояние учётной записи. Информация о состоянии содержит 7 полей. Первое поле содержит имя учётной записи. Второе поле указывает, заблокирована ли учётная запись (L), она без пароля (NP) или у неё есть рабочий пароль (P). Третье поле хранит дату последнего изменения пароля. В следующих четырёх полях хранятся минимальный срок, максимальный срок, период выдачи предупреждения и период неактивности пароля. Эти сроки измеряются в днях;

u, --unlock - разблокирование пользователя и удаление префикса «!»;

w, --warndays - установить число дней выдачи предупреждения, перед тем как потребуется смена пароля. В параметре пред_дней указывается число дней перед тем как пароль устареет, в течении которых пользователю будут напоминать, что пароль скоро устареет;

x, --maxdays - установить максимальное количество дней, в течении которых пароль остаётся рабочим. После макс_дней пароль нужно изменить.

Команда passwd завершая работу, возвращает следующие значения:

0 - успешное выполнение;

1 - доступ запрещён;

2 - недопустимая комбинация параметров;

3 - неожиданная ошибка при работе, ничего не сделано;

4 - неожиданная ошибка при работе, отсутствует файл passwd;

5 - файл passwd занят другой программой, попробуйте ещё раз;

6 - недопустимое значение параметра.

) Управление группами.

Фaйл /ETC/GROUP

Файл /еtс/group содержит имена UNIХ-групп и списки членов каждой группы.

Например::*:10:root,еvi,garth,trent

Запись файла представляет одну группу и содержит четыре поля:

имя группы;

зашифрованный пароль или символ х, указывающий на использование файла

идентификатор группы;

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

Как и в файле /еtс/раsswd, поля разделяются двоеточиями. Длина имени группы не должна превышать 8 символов из соображений совместимости, хотя в Linuх такого ограничения нет. Несмотря на наличие поля пароля (с помощью которого пользователи могут присоединиться к группе, выполнив команду newgrp) пароль задается редко. В большинстве случаев в это поле вводятся звездочки, но можно оставить его пустым. Команда newgrp не сменит группу без пароля, если только пользователь не указан как член этой группы.

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

Если в файле /еtс/раsswd пользователь объявлен членом определенной группы, а в файле /еtс/group - нет, пользователь все равно включается в группу. На этапе регистрации членство в группе проверяется по обоим файлам, но лучше все же согласовывать их содержимое.

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

Согласно традиции, новые пользователи добавляются в группу, название которой отражает их категорию, например students или finance. Однако следует учитывать, что подобная традиция повышает вероятность доступа пользователей к файлам друг друга из-за неаккуратной установки прав. Чтобы этого избежать рекомендуется создавать для каждого пользователя уникальную группу. Лучше всего выбирать одинаковое имя для пользователя и группы. Можно также выбрать одинаковый номер пользователя и группы

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

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

) addgroup - создаёт новую группу, согласно указанным значениям командной строки и системным значениям по умолчанию. Новая группа будет добавлена в системные файлы.

Синтаксис:

addgroup [параметры] [--gid ID] группа;

- addgroup --system [параметры] [--gid ID] группа.

Добавление пользовательской группы.

Если adduser вызывается с параметром --group и без параметра -system или имеет соответствующее название addgroup, то добавляется пользовательская группа. GID будет выбран из диапазона системных GID, заданных в файле настройки (FIRST_GID, LAST_GID). Чтобы указать определённый GID, используется параметр --gid. Группа создаётся без пользователей.

Добавление системной группы.

Если addgroup вызывается с параметром --system, то добавляется системная группа. GID будет выбран из диапазона системных GID, заданных в файле настройки (FIRST_SYSTEM_GID, LAST_SYSTEM_GID). Чтобы указать определённый GID, используйте параметр --gid. Группа создаётся без пользователей.

Параметры команды groupadd:

--gid ID - gри создании группы этот параметр задает её идентификатор. При создании пользователя этот параметр помещает пользователя в группу с этим номером;

--system - создать системную группу.

Команда addgroup завершая работу, возвращает следующие значения:

0 - успешное выполнение;

2 - ошибка в параметрах команды;

3 - недопустимое значение параметра;

4 - не уникальный gid (если не задан параметр -o);

9 - не уникальное имя группы;

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

Синтаксис: delgroup [параметры] [--only-if-empty] группа.

Если deluser вызывается с параметром --group, или вызывается как delgroup, то выполняется удаление группы.

Если задан параметр --only-if-empty, удаление группы не произойдёт, если в неё входят пользователи.

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

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

Команда groupdel завершая работу, возвращает следующие значения:

0 - действие успешно выполнено;

3 - группа не существует. Действие не выполнено;

4 - внутренняя ошибка. Действие не выполнено;

5 - удаляемая группа не пуста. Действие не выполнено.

) groupmod - изменяет системные файлы учётных записей согласно параметрам, переданным в командной строке.

Синтаксис: groupmod [параметры] ГРУППА

Параметры команды groupmod:

g, --gid - числовое значение идентификатора группы. Значение должно быть уникальным, если не задан параметр -o. Значение должно быть не отрицательным. Значения от 0 до 999 обычно зарезервированы под системные группы. Изменение принадлежности всех файлов старой группе необходимо выполнять вручную;

h, --help - показать краткую справку и закончить работу;

n, --new-name - имя группы будет изменено с группа на новое_имя_группы.

Команда groupmod завершая работу, возвращает следующие значения:

0 - успешное выполнение;

2 - ошибка в параметрах команды;

3 - недопустимое значение параметра;

4 - указанная группа не существует;

9 - такое имя группы уже используется;

10 - не удалось изменить файл групп.

) groups - используется для показа какой пользователь в какой группе находится.

Синтаксис: groups [OPTION]... [USERNAME]...

) gpasswd - используется для управления файлом /etc/group (а также файлом /etc/gshadow, если программа была собрана с параметром SHADOWGRP). Каждая группа может иметь администраторов, членов и пароль. Системный администратор может использовать параметр-A, чтобы назначить группе администратора(ов) и параметр -M для определения списка членов, а также имеет все права администраторов и членов группы.

Синтаксис:

gpasswd группа;

gpasswd -a имя группа;

gpasswd -d имя группа;

gpasswd -R группа;

gpasswd -r группа;

gpasswd [-A пользователь,...] [-M пользователь,...] группа.

Администратор группы может добавлять и удалять пользователей с помощью параметров -a и -d соответственно. Администраторы могут использовать параметр -r для удаления пароля группы. Если пароль не задан, то только члены группы с помощью команды newgrp могут войти в группу. Указав параметр -R можно запретить доступ в группу по паролю с помощью команды newgrp (однако на членов группы это не распространяется).

Команда gpasswd, запущенная администратором группы с именем группы, служит для смены пароля группы. Если пароль не пустой, то для членов группы вызов newgrp пароля не требует, а не члены группы должны ввести пароль.

) Управление ресурсами

Управление ресурсами осуществляется определением прав доступа и идентификаторов владельцев файла. Каждому файлу соответствует набор из девяти битов режима. Они определяют, какие пользователи имеют право читать файл, записывать в него данные или запускать его на выполнение. Вместе с другими тремя битами, которые в основном влияют на работу исполняемых файлов, этот набор образует код, или режим, доступа к файлу. Двенадцать битов режима хранятся вместе с четырьмя дополнительными битами, определяющими тип файла. Эти четыре бита устанавливаются при создании файла и не подлежат изменению. Биты режима могут изменяться владельцем файла или суперпользователем с помощью команды chmod (change mode - изменить режим). Просмотр значений этих битов осуществляется с помощью команды ls-l (или ls -ld в случае каталога).

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

Первым аргументом команды chmod является спецификация прав доступа. Второй и последующий аргументы - это имена файлов, права доступа к которым подлежат изменению. При использовании восьмеричной формы записи первая цифра относится к владельцу, вторая - к группе, а третья - к другим пользователям. Если необходимо задать биты SUID/SGID или stickу-бит, следует указывать не три, а четыре восьмеричные цифры: первая цифра в этом случае будет соответствовать трем специальным битам. В таблице 2.1 показано восемь возможных комбинаций для каждого трехбитового набора, где символы r, w‚ и x обозначают, соответственно, право чтения, записи и выполнения.


Таблица 2.1

Коды доступа в команде chmod

Восьмеричное числоДвоичное числоРежим доступаВосьмеричное числоДвоичное числоРежим доступа0000---4100r--1001--х5101r-х2010-w-б110rw-3011-wx7111rwx

Например, команда chmod 711 myprog предоставляет владельцу все права, а остальным пользователям - только право выполнения.


Таблица 2.2

Примеры мнемонических спецификаций команды chmod

СпецификацияСмыслu+wВладельцу дополнительно дается право выполненияug=rw, o=rВладельцу и членам группы дается право чтения/записи, остальным пользователям - право чтенияa-xУ всех пользователей отбирается право выполненияug=srx, o=Владельцу и членам группы дается право чтения/выполнения, устанавливаются также биты SUID и SGI; остальным пользователям запрещается доступ к файлуg=uЧленам группы предоставляются такие же права, что и владельцу

Символ u (user) обозначает владельца файла, g (group) - группу, o (other) - других пользователей, а (аll) - всех пользователей.

Права доступа можно заимствовать у существующего файла. Например:

% chmod -reference=filea fileb назначает файлу filea такой же код доступа, как и у файла fileb.

При наличий опции -R команда chmod будет рекурсивно обновлять права доступа ко всем файлам указанного каталога и его подкаталогов. Здесь удобнее всего придерживаться мнемонического синтаксиса, чтобы менялись только те биты, которые заданы явно. Например:

% chmod -R g+w mydir добавляет групповое право записи к каталогу mydir и его содержимому, не затрагивая остальные права.

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

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

Как и команда chmod, команда chown имеет флаг -R, который задает смену владельца или группы не только самого каталога, но и всех его подкаталогов и файлов. Например, последовательность команд:


# chmod 755 ~matt

#chown -R matt.staff ~matt

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


# chown -R matt ~matt/.*


Указанному шаблону соответствует также файл - matt/.., поэтому будет изменен владелец родительского каталога и, возможно, домашних каталогов других пользователей. В традиционных UNIХ-системах существует отдельная команда chgrp, меняющая группу файла. В Linux тоже есть эта команда, но она полностью дублирует команду chown.

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


Таблица 2.3

Схема кодирования значения umask

Восьмеричное числоДвоичное числоРежим доступаВосьмеричное числоДвоичное числоРежим доступа0000rwx4100-wx1001rw-5101-w-2010r-x6110--x3011r--7111---

Например, команда umask 027 предоставляет все права владельцу файла, запрещает читать файл членам группы и не дает никаких прав другим пользователям. Стандартное значение umask равно, как правило, 022, т.е. право модификации файла предоставляется только его владельцу.

Нельзя заставить пользователей придерживаться конкретного значения umask, так как они в любой момент могут изменить его, Можно, однако, задать стандартное значение umask в тех копиях файлов .cshrc и .profile, которые предоставляются новым пользователям системы.

) Настройка сервера SSHобеспечивает возможность удаленного выполнения команд и копирования файлов с аутентификацией клиента и сервера, а также с шифрованием передаваемых данных, в том числе имени и пароля пользователя. Дополнительно обеспечивается шифрование данных X Window и перенаправление любых TCP-соединений. Существует несколько программных реализаций, в частности, коммерческий - SSH и бесплатный пакет с открытым исходным кодом - OpenSSH [3].представляет собой протокол транспортного уровня, аутентификации и соединения, а также программные средства безопасного доступа к компьютерам по небезопасным каналам связи (Telnet, Xll, RSH, FTP). Аутентификация производится с использованием асимметричного шифрования с открытым ключом (SSH1 - RSA, SSH2 - RSA/DSA). Обмен данными - симметричное шифрование. Целостность переданных данных проверяется с помощью специальных контрольных сумм. Работает поверх TCP и использует порт 22. В качестве ключа берется случайная строка, которую генерирует клиент, шифрует с помощью открытого ключа сервера и передает серверу. Протокол аутентификации работает поверх протокола транспортного уровня и обеспечивает аутентификацию клиента для сервера. Шифрование трафика начинается после аутентификации сервера, но до аутентификации клиента, таким образом, пароли в открытом виде не передаются. Возможно соединение произвольных TCP-портов по защищенным каналам. Предусматривается возможность сжатия.

Существует две версии протокола: SSH1 и SSH2. По своей реализации это совершенно разные протоколы. Протокол SSH2 был разработан с учетом найденных в первом варианте уязвимостей. Однако не стоит уповать на абсолютную надежность и защищенность SSH2. Недавно в OpenSSH была найдена уязвимость, которую, правда, быстро исправили. Поэтому желательно отслеживать сообщения о найденных уязвимостях в пакетах, используемых на сервере и обновлять их по мере выхода новых версий.- это некоммерческая реализация протокола SSH с открытым кодом. Программный пакет способен работать с протоколами SSH1 и SSH2. Имеется также поддержка r-команд. Для большинства дистрибутивов пакет OpenSSH включен в стандартную инсталляцию.

Конфигурирование OpenSSH очень сильно зависит от концепции обеспечения безопасности и необходимости поддержки протокола старого типа. Поскольку использование протокола SSH1 из-за найденных уязвимостей не рекомендуется - при конфигурировании необходимо запретить его использование. Также рекомендуется запретить использование r-команд и всего, что с ними связано. При конфигурировании OpenSSH необходимо произвести настройку сервера и клиента. Конфигурационный файл сервера называется sshd_config, а клиента - ssh_config.

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



3. ОБОСНОВАНИЕ АКТУАЛЬНОСТИ ТЕМЫ И ЕЕ ПРАКТИЧЕСКОЙ ЗНАЧИМОСТИ


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

Linux - общее название Unix-подобных операционных систем на основе одноимённого ядра и собранных для него библиотек и системных программ, разработанных в рамках проекта GNU. GNU - другая Unix - подобная ОС, разрабатываемая Ричардом Столпманом, ПО для которой и было во многом заимствовано Linux. Само же ядро Linux было разработано программистом и хакером Линусом Торвальдсом, поэтому правильнее говорить GNU/Linux - то есть совокупность ядра и ПО.

Рассмотрим фундаментальные особенности этой операционной системы:

) Linux - массовая ОС/Linux - это, в самом деле, не единая ОС, но она имеет сотни дистрибутивов, то есть вариаций, разрабатываемых тысячами компаний и высококвалифицированных программистов. Для сравнения, к примеру, операционная система MS Windows разрабатывается и поддерживается одной компанией - Microsoft corporation, которой принадлежат авторские права на этот продукт, и которая взимает плату за использование ОС Windows, то есть Windows - это коммерческая, авторская, - проприетарная ОС. Собственно, корпорация Microsoft была основана Биллом Гейтсом и Полом Алленом в 1975 году, им принадлежит контрольный пакет акций этой организации.

Иногда Linux - это только само ядро, а иногда полноценная ОС, включающая в себя прикладные программы и пользовательский интерфейс. Права на эту ОС переданы в общественную собственность. В отличие от коммерческих систем, таких как Microsoft Windows, Linux не имеет географического центра разработки. Не существует организации-владельца системы; нету единого центра управления и обеспечения. Постоянно возникают новые проекты разработки программ для Linux, этих проектов множество и они имеют различные очертания: какие-то осуществляются централизованно в фирмах, другие объединяют фанатов и энтузиастов, бунтующих против платного, несвободного ПО, но, однако, знатоков своего дела. Пользователи со всего мира тестируют новые, разумеется свободные, программы, находят изъяны в системе, предлагают свои решения. Таким образом, происходит работа по тому принципу, что лучшее - это то, что сделано сообща, «всем миром». Такая работа позволяет на практике быстро находить ошибки и несоответствия.

) Linux - бесплатная ОС

Как уже было сказано, права на ОС Linux переданы в общественную собственность, не существует организации или лица - собственника Linux. Сам Линус Торвальдс, создавая Linux, изначально не стремился получить от неё прибыли и расценивал её создание, лишь как своё увлечение.

Чтобы можно было ясно себе представить это преимущество Linux, ещё раз обратимся к сравнению с ОС Windows. Поскольку права на ОС Windows принадлежат конкретной компании, собственником которой является предприниматель (собственником контрольного пакета акций), Windows - коммерческий продукт. За каждую копию этой программы (а ОС - это программа), нужно платить, а самостоятельное распространение этой ОС - противозаконно. Существует гораздо меньшее, в сравнении с Linux, количество дистрибутивов, которые имеют рыночную цену и реализуются строго по ней. Известно, что на практике существует громадное количество пиратских копий Windows, но это не имеет значения с точки зрения теории данного вопроса. В итоге можно сказать, что концепция существования Linux, в качестве бесплатного, ПО предопределяет коренное отличие от проприетарных систем, таких как Windows или Solaris, и даёт Linux неоспоримое преимущество перед этими и прочими коммерческими ОС.

) Linux - свободная ОС

Основная часть приобретаемого или закачиваемого программного обеспечения распространяется в скомпилированном, готовом к использованию виде. Скомпилированный - значит, что написанный программистом код данной программы, называемый исходным кодом, обрабатывается особой программой-компилятором, который переводит этот код на язык, понятный компьютеру. Чрезвычайно трудно модифицировать откомпилированную версию большинства ПО и практически невозможно точно определить, как именно разработчик осуществил различные части программы./Linux - это ОС с открытым исходным кодом, защищённым под авторством создателя - Линуса Торвальдса, лицензией GNU General Public License - лицензия на свободное программное обеспечение, созданная в рамках проекта GNU в 1988 году, по инициативе Ричарда Столлмана. Эта лицензия предоставляет пользователю права копировать, модифицировать и распространять, гарантирует, что пользователи всех производных программ также получат вышеперечисленные права. Лицензируя работу на условиях GNU GPL, автор сохраняет за собой авторство, кроме того, производные программы могут распространяться коммерчески (здесь ярко выражено различие между открытым ПО (Open source) и бесплатным (Free source)). То есть эта лицензия позволяет всё то, что запрещает закон об авторском праве, сохраняя, однако, авторство за разработчиком.

Благодаря открытому исходному коду, ОС Linux стала тем, что она есть. Только 2% ядра Linux на настоящий момент составлено самим Линусом Торвальдсом. Именно открытость, дающая возможность совершенствовать эту ОС тысячам программистов, сделала Linux такой популярной движущей силой, обусловила её предельную экономическую эффективность с точки зрения конкуренции и спроса. Поэтому можно смело говорить о том, что Linux гораздо более гибкая ОС, чем Windows, поскольку тысячи компаний из сообщества Linux могут гораздо быстрее найти ошибки и несоответствия, нежели программисты из «лона» Microsoft. Кроме того, по этой же причине дистрибутивов Windows существует гораздо меньше, чем Linux, причём дистрибутивы Linux также взаимопреемственны, легко изменяемы, приспособляемы.

В опубликованном в январе 2012 г. докладе Linux Foundation и компании Yeoman Technology Group Тенденции распространения Linux в 2012 г.: обследование корпоративных конечных пользователей (Linux Adoption Trends 2012: A Survey of Enterprise End Users) утверждается, что привлекательность Linux продолжает усиливаться в ущерб Windows и Unix. За последний год 84% организаций, использующих в настоящее время Linux, расширили ее применение и отдают предпочтение этой платформе как при развертывании с нуля, так и для обеспечения работы важнейших приложений [33].

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

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

Хотя фонд опросил 1893 корпоративных пользователя Linux, результаты данного исследования базируются на интервью с 428 специалистами в области ИТ, работающими в организациях с годовым доходом от 500 тыс. долл. или со штатом сотрудников свыше пятисот. Подавляющее большинство (65,6%) охарактеризовали себя как сотрудников ИТ-подразделений или разработчиков. Они представляли различные отрасли промышленности. Пользователи из США и Канады составляли 41,6% респондентов; 27,1% представляли Европу; 15,2% - Азию.

Исследование показало также, что восемь из десяти респондентов за последний год установили новые серверы с Linux или планируют сделать это в течение ближайших 12 месяцев. Такая же доля опрошенных намерена пополнить парк новыми Linux-серверами в следующие пять лет. Лишь 21,7% респондентов намерены на протяжении тех же пяти лет наращивать количество серверов с Windows.

Кроме того, свыше 75% респондентов выразило озабоченность по поводу больших данных. Почти 72% выбирают Linux для работы с ними. Предприятия обеспокоены быстрым ростом объема данных, и Linux явно представляется предпочтительной платформой для решения этой проблемы. Лишь 35,9% планируют использовать Windows в этой новой вычислительной среде.

Более того, пользователи Linux сообщили, что у них возникает меньше трудностей с операционной системой. Доля таких пользователей, отметивших наличие технических проблем, снизилась на 40% - с 20,3% в 2010 г. до 12,2% сегодня. Позицию менеджмента упомянули в качестве препятствия на 22% меньше респондентов. В то же время на 10% меньше заявили, что вообще нет проблем, мешающих успеху Linux.

Согласно исследованию, главным мотивом (70% опрошенных) перехода корпоративных пользователей на Linux является более низкая общая стоимость владения. На втором месте оказались богатство функций и техническое превосходство (68,6%), на третьем - защищенность (63,6%).

Расширяется также использование Linux для облачных вычислений. В 2012 г. рост количества организаций, которые перенесут некоторые свои приложения в облака, составит 34%. Действительно, в общей сложности 61% организаций сегодня применяют облачные приложения, будь то публичные, частные или гибридные облака. Среди работающих в облаках 66% применяют Linux в качестве основной платформы. Это на 4,7% больше, чем в прошлом году. Далее, 34,9% организаций планируют переносить в облако все новые приложения по сравнению с 26% годом ранее.

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

Итог: операционные системы семейства Linux - наиболее динамично развивающееся семейство ОС. Незаконченность установления полной упорядоченности ресурсов, некоторая сложность в освоении обычными пользователями и неполное признание производителями ПО - вот основные недостатки Linux. Преимуществ гораздо больше, это: массовость - то есть общественная доступность проекта, участие в нём программистов со всего мира. Благодаря массовости быстрее выявляются изъяны, создаются новые дистрибутивы; открытость ОС Linux сделала её потрясающей сферой для работы программиста; бесплатность ОС говорит сама за себя; развитая оболочка делает эту систему более профессиональной; наконец система безопасности в этой ОС продумана с особой тщательностью. Linux - это особая идеология, которая возможно вскоре покорит мир, придя на смену гегемонии Windows.


4. СИСТЕМОТЕХНИЧЕСКИЙ АНАЛИЗ


При системном анализе объекта проектирования необходимо рассматривать модуль программной системы оптимизации сети на основе протоколов управления ОС Linux как самостоятельную систему со своими особенностями, при этом необходимо учитывать принципы системного анализа [1].


.1 Принцип конечной цели


Для выполнения проекции данного принципа на проектируемый программный продукт необходимо представить его в виде «черного ящика» (рисунок 4.1). Тогда входными данными, вектор X, будут являться: информация администратора (запрашиваемая при входе в систему), информация о пользователе (запрашиваемая при выполнении процедуры регистрации), команды управления, поступающие от администратора через командную строку. Выходными данными, вектор Y, в этом случае будут являться: предоставление или запрещение доступа к системе и файлам для пользователя, предоставление или запрещение удаленного доступа, информация о состоянии пользователей для администратора. Управляющие параметры, вектор Z - информация о зарегистрированных пользователях, хранящаяся в файле с перечнем пользовательских учётных записей.


Рисунок 4.1 - Проектируемая система в виде черного ящика


Тогда для выполнения равенства Y=F(X,Z) проектируемая система должна выполнять следующие функции (в совокупности представляющие собой функцию F):

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

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

-непосредственное предоставление работы удаленного доступа;

-управление ресурсами (изменение прав доступа к файлам, запрет доступа в систему).


.2 Принцип единства


На основании выделенных функций проектируемой системы, можно выделить следующие подсистемы:

-подсистема управления пользователями;

-подсистема управления группами;

-подсистема удаленного доступа;

-подсистема управления ресурсами.


.3 Принцип связности


Совокупность подсистем проектируемой программной системы и их связей - данными, которыми эти подсистемы обмениваются друг с другом и с внешней средой, - образует ее структуру.



4.4 Принцип модульности


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

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

-модуль управления группами;

-модуль управления удаленным доступом;

-модуль управления ресурсами.


.5 Принцип иерархии


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

- уровень системы в целом, как совокупности подсистем;

уровень подсистем системы, которые состоят из модулей;

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


.6 Принцип функциональности


Функции системы в целом рассмотрены в связи с принципом конечной цели. Рассмотрим функции, входные и выходные данные выделенных подсистем.

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

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

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

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


.7 Принцип развития


Проектируемая система поддерживает добавление новых уровней в протоколы управления.

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

Возможные пути развития данной системы:

добавление диалогов работы с новыми командами;

улучшение интерфейса;

расширение поддерживаемых протоколов.

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


.8 Принцип сочетания централизации и децентрализации


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

-{подсистема управления пользователями и управления группами};

-{подсистема управления ресурсами};

-{подсистема удаленного доступа}.

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


.9 Принцип учета неопределенности и случайностей


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

-неправильный ввод информации о пользователе при регистрации (отсутствие заполнения какого-либо поля, слишком короткий пароль, неверный формат электронного адреса и т.д.);

-неправильный ввод информации при задании определенных прав на файлы;

-неправильный ввод информации при добавлении или изменении группы;

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



5. Вариантный анализ РЕАЛИЗАЦИИ ПРОГРАММНОЙ СИСТЕМЫ


5.1 Построение иерархии


Так как протоколы управления в ОС Linux выполняются стандартно, без каких либо вариантов реализации, то вариантному анализу подлежит только четвертый уровень оптимизации, т.е. необходимо решить задачу выбора одного из протоколов, предоставляющий удаленный доступ по сети. Альтернативными являются следующие протоколы: Telnet, SSH, Rlogin.

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

Точность вычислений - до четвертого знака после запятой. При расчёте принять отношение несогласованности матриц не более 10%.

Для начала выделим критерии, по которым можно выбирать тот или иной протокол:

-быстродействие (А1);

-стоимость (А2);

используемые ресурсы (А3);

возможность аутентификации сервера (А4);

возможность шифрования паролей и данных (А5).

Определив составляющие части каждого уровня, построим иерархию, описывающую поставленную задачу (Рисунок 5.1).


Рисунок 5.1 - Иерархия для решаемой задачи


.2 Построение матрицы парных сравнений 2-го уровня


На основе этих критериев построим матрицу парных сравнений второго уровня, где строки и столбцы составляют выбранные критерии. Сравнение критериев проведём по шкале относительной важности согласно с таблицей 5.1:

Таким образом, получим матрицу суждений, приведённую в Таблице 5.2 - Матрица парных сравнений 2-го уровня.



Таблица 5.1

Шкала относительной важности

Интенсивность относительной важностиОпределение1Равная важность3Умеренное превосходство одного над другим5Существенное или сильное превосходство7Значительное превосходство9Очень сильное превосходство2,4,6,8Промежуточные значения между двумя соседними суждениями

Таблица 5.2

Матрица парных сравнений 2-го уровня

КритерийБыстродействиеСтоимостьИспользуемые ресурсыВозможность аутентификации сервераВозможность шифрования паролей и данныхБыстродействие131/521/5Стоимость1/311/31/21/5Используемые ресурсы53141/3Возможность аутентификации сервера1/221/411/3Возможность шифрования паролей и данных55331

.3 Оценка критериев (второй уровень иерархии)


.3.1 Синтез локальных приоритетов для матрицы парных сравнений 2-го уровня

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


,

где и ,(5.1)



Найдем сумму всех значений по формуле:


, где ,(5.2)


Рассчитаем значения компонент вектора локальных переменных по формуле:


, где , (5.3)


Проверим нормализацию полученных значений по формуле:

,(5.4)


Рассчитаем относительную погрешность полученного значения по формуле:


,(5.5)


При заданной точности вычисление вектора локальных приоритетов произведено без погрешности.


.3.2 Исследование на согласованность матрицы парных сравнений 2-го уровня

Необходимо провести анализ согласованности матрицы второго уровня. Для этого вычислим сумму элементов каждого столбца матрицы суждений второго порядка по формуле:


,


где, (5.6)


Далее определим наибольшее собственное значение матрицы суждений по формуле:


,(5.7)


Используя полученные данные, определим индекс согласованности (ИС) по формуле:


, (5.8)


где n - размерность матрицы.



Используя индекс согласованности (ИС) вычислим отношение согласованности (ОС), по формуле:


, (5.9)


где СС - случайная согласованность.

СС - случайная согласованность, является табличным значением для матрицы конкретного размера, и берётся из Таблицы 5.3 - Таблица случайной согласованности.


Таблица 5.3

Таблица случайной согласованности

Размерность квадратной матрицы12345678910СС000.580.91.121.241.321.411.451.49

Для матрицы размерностью 5x5 СС=1.12.



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


.3.3 Анализ результатов оценки критериев

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

Ниже приведены критерии в порядке убывания их приоритетов:

. Возможность шифрования паролей и данных (0.4516);

. Используемые ресурсы (0.2783);

. Быстродействие (0.1149);

. Возможность аутентификации сервера (0.0930);

. Стоимость (0.0622).

Исходя из этих данных, можно сделать вывод, что критерий «Возможность шифрования паролей и данных» является наиболее важным критерием. Критерии «Используемые ресурсы» и «Быстродействие» также имеют большой приоритет. Остальные критерии являются малозначимыми.


.4 Оценка альтернатив (третий уровень иерархии)


Проведем сравнительную оценку каждой из альтернатив относительно каждого из критериев. Обозначение протоколов: А - Telnet, Б - SSH, В - Rlogin. Получим матрицы третьего уровня иерархии размерностью n=3. Для каждой из матриц, вычислим векторы локальных приоритетов xi и отношения согласованности ОС.


.4.1 Критерий «Быстродействие»


Таблица 5.4

Матрица парных сравнений для критерия «Быстродействие»

БыстродействиеАБВА11/45Б418В1/51/81

Вычислим собственный вектор локальных приоритетов матрицы, используя формулу (5.1):



Найдем сумму всех значений по формуле (5.2):


Рассчитаем значения компонент вектора локальных переменных по формуле (5.3):


; ;


Проверим нормализацию полученных значений по формуле (5.4):



Рассчитаем относительную погрешность полученного значения по формуле (5.5):



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

Для проверки согласованности вычислим сумму элементов каждого из столбцов матрицы по формуле (5.6):



Определим наибольшее собственное значение матрицы суждений по формуле (5.7):



Используя полученные данные, определим индекс согласованности (ИС) по формуле (5.8):



Вычислим отношение согласованности (ОС) по формуле (5.9):

Для матрицы размерностью 3x3 СС=0.58.



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


.4.2 Критерий «Стоимость»


Таблица 5.5

Матрица парных сравнений для критерия «Стоимость»

СтоимостьАБВА11/51/3Б514В31/41

Вычислим собственный вектор локальных приоритетов матрицы, используя формулу (5.1):




Найдем сумму всех значений по формуле (5.2):



Рассчитаем значения компонент вектора локальных переменных по формуле (5.3):



Проверим нормализацию полученных значений по формуле (5.4):



Рассчитаем относительную погрешность полученного значения по формуле (5.5):



При заданной точности вычисление вектора локальных приоритетов произведено без погрешности.

Для проверки согласованности вычислим сумму элементов каждого столбца матрицы по формуле (5.6):



Далее определим наибольшее собственное значение матрицы суждений по формуле (5.7):



Используя полученные данные, определим индекс согласованности (ИС) по формуле (5.8):



Вычислим отношение согласованности (ОС) по формуле (5.9):

Для матрицы размерностью 3x3 СС=0.58.



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


.4.3 Критерий «Используемые ресурсы»

Вычислим собственный вектор локальных приоритетов для матрицы, используя формулу (5.1):

Таблица 5.6

Матрица парных сравнений для критерия «Используемые ресурсы»

Используемые ресурсыАБВА11/51/4Б513В41/31


Найдем сумму всех значений по формуле (5.2):



Рассчитаем значения компонент вектора локальных переменных по формуле (5.3):


;

;


Проверим нормализацию полученных значений по формуле (5.4):



Рассчитаем погрешность полученного значения по формуле (5.5):



При заданной точности вычисление вектора локальных приоритетов произведено без погрешности.

Для проверки согласованности вычислим сумму элементов каждого столбца матрицы по формуле (5.6):



Далее определим наибольшее собственное значение матрицы суждений по формуле (5.7):



Используя полученные данные, определим индекс согласованности (ИС) по формуле (5.8):



Вычислим отношение согласованности (ОС) по формуле (5.9):

Для матрицы размерностью 3x3 СС=0.58.


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


.4.4 Критерий «Возможность аутентификации сервера»


Таблица 5.7

Матрица парных сравнений для критерия «Возможность аутентификации сервера»

Возможность аутентификации сервераАБВА11/51Б515В11/51

Вычислим собственный вектор локальных приоритетов матрицы, используя формулу (5.1):



Найдем сумму всех значений по формуле (5.2):



Рассчитаем значения компонент вектора локальных переменных по формуле (5.3):




Проверим нормализацию полученных значений по формуле (5.4):



Рассчитаем относительную погрешность полученного значения по формуле (5.5):



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

Для проверки согласованности вычислим сумму элементов каждого столбца матрицы по формуле (5.6):



Далее определим наибольшее собственное значение матрицы суждений по формуле (5.7):


Используя полученные данные, определим индекс согласованности (ИС) по формуле (5.8):



Используя полученные данные, определим индекс согласованности (ИС) по формуле (5.9):

Для матрицы размерностью 3x3 СС=0.58.



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


5.4.5 Критерий «Возможность шифрования паролей и данных»


Таблица 5.8

Матрица парных сравнений для критерия «Возможность шифрования паролей и данных»

Возможность шифрования паролей и данныхАБВА11/73Б719В1/31/91

Вычислим собственный вектор локальных приоритетов для матрицы, используя формулу (5.1):



Найдем сумму всех значений по формуле (5.2):



Рассчитаем значения компонент вектора локальных переменных по формуле (5.3):



Проверим нормализацию полученных значений по формуле (5.4):



Рассчитаем относительную погрешность полученного значения по формуле (5.5):



При заданной точности вычисление вектора локальных приоритетов произведено без погрешности.

Для проверки согласованности вычислим сумму элементов каждого столбца матрицы по формуле (5.6):



Далее определим наибольшее собственное значение матрицы суждений по формуле (5.7):



Используя полученные данные, определим индекс согласованности (ИС) по формуле (5.8):



Вычислим отношение согласованности (ОС) по формуле (5.9):

Для матрицы размерностью 3x3 СС=0.58.



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

5.4.6 Анализ результатов оценки альтернатив

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

Критерий «Быстродействие».

. Альтернатива Б (0.6986);

. Альтернатива А (0.2370);

. Альтернатива В (0.0643).

Альтернатива Б имеет значительное преимущество в данном критерии над остальными альтернативами.

Критерий «Стоимость».

. Альтернатива Б (0.6738);

. Альтернатива В (0.2255);

. Альтернатива А (0.1007).

Очевидно, что Альтернатива Б имеет значительное преимущество по данному критерию над остальными альтернативами.

Критерий «Используемые ресурсы».

. Альтернатива Б (0.6267);

. Альтернатива В (0.2797);

. Альтернатива А (0.0936).

Альтернатива Б имеет значительное преимущество в данном критерии над остальными альтернативами.

Критерий «Возможность аутентификации сервера».

. Альтернатива Б (0.7143);

. Альтернатива А (0.1429);

. Альтернатива В (0.1429).

По данному критерию уверенно лидирует Альтернатива Б, другие альтернативы равнозначны.

Критерий «Возможность шифрования паролей и данных».

. Альтернатива Б (0.7854);

. Альтернатива А (0.1488);

. Альтернатива В (0.0658).

Альтернатива Б имеет преимущество в данном критерии над остальными альтернативами.

Из полученных данных можно сделать вывод, что Альтернатива Б лидирует во всех пяти критериях («Быстродействие», «Стоимость», «Используемые ресурсы», «Возможность аутентификации сервера», «Возможность шифрования паролей и данных»).


.5 Синтез глобальных приоритетов


Рассчитаем глобальные приоритеты для каждой альтернативы. Для удобства сведем вектор локальных приоритетов матрицы парных сравнений второго уровня в вектор X (Таблица 5.9 - Вектор локальных приоритетов второго уровня), а вектора локальных приоритетов матриц парных сравнений третьего уровня в матрицу Z, показанную в Таблице 5.10 - Матрица локальных приоритетов третьего уровня.


Таблица 5.9

Вектор локальных приоритетов второго уровня

X123450.11490.06220.27830.09300.4516

Таблица 5.10

Матрица локальных приоритетов третьего уровня

Zx1x2x3x4x5A0.23700.10070.09360.14290.1488Б0.69860.67380.62670.71430.7854В0.06430.22550.27970.14290.0658

Функция полезности k-й альтернативы имеет вид:


,(5.10)


где k - индекс альтернативы, xi - элемент вектора локальных приоритетов второго уровня, zik - элемент матрицы локальных приоритетов третьего уровня.



Проверим нормализацию полученных значений:



Рассчитаем погрешность полученного значения по формуле (5.5):



При вычислении вектора глобальных приоритетов имеем относительную погрешность 0.01%. Полученное значение погрешности удовлетворяет возможному отклонению от истинного значения.

Проверим согласованность иерархии.

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

,(5.11)


Далее необходимо вычислить отношение согласованности для заданного числа элементов по формуле:


,(5.12)


Для матрицы размерностью 5x5 СС=1.12.



Количественные оценки вкладов матриц (критериев) парных сравнений 3-го уровня во всю иерархию:



Исходя из этих данных, можно сделать вывод, что иерархия несогласованна, но ее значение лежит в пределах допустимого - менее 10%. Несогласованности таких таблиц критериев как «Быстродействие», «Используемые ресурсы» и «Возможность шифрования паролей и данных» внесли наибольший вклад в общую несогласованность иерархии по причине того, что имели наивысший приоритет (0.0045, 0.0119, 0.0181).


.6 Количественные оценки вкладов критериев в конечный результат


Определим количественные оценки вкладов критериев в конечный результат.

Альтернатива А:

Рассмотрим вклад каждого из критериев подробнее и сделаем выводы.

Критерий «Быстродействие» внес следующий вклад в процентном отношении:



Критерий «Стоимость» внес следующий вклад в процентном отношении:



Критерий «Используемые ресурсы» внес следующий вклад в процентном отношении:



Критерий «Возможность аутентификации сервера» внес следующий вклад в процентном отношении:


Критерий «Возможность шифрования паролей и данных» внес следующий вклад в процентном отношении:



Исходя из этих данных, можно сделать вывод, что критерии «Быстродействие», «Используемые ресурсы» и «Возможность шифрования паролей и данных» внесли наибольший вклад в конечный результат данной альтернативы по причине того, что имели наивысший приоритет. Остальные критерии не оказали сильного влияния на результат.

В результате полезность данной альтернативы оказалась низкой (0.1282), так как имела не высокие показатели по критериям.

Альтернатива Б:

Критерий «Быстродействие» внес следующий вклад в процентном отношении:



Критерий «Стоимость» внес следующий вклад в процентном отношении:



Критерий «Используемые ресурсы» внес следующий вклад в процентном отношении:


Критерий «Возможность аутентификации сервера» внес следующий вклад в процентном отношении:



Критерий «Возможность шифрования паролей и данных» внес следующий вклад в процентном отношении:



Исходя из этих данных, можно сделать вывод, что критерии «Быстродействие», «Используемые ресурсы» и «Возможность шифрования паролей и данных» внесли наибольший вклад в конечный результат данной альтернативы по причине того, что имели наивысший приоритет. Остальные критерии не оказали сильного влияния на результат.

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

Альтернатива В:

Рассмотрим вклад каждого из критериев подробнее и сделаем выводы.

Критерий «Быстродействие» внес следующий вклад в процентном отношении:



Критерий «Стоимость» внес следующий вклад в процентном отношении:



Критерий «Используемые ресурсы» внес следующий вклад в процентном отношении:



Критерий «Возможность аутентификации сервера» внес следующий вклад в процентном отношении:



Критерий «Возможность шифрования паролей и данных» внес следующий вклад в процентном отношении:



Исходя из этих данных, можно сделать вывод, что критерии «Используемые ресурсы» и «Возможность шифрования паролей и данных» внесли наибольший вклад в конечный результат данной альтернативы. В результате полезность данной альтернативы оказалось низкой (0.1422), так как имела не высокие показатели по критериям.

Из этих данных можно сделать вывод, что наивысшую полезность имеет Альтернатива Б, за ней следует Альтернатива В с большим отставанием и с небольшим отставанием идёт Альтернатива А.

В результате проведенной работы МАИ показал, что протокол SSH предпочтительнее остальных протоколов.

программный модуль сеть протокол


6. ОПИСАНИЕ ПРОГРАММНОго модуля


.1 Общие сведения


Цель разработки - создание программного модуля оптимизации работы сети на платформе операционной системы Linux по протоколам управления.

Для функционирования программы требуется IBM-совместимый персональный компьютер на основе микропроцессора Intel Pentium 667 MHz или более производительная система (а также их аналоги), минимум 32 MB ОЗУ, минимум 10 MB свободного места на диске. Операционная система Linux Debian..

Программа разработана на языке программирования высокого уровня JAVA в среде визуального проектирования NetBeans IDE 6.7 [11]. Листинг исходного кода программы приведён в Приложении А.


6.2 Функциональное назначение


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

.3 Руководство пользователя


Для начала работы с программой необходимо запустить файл Diploma.jar на рабочем столе. После запуска файла появится главное окно:


Рисунок 6.1 - Главное окно программы


Выбрав «Часть1» осуществляется переход на следующее окно, в котором пользователь (администратор) начинает работу с протоколами управления.


Рисунок 6.2 - Окно «Протоколы управления»


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

Рассмотрим каждую подсистему подробнее.

. Управление пользователями

.1 Кнопка «adduser» - добавление пользователя в систему

При нажатии на кнопку «adduser» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо задать имя нового пользователя, выбрать необходимый параметр и нажать кнопку «Ок».

Рисунок 6.3 - Окно добавления нового пользователя


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


Рисунок 6.4 - Окно терминала


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


Рисунок 6.5 - Окно редактирования информации о пользователе


В итоге мы получаем новую учетную запись с именем «qwerty».

.2 Кнопка «usermod» - изменение параметров учетной записи пользователя

При нажатии на кнопку «usermod» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо задать имя пользователя, у которого хотим произвести изменения, выбрать необходимый параметр и нажать кнопку «Ок». Например, приведем случай, когда мы хотим изменить имя этого пользователя.


Рисунок 6.6 - Окно изменения параметров учетной записи пользователя


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

.3 Кнопка «users» - показывает имена пользователей, которые в данный момент работают в системе.

Результат выполнения этой команды отображается в окне «Протоколы управления» в области «Статус».


Рисунок 6.7 - Окно «Протоколы управления»

.4 Кнопка «passwd» - изменение пароля пользователя

При нажатии на кнопку «passwd» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо задать имя пользователя, у которого хотим произвести изменения, выбрать необходимый параметр и нажать кнопку «Ок». Например, приведем случай, когда мы хотим просто без каких либо параметров изменить пароль этого пользователя.


Рисунок 6.8 - Окно изменения пароля пользователя


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


Рисунок 6.9 - Окно терминала для изменения пароля


.5 Кнопка «deluser» - удаление пользователя из системы.

При нажатии на кнопку «deluser» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо задать имя пользователя, которого хотим удалить, выбрать необходимый параметр и нажать кнопку «Ок». Например, приведем случай, когда мы хотим удалить пользователя «qwertyk», а также его домашний каталог и хранилище почты.


Рисунок 6.10 - Окно удаления пользователя


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


Рисунок 6.11 - Окно терминала удаления пользователя


.6 Кнопка «/etc/passwd» - предназначена для просмотра файла с перечнем пользовательских учетных записей, известных системе.


Рисунок 6.12 - Фрагмент файла учетных записей

При нажатии на кнопку «/etc/passwd» произойдет переход в системный терминал, в котором потребуется ввести пароль суперпользователя. После этого откроется файл «passwd», содержащий все учетные записи, известные системе.

. Управление группами.

.1 Кнопка «addgroup» - добавление группы в систему.

При нажатии на кнопку «addgroup» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо задать имя группы, выбрать необходимый параметр и нажать кнопку «Ок».


Рисунок 6.13 - Окно добавления группы в систему


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


Рисунок 6.14 - Окно терминала добавления группы


.2 Кнопка «groupmod» - изменение определения группы в системе.

При нажатии на кнопку «groupmod» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо задать имя группы, выбрать необходимый параметр и нажать кнопку «Ок». Например, приведем случай, когда мы хотим изменить имя группы.


Рисунок 6.15 - Окно изменения определения группы


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

.3 Кнопка «groups» - показывает имена групп, в которые входят пользователи.

При нажатии на кнопку «groups» произойдет переход в диалоговое окно, в котором имеется один параметр, т.е. необходимо задать имя пользователя или имена пользователей через пробел и нажать кнопку «Ок».


Рисунок 6.16 - Окно для введения имени пользователя


Результат выполнения этой команды отображается в окне «Протоколы управления» в области «Статус».

.4 Кнопка «gpasswd» - управление группами и их паролями

При нажатии на кнопку «gpasswd» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо задать имя группы, в которой хотим произвести изменения, выбрать необходимый параметр и нажать кнопку «Ок».


Рисунок 6.17 - Окно «Протоколы управления»


Например, приведем случай, когда мы хотим просто удалить пароль группы.


Рисунок 6.18 - Окно управления группами и их паролями


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

.5 Кнопка «delgroup» - удаление группы из системы.

При нажатии на кнопку «delgroup» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо задать имя группы, которую хотим удалить, выбрать необходимый параметр и нажать кнопку «Ок». Например, приведем случай, когда мы хотим удалить группу «grupas» без каких либо параметров.


Рисунок 6.19 - Окно удаления группы


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


Рисунок 6.20 - Окно терминала удаления группы


.6 Кнопка «/etc/group» - предназначена для просмотра файла с перечнем групп, известных системе.

При нажатии на кнопку «/etc/group» произойдет переход в системный терминал, в котором потребуется ввести пароль суперпользователя. После этого откроется файл «group», содержащий все группы, известные системе.

. Управление ресурсами

.1 Кнопка «chmod» - изменение прав доступа к файлам и директориям.

При нажатии на кнопку «chmod» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо задать файл, выбрать необходимые параметры и нажать кнопку «Ок». Например, приведем случай, когда мы хотим файлу «15.jpg» присвоить права чтения, записи и запуска для всех пользователей.


Рисунок 6.21 - Фрагмент файла «group»


Рисунок 6.22 - Окно изменения прав доступа к файлу


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


Рисунок 6.23 - Свойства файла «15.jpg»

.2 Кнопка «chown» - изменение владельца и/или группы для указанных файлов.

При нажатии на кнопку «chown» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо задать файл, выбрать необходимые параметры и нажать кнопку «Ок». Например приведем случай, когда мы хотим файлу «15.jpg» присвоить нового владельца и группу.


Рисунок 6.24 - Окно изменения владельца и группы для файла


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


Рисунок 6.25 - Свойства файла «15.jpg»

.3 Кнопка «umask» - изменение прав доступа, которые присваиваются новым файлам и директориям по умолчанию.

При нажатии на кнопку «umask» произойдет переход в диалоговое окно, в котором имеются поля и параметры для выбора, т.е. необходимо выбрать пользователя, задать маску и нажать кнопку «Ок». Например приведем случай, когда мы хотим предоставить все права пользователю «alim», запретить читать файл членам группы и не давать никаких прав другим пользователям.


Рисунок 6.26 - Окно изменения прав доступа по маске


Затем осуществится переход в системный терминал, в котором потребуется ввести пароль суперпользователя. После этого этому пользователю предоставляться заданные права. Результат можно посмотреть, набрав в терминале nano /home/alim/.profile.


Рисунок 6.27 - Фрагмент файла .profile для пользователя с именем alim

. Удаленный доступ (SSH).

При нажатии на кнопку «Часть1», т.е. переход из главного окна в окно «Протоколы управления» происходит проверка службы ssh, установлена ли она в системе или нет. Результат показывается в статусе.


Рисунок 6.28 - Окно «Протоколы управления»


.1 Кнопка «Установить» - предназначена для установки службы удаленного доступа (ssh).

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


Рисунок 6.29 - Фрагмент терминала установки ssh


.2 Кнопки «ssh_config» «sshd_config» - предназначены для настроек конфигурационных файлов клиента и сервера.


Рисунок 6.30 - Фрагмент файла ssh_config


Рисунок 6.31 - Фрагмент файла sshd_config


Рассмотрим наиболее основные опции этих конфигурационных файлов, которые можно задавать [9]:

. Файл «ssh_config».

# Определение хоста, в данном случае включает все хосты домена test.ru, можно

# использовать одиночный символ * чтобы указать параметры доступа к любому хосту.*.test.ru

# Эта опция определяет, будет ли ssh использовать передачу данных от удалённого

# X сервера через свой безопасный канал. Данная возможность позволяет

# защищать по идее небезопасные протоколы(X, pop, smtp, ftp) шифрованием ssh. По

# умолчанию данная опция no.yes

# Список предпочтительных методов аутентификации через ssh версии 2. Первым

# стоит самый предпочтительный протокол.hostbased,publickey,keyboard-interactive

# Этот параметр определяет, будет ли производится стандартная парольная проверка.

# По умолчанию yes.yes

# Число попыток ввода пароля перед тем, как клиент отсоединяется от сервера. По

# умолчанию пароль можно вводить трижды.3

# Список допустимых пользователей для данного сервера. Можно применять два

# формата: список пользователей, разделённых пробелом, и список пользователей и

# хостов, разделённых пробелом(USER@HOST - разрешает данному пользователю доступ

# только с данного адреса). Можно использовать выражения * и ?. Подобное же

# назначение имеют опции AllowGroups, DenyUsers и DenyGroups(для групп нельзя

# указывать адрес клиента).*@*.test.ru

DenyUsers xakep lamerx*

# Использование ssh(2 версия) аутентификации через rhosts и RSA ключи. По

# умолчанию no.yes

# Будет ли клиент пытаться работать по rsh, если ssh недоступен или по каким-то

# причинам работает неправильно. По умолчанию no.no

# Используем ли rsh. По умолчанию no.no

# Режим скрипта, когда не спрашиваются пароли с терминала. По умолчанию no.no

# Дополнительно проверяется ключ хоста удалённой машины в

# known_hosts, что исключает подмену ip. По умолчанию yes.yes

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

# ключам. Параметр может принимать следующие значения: yes - ключи никогда

# автоматически не помещаются в known_hosts, ask - ключ может быть помещён в

# known_hosts только после подтверждения пользователя, no - все ключи

# автоматически размещаются в known_hosts(небезопасно). По умолчанию ask.ask

# Следующие параметры определяют секретные ключи ssh различных форматов:

# rsa и dsa.$HOME/.ssh/id_rsa $HOME/.ssh/id_dsa

# Порт, на удалённой машине используемый ssh. По умолчанию 22.22

# Версии протоколов, используемые клиентом в порядке убывания приоритета.2

# Протокол шифрования для версии 1 протокола ssh.3des

# Возможные протоколы шифрования в порядке убывания приоритета для протокола

# версии 2.aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc

# Значение escape-символа, сигнализирующего, что идущие за ним символы

# необходимо воспринимать специальным образом (например ~. вызовет немедленное

# отключение клиента от сервера) при передаче двоичных данных необходимо

# установить этот параметр в none, что выключает escape последовательности. По

# умолчанию ~.~

# Управление работой компрессии зашифрованнного трафика. Полезный параметр для

# медленных сетей, т.к. зашифрованные данные обычно увеличиваются в размере за

# счёт фиксированной длины ключа. Компрессия позволяет уменьшить количество

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

# Так что включать этот параметр желательно на медленных соединениях. По

# умолчанию no.yes

# Управляет посылкой сообщений о доступности клиента серверу, что позволяет

# нормально разорвать соединение, если произошла неполадка в сети или иная,

# приведшая к разрыву соединения. Если связь плохая, то лучше эту опцию

# отключить, чтобы дисконнект не происходил после каждой ошибки сети. По

# умолчанию yes.

KeepAlive yes

.Файл «sshd_config».

# Номер порта и версия протокола222

# Адреса, на которых слушает сервер, можно также указывать порт(server.test.ru:2022).

ListenAddress server.test.ru

# Ключ сервера для протокола версии 1.

HostKey /etc/ssh/ssh_host_key

# Ключи rsa и dsa для ssh версии 2.

HostKey /etc/ssh/ssh_host_rsa_key/etc/ssh/ssh_host_dsa_key

# Данные значения определяют длину ключа сервера и его время жизни для

# использования ssh версии 1(данный ключ будет заново генерироваться через

# заданное время).

#KeyRegenerationInterval 3600

#ServerKeyBits 768

# Далее определяем методы аутентификации для данного сервера и её параметры

# Сервер отсоединяется по происшествии данного времени в секундах, если клиент

# не проходит аутентификацию.600

# Разрешаем заходить по ssh руту.yes

# Проверка sshd прав доступа и владельцев домашних каталогов. Полезно для тех

# пользователей, что дают права всему 0777.

StrictModes yes

# Аутентификация через RSA (версия 1).

RSAAuthentication yes

# Аутентификация пользователя по ключу (версия 2).yes

# Определяет публичный ключ пользователя для аутентификации по ключу. Можно

# применять шаблоны: %u - имя пользователя, %h - домашний каталог пользователя..ssh/authorized_keys

# Не используем аутентификацию rhosts.

RhostsAuthentication no

# Можно также игнорировать rhosts и shosts при hostbased autentification,

# используя только known_hosts файл.

#IgnoreRhosts yes

# Используем ли аутентификацию через known_hosts совместно с .rhosts или

# .shosts. Опция действительна только для протокола версии 1.no

# То же самое, что и предыдущее только для версии 2.yes

# Если нет доверия к known_hosts, то их можно не использовать при hostbased

# autentification. По умолчанию no.no

# Чтобы запретить посылку хешей паролей через туннель ssh задайте значение

# данной опции no. По умолчанию аутентификация по паролю разрешена.yes

# Можно также разрешить пустые пароли.no

# Аутентификация через механизм PAM.no

# Передача протокола иксов через туннель ssh.Forwarding yes

# Используем в качестве x-сервера данный, т.е. клиент, запуская у себя x-клиента

# будет фактически использовать наш сервер, но все данные от сервера к клиенту

# будут шифроваться.UseLocalhost yes

# При логине пользователя выводим /etc/motd: в некоторых системах это отменено в

# целях безопасности.yes

# Сообщаем пользователю время и место последнего логина, ситуация, аналогичная

# предыдущей.yes

# Посылать клиенту сообщения о доступности.yes

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

# клиентов, не прошедших аутентификацию больше, то новые соединения не будут

# обрабатываться.10

# Путь к файлу, который будет отображаться при входе клиента до аутентификации./etc/ssh_message

# Проверка соответствия ip адреса клиента и его символического имени в backzone,

# затем снова сравнение имени с ip адресом. Таким образом проверяется

# подлинность ip, но метод этот достаточно тормозной и по умолчанию он отключен.no

4.3 Кнопка «Запустить» - предназначена для запуска службы удаленного доступа (ssh) на локальном компьютере для обеспечения возможности сообщаться с другими компьютерами в сети.

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


Рисунок 6.32 - Окно терминала запуска службы


.4 Кнопка «Остановить» - предназначена для остановки службы удаленного доступа (ssh) на локальном компьютере.

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


Рисунок 6.33 - Окно терминала остановки службы


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


Рисунок 6.34 - Окно дополнительного терминала


При нажатии на кнопку «Терминал» осуществиться переход в системный терминал.


Рисунок 6.35 - Окно системного терминала


.4 Описание логической структуры


В программе используются методы модульного программирования: выделение методов, реализующих отдельные подзадачи, стандартные команды операционной системы Linux, а также стандартные методы и функции языка Java [13].

Основные функциональные составляющие:

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

String openFileDialog(JDialog dialog) - отображает окно выбора файлов, указывающее на пользовательскую директорию по умолчанию. Параметры: dialog - ссылка на диалоговое окно, в котором необходимо выполнить операцию. Возвращает: pathToFile - полный путь к выбранному пользователем файлу в виде строки;

String openDirectoryDialog(JDialog dialog) - отображает окно выбора папок, указывающее на пользовательскую директорию по умолчанию. Параметры: dialog - ссылка на диалоговое окно, в котором необходимо выполнить операцию. Возвращает: pathToFile - полный путь к выбранному пользователем каталогу в виде строки;

void runCommand(String command) - Выполняет указанную команду в отдельном процессе. При этом содержимое параметра command разбивается на отдельные лексемы, которые являются составляющими строки команды (сама команда и ее параметры). Параметры: command - указанная системная команда;

void makeAdduserCom(String[] param) - формирует текст команды adduser - команды добавления пользователя в системе Linux. Метод считывает введенную пользователем информацию из текстовых полей и выпадающих списков, отображаемых в диалоге создания команды adduser. Параметр param содержит один или несколько введенных параметров. По полученным данным и формату команды составляется ее текст, который помещается в специальное текстовое поле для отображения пользователю;

void makeDeluserCom() - составляет текст команды удаления пользователя с учетом введенных входных данных и формата команды;

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

void makePasswdCom() - выполняет компоновку заголовка команды изменения пароля пользователя, ее параметров и имени пользователя;

void makeAddgroupCom() - строит текст команды добавления группы;

void makeDelgroupCom() - данный метод формирует текст команды удаления группы;

void makeGroupmodCom() - организовывает текст команды изменения определения группы в системе. Исходные данные для команды задаются пользователем в окне диалога;

void makeGpasswdCom() - выполняет компоновку заголовка команды управления файлом групп (/etc/group) в операционной системе Linux;

void makeChmodCom() - формирует текст команды изменения прав доступа к файлу;

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

void makeUmaskCom() - строит текст команды получения или установки маски режима создания файлов и отображает его в специальном текстовом поле;

void makeSh(String filename, String[] command) - данный метод создает и формирует содержимое sh-файлов (скрипт, специально разботанный для операционной системы Linux). Имя файла передается в параметре filename, команды на выполнение, которые должны быть включены в данный файл скриптов, располагаются в параметре command;

void makeUmaskSh(String username, String mask) - создает и формирует скрипт-файл для выполнения команды umask (команды получения или установки маски режима создания файлов). Параметры: username - имя пользователя, для которого необходимо применить данную маску; mask - цифровое значение маски, записанное в переменной строкового типа;

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

void adduserDialogClean() - данный метод выполняет очистку содержимого всех текстовых полей для ввода данных, а также устанавливает выбранным первый элемент во всех выпадающих списках в диалоге команды adduser;

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

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

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

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

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

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

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

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

void ComboTooltip(JComboBox box, String[] tooltipsArray) - устанавливает для элементов заданного всплывающего списка - box - всплывающие подсказки из массива tooltipsArray. Индекс элемента в всплывающем списке соответствует индексу в массиве подсказок;

ArrayList makeTooltipsArray(String[] StringArray) - создает специальную структуру данных - массив-список подсказок из массива строк.

boolean runCheck() - выполняет проверку установки службы удаленного доступа - ssh. Возвращает переменную логического типа passed, хранящую информацию о том, установлена ли в системе данная служба;

void runCheckDaemon() - выполняет проверку запуска службы ssh. Выводит в текстовое поле статуса соответствующее сообщение - запущена служба или нет;

String[] getOutput(String command) - данный метод позволяет получить выходные данные команды (параметр command), выполненной в отдельном процессе. Используется для получения информации по командам users (получить текущих пользователей системы) и groups (получить информацию о том, в какие группы входят пользователи);

Методы void adduserComponentsHide(), void deluserComponentsHide(), void usermodComponentsHide(), void passwdComponentsHide(), void addGroupComponentsHide(), void groupmodComponentsHide() и void gpasswdComponentsHide() выполняют одинаковую задачу, но для разных диалоговых окон: скрывают компоненты интерфейса, с которыми нет необходимости работать пользователю на начальном этапе формирования текста команды, либо на другом определенном этапе. После этого методы упаковывают свое диалоговое окно с целью уменьшения пустого рабочего места в окне.

void prepUsermod(String text) - данный метод формирует содержимое окна диалога для работы с командой usermod. Параметр: text - текстовое значение, которое нужно присвоить метке (элемент интерфейса) с учетом выбранного параметра команды;

public class DoRuntime - в данном классе расположены методы по проверки установки и запуска демонов (служб операционной системы Linux);

String installVerify(String daemonName) - выполняет проверку установки службы по его имени (параметр daemonName). Для этого создается скрипт-файл в определенном формате, затем он выполняется в отдельном процессе. Метод получает результаты работы скрипта и по ним устанавливает - установлена ли в системе служба с данным именем. Метод возвращает строку result с соответствующим сообщением;

boolean isRunning() - данный метод выполняет проверку запуска службы. В отдельном процессе выполняется уже заготовленный скрипт-файл, результаты работы которого помещаются в файл. По содержимому файла метод определяет, запущена ли данная служба;

void makeProcSh(String daemonName) - создает и формирует sh-файл для проверки запуска службы операционной системы Linux по ее имени (параметр daemonName).


7. ТЕСТИРОВАНИЕ ПРОГРАММНОГО МОДУЛЯ


.1 Объект испытаний


Объект испытаний - программный модуль оптимизации работы сети на платформе операционной системы Linux по протоколам управления.

Функции программного модуля:

регистрация, управления пользователями и группами пользователей;

управления доступом к файлам и каталогам как на локальном компьютере, так и на удаленном компьютере внутри локальной сети;

предоставление работы удаленного доступа.


.2 Цель испытаний


Целью проведения испытаний является подтверждение работоспособности программного модуля для заданных ситуаций взаимодействия с пользователями.


.3 Требования к программе


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


.4 Средства и порядок испытаний


Для испытаний использовался IBM PC-совместимый компьютер на базе процессора Pentium 4 2133 Mhz с 512MB SDRAM под управлением ОС Linux Debian. В системе установлены: JAVA платформа и среда визуального проектирования NetBeans IDE 6.7 [12].

Запуск программы осуществляется файлом Diploma.jar.


.5 Методы испытаний


Рассмотрим основные ситуации, при которых программа выдаст сообщение об ошибке.

.Проведем попытку добавить пользователя, который уже существует, т.е. с таким же именем. Это некорректная ситуация. В файле с перечнем пользовательских учетных записей имеется пользователь с именем «tester».


Рисунок 7.1 - Фрагмент файла с перечнем пользовательских учетных записей


Добавление пользователя с именем «tester».

При нажатии на кнопку «adduser» переходим в диалоговое окно, в котором задаем имя нового пользователя и нажимаем кнопку «Ок».


Рисунок 7.2 - Окно добавления пользователя

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


Рисунок 7.3 - Окно терминала добавления пользователя


. Проведем попытку удалить пользователя, который не существует.

При нажатии на кнопку «deluser» переходим в диалоговое окно, в котором задаем имя пользователя, которого хотим удалить и нажимаем кнопку «Ок».


Рисунок 7.4 - Окно удаления пользователя


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


Рисунок 7.5 - Окно терминала удаления пользователя


. Проведем попытку добавить группу, которая уже существует, т.е. с таким же именем. Это некорректная ситуация. В файле с перечнем групп имеется группа с именем «tester».


Рисунок 7.6 - Фрагмент файла с перечнем групп


Добавление группы с именем «tester».

При нажатии на кнопку «addgroup» переходим в диалоговое окно, в котором задаем имя новой группы и нажимаем кнопку «Ок».


Рисунок 7.7 - Окно добавления группы


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


Рисунок 7.8 - Окно терминала добавления группы


. Проведем попытку удалить группу, которой не существует.

При нажатии на кнопку «delgroup» переходим в диалоговое окно, в котором задаем имя группы, которую хотим удалить и нажимаем кнопку «Ок».


Рисунок 7.9 - Окно удаления группы


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


Рисунок 7.10 - Окно терминала удаления группы


. Проведем попытку изменить учетную запись пользователя, т.е. например для пользователя «tester» хотим изменить id (идентификатор пользователя) на 1001, но такой id уже занят другим пользователем.

При нажатии на кнопку «usermod» переходим в диалоговое окно, в котором задаем имя пользователя, указываем новый id и нажимаем кнопку «Ок».


Рисунок 7.11 - Окно изменения информации о пользователе

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


Рисунок 7.12 - Окно терминала изменения информации о пользователе


. Проведем попытку изменить группу, т.е. например для группы «tester» хотим изменить id (идентификатор группы) на 1004, но такой id уже занят другой группой.

При нажатии на кнопку «groupmod» переходим в диалоговое окно, в котором задаем имя группы, указываем новый id и нажимаем кнопку «Ок».


Рисунок 7.13 - Окно изменения информации о группе


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


Рисунок 7.14 - Окно терминала изменения информации о группе


7. Проведем попытку удалить пароль пользователя, которого не существует.

При нажатии на кнопку «passwd» переходим в диалоговое окно, в котором задаем имя пользователя, указываем параметр d (удалить пароль пользователя) и нажимаем кнопку «Ок».


Рисунок 7.15 - Окно удаления пароля пользователя


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


Рисунок 7.16 - Окно терминала удаления пароля пользователя


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

При нажатии на кнопку «gpasswd» переходим в диалоговое окно, в котором задаем имя группы, имя пользователя и указываем параметр d (удалить пользователя из группы) и нажимаем кнопку «Ок».


Рисунок 7.17 - Окно удаления пользователя из группы

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


Рисунок 7.18 - Окно терминала удаления пользователя из группы


. Проведем попытку изменить владельца и группу для файла «15.jpg», указав не существующую группу.

При нажатии на кнопку «chown» переходим в диалоговое окно, в котором задаем имя пользователя, имя группы и указываем необходимый файл и нажимаем кнопку «Ок».


Рисунок 7.19 - Окно изменения владельца и группы для файла


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


Рисунок 7.20 - Окно терминала изменения владельца и группы для файла

. Проведем попытку изменить права доступа к файлу «15.jpg», не заполнив поле «Права».

При нажатии на кнопку «chmod» переходим в диалоговое окно, в котором указываем путь к файлу, выбираем для каких пользователей (в данном случае all - для всех) и оставляем пустым поле «Права».


Рисунок 7.21 - Окно изменения прав доступа к файлу


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


Рисунок 7.22 - Окно терминала изменения прав доступа к файлу


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

При нажатии на кнопку «Запустить» осуществится переход в системный терминал, в котором потребуется ввести пароль суперпользователя. После этого программа сообщит следующее:



Рисунок 7.23 - Окно терминала запуска службы ssh


.6 Анализ результатов тестирования


В результате проведенных испытаний можно сказать о следующем:

-программа корректно работает для всех задач изменения в системе;

-программа выдает сообщения о неверно заданных параметрах;

-автоматический анализ конфигурации проходит корректно;



8. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ СОЗДАНИЯ ПРОГРАММНОГО ПРОДУКТА


.1 Исследование программного продукта


.1.1 Назначение программного продукта

Разрабатываемый программный продукт - это часть научно-исследовательской работы на тему «Программная система оптимизация работы сети на платформе операционной системы Linux».

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

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


.1.2 Основные свойства программного продукта

Программа разработана на языке программирования высокого уровня JAVA в среде визуального проектирования NetBeans IDE 6.7.

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

регистрация, авторизация и управление пользователями;

предоставление работы удаленного доступа;

построение топологии сети (маршрутизация);

предоставление различных серверов для работы.


8.1.3 Основные потребительские свойства

К потребительским свойствам проектируемого продукта относятся такие особенности, как:

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

небольшой объем физической памяти;

проверка корректности введенных исходных данных;

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


.1.4 Требования к функциональным характеристикам программного продукта

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


8.1.5 Требования к надежности программного продукта

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

1.Информация передается в систему в заданном формате, следовательно, необходимо проверить правильность формата и принятых данных;

2.При обнаружении ошибок в переданной информации система должна сообщить об этом пользователю ПП.


8.1.6 Требования к условиям эксплуатации

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

Для эксплуатации данного программного продукта необходим IBM-совместимый персональный компьютер на основе микропроцессора Intel Pentium 667 MHz или более производительная система (а также их аналоги), минимум 32 MB ОЗУ, минимум 10 MB свободного места на диске. Операционная система Linux Debian.

Запуск программы осуществляется файлом Diploma.jar.


8.1.7 Конкурентоспособность

Конкуренция - деятельность соперничества нескольких лиц в достижении одной и той же цели. Конкурентоспособность товара - способность товара соперничать с аналогичными товарами других предприятий.

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

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


8.1.8 Оценка рыночной направленности

Проведем оценку шансов и рисков проектируемого продукта по таблице [18]:

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



Таблица 8.1

Оценки шансов и рисков проектируемого продукта

ПоказателиБаллыОпасностьНейтральноШансы123456789Объем рынка×Рост рынка×Финансовый потенциал×Число конкурентов×Поведение конкурентов×Осведомленность потребителей×Возможность повышения цен×Изменение конъюнктуры рынка×Возможность замещения ПП×Потенциал сервиса×

,(8.1)


где

КЭ.ОЦ. - коэффициент экспертной оценки, представляющий собой величину (среднеарифметическую) исследуемых показателей;

Бi - балл по i-ому показателю;

n - количество показателей.


,


Средняя экспертная оценка - 5.7.

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


8.2 Исследование рынка сбыта программного продукта (ПП)


.2.1 Сегментация рынка

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

Принципы сегментации:

Географический (город, округ, плотность населения, климат);

Психографический (общественный класс, образ жизни, тип личности);

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

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

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

учреждения образования;

.малый и средний бизнес.

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

Схематично разбиение можно показать следующим образом:

Также опишем цели приобретения программного продукта.

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

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


Рисунок 8.1 - Сегментация рынка


Для начала ПП будет внедряться в учебных целях для курса дисциплины: «Компьютерные сети». В дальнейшем предполагается распространение этого программного продукта для различных предприятий с адаптацией под требования конкретной организации.


8.2.2 Анализ тенденции рынка

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


8.2.3 Предпочтительный потребитель

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

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


8.2.4 Возможные причины финансовых неудач

Возможными причинами финансовых неудач могут стать следующие:

пиратство на рынке сбыта готовой продукции;

изменение тенденции рынка;

потребительская стоимость ПП будет ниже установленной;

низкая осведомленность потребителей;

переход к использованию другой операционной системы, несовместимой с данным программным продуктом;

переход к использованию другой аппаратной платформы, несовместимой с данным программным продуктом.


8.3 Итоги маркетинговых исследований


В результате проведенных маркетинговых исследований предлагаемого программного продукта были изучены все основные потребительские свойства продукта:

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

небольшой объем физической памяти;

проверка корректности введенных исходных данных;

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

Изучена конкурентоспособность товара, аналогичный товар конкурента, определена рыночная направленность, определен портрет потребителя.

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

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


.4 Определение затрат на проектирование продукта


.4.1 Определение трудоемкости разработки ПП

Трудоемкость проекта определяется исходя их данных об используемых функциях ПП. Функции ПП представлены в таблице 8.2.


Таблица 8.2

Основные функции программного продукта

Наименование (содержание) функцииОбъем функций, тыс. УМК1. Ввод, анализ информации:Организация ввода информации0.670Контроль2.100Организация ввода/вывода информации в интерактивном режиме1.5502. Формирование и обработка файлов:Обслуживание файлов2.900Обработка файлов в диалоговом режиме5.130Управление файлами4.1003. Генерация программ и ПС ВТ, а также настройка ПС ВТСистема настройки ПС ВТ3.0004. Управление ПС ВТ компонентами ПС ВТ, внешними устройствамиМонитор ПС ВТ (управление работой компонентов)3.110Управление внешними устройствами и объектами6.500Обеспечение интерфейса между компонентами6.86Общий объем разрабатываемого ПП V0 в тыс. УМК определяется по формуле:


/p, (8.2) (8.2)


где Vi - объем i-ой функции ПП;

n - общее число функций ПП.

Общий объем разрабатываемого ПП составит V0=7.184 тыс. УМК.

Анализ особенностей ПП показывает, что последний характеризуется 3-й группой сложности.

Определение затрат труда Tр на разработку ПП осуществляется на основании значений норм времени, которые в свою очередь зависят от объема ПП, и группы сложности ПП. Затраты труда Tр для разрабатываемого ПП составят Tр=35.7 чел.-дн.

Общая трудоемкость Т0 для ПП соответствующей группы сложности с учетом поправочного коэффициента сложности ПП Ксл рассчитывается по формуле:


(8.3) (8.3)


В свою очередь коэффициент сложности ПП Ксл рассчитывается по формуле:


, (8.4) (8.4)


где Кi - коэффициент, учитывающий уровень повышения сложности по дополнительным характеристикам ПП;

n - количество дополнительных характеристик ПП.

Значение коэффициента Kсл, учитывающего уровень повышения сложности ПС ВТ, составит Kсл=1+0.06=1.06.

Общая трудоемкость Т0 для разрабатываемого ПП составит To=35.7*1.06=37.842. Полученную общую трудоемкость То разработки ПП следует разбить на соответствующие стадии разработки: технического задания (ТЗ), эскизного проектирования (ЭП), технического проектирования (ТП), рабочего проектирования (РП), внедрения (ВН).

Трудоемкость каждой стадии разработки ПП Тi определяют по формулам:


Т1 = Lтз * Кн * То -трудоемкость стадии ТЗ, (8.5)(8.5) (8.5)

Т2 = Lэп * Кн * То -трудоемкость стадии ЭП,(8.6)(8.6) (8.6)

Т3 = Lтп * Кн * То -трудоемкость стадии ТП, (8.7) (8.7)

Т4 = Lрп * Кн * То * Кт -трудоемкость стадии РП, (8.8) (8.8)

Т5 = Lвн * Кн * То -трудоемкость стадии ВН, (8.9) (8.9)


Где L - удельный вес трудоемкости соответствующей стадии разработки в общей трудоемкости;

Кн - поправочный коэффициент, учитывающий степень новизны ПП;

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

Поправочный коэффициент, учитывающий степень новизны разрабатываемого ПП, составляет Kн=0.7.

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

Значения удельных весов трудоемкостей соответствующих стадий разработки составляют: Lтз=0.09, Lэп=0.07, Lтп=0.07, Lрп=0.61, Lвн=0.16.

Трудоемкость каждой стадии разработки ПП Тi составляет:


T1=2.38 чел.-час.;

T2=1.85 чел.-час.;

T3=1.85 чел.-час.;

T4=12.93 чел.-час.;

T5=2.24 чел.-час.


Уточненная общая трудоемкость ПП Тобщ в чел.-час. определяется по формуле:


,(8.10) (8.10)


где Тi - трудоемкость разработки i-той стадии;

n - число стадий разработки.

Для разрабатываемого ПП Tобщ составит Tобщ=23.25 чел.-дн.

Исходя из трудоемкости Тобщ и численности исполнителей рассчитывают срок разработки Ср:


, (8.11) (8.11)


где Ф - фонд рабочего времени;

где Ф - среднее количество рабочих дней в месяце, равное 21,8 дней;

Ч - численность разработчиков [чел], планируемая по трудоемкости работ.

Для разрабатываемого ПП численность разработчиков, которая планируется исходя из объема работ, составляет Ч=1 чел. Тогда срок разработки Ср=1.1мес.


8.4.2 Вычисление себестоимости часа машинного времени

Рассчитаем себестоимость часа машинного времени [16]. Для расчета себестоимости часа машинного времени необходимо составить смету годовых эксплуатационных затрат. Для расчета годовых эксплуатационных затрат воспользуемся данными, приведенными в таблице:


Таблица 8.3

Эксплуатационные затраты

Основные показателиУсл. об.Ед. изм.Значение показателя1. Стоимость основного комплекта оборудованияСгрн.50002. Потребляемая мощностьWкВт/ч0.53. Коэффициент использования по мощностиKИ0.74. Цена 1 кВт/ч электроэнергииЦЭгрн.0.72035. Номинальный фонд времени работы ЭВМFНОМчас20016. Потери времени на ремонт и профилактику (% от FНОМ)ППОТ%57. Коэффициент годовых затрат на ремонт (от стоимости оборудования)КР%58. Коэффициент сменностиКСМ19. Норма амортизационных отчислений на оборудованиеНОБ%4010. Норма амортизационных отчислений на зданияНЗД%511. Балансовая стоимость 1м2СБАЛгрн.19012. Общая производственная площадьSм2413. Коэффициент начислений на фонд оплаты трудаКН%37.514. Коэффициент накладных расходов (% от ФОТ)КНР%2015. Коэффициент материальных затрат (% от стоимости оборудования)КМЗ%716. Оклад разработчикаОКРгрн.3500

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

1)Расчет материальных затрат (Зм):


(грн.);


2)Расчет затрат на электроэнергию (ЗЭ):


ЗЭ = FНОМ × ЦЭ × W × КИ × КСМ =

= 2001 × 0.7203 × 0.5 × 0.7 × 1 = 504.46 (грн.);



3)Расчет оплаты труда (ФОТ):


ФОТ = 11,8 × КСМ × ОКР = 11,8 × 1 × 3500 = 41 300 (грн.);


4)Расчет отчислений от заработной платы (ОТЧ):


(грн.);


5)Расчет затрат на ремонт (ЗР):


(грн.);


6)Расчет накладных расходов (ЗН):


(грн.);


7)Расчет амортизационных отчислений

a)на здания (АЗД):


(грн.);


b)на оборудование (АОБ):


(грн.).

Используя, полученные данные сформируем таблицу «Смета годовых эксплуатационных затрат».


Таблица 8.4

Смета годовых эксплуатационных затрат

Наименование затратФормула расчетаЗначение, грн.Материальные затраты350.00Затраты на электроэнергиюЗЭ = FНОМ×ЦЭ×W×КИ×КСМ504.46Оплата трудаФОТ = 12 × КСМ × ОКР41300.00Отчисления от заработной платы15487.5Расчет затрат на ремонт250.00Накладные расходы8260.00Амортизационные отчисления на здания38.00Амортизационные отчисления на оборудование2000.00Итого 68189.96

Себестоимость часа машинного времени (СЧМВ) рассчитывается по формуле:


,(8.12) (8.12)


где - сумма годовых эксплуатационных затрат (грн.);ЭФ.ОБ. - годовой эффективный фонд времени для оборудования.

Эффективный фонд времени для оборудования определяется по формуле:


,(8.13) (8.13)

где П - потери рабочего времени.

Допустимые потери рабочего времени для оборудования - П = 5% от FНОМ.


(час).


Тогда себестоимость часа машинного времени:


(грн.).


Далее проведем расчет сметы затрат.

Стоимость всех работ, выполняемых при разработке ПП, можно разделить на две части:

1)стоимость работ по разработке и отладке программного обеспечения, выполняемых с помощью вычислительной техники;

2)стоимость работ, производимых без применения вычислительной техники.

Предварительно определим, сколько времени из общего срока разработки (СР = 1.1 месяца) приходится на работы, выполняемые без применения вычислительной техники (СРР) и с ее применением (СРМ).

Полагаем, что на работы, выполняемые без применения вычислительной техники, приходится 40% общего времени разработки, т.е.


(мес.).


Соответственно,


(мес.).

Далее рассчитаем затраты на проектирование программного продукта:

1)определение фонда оплаты труда проектировщиков (за работы, выполняемые без применения ВТ):

Прямая заработная плата разработчиков (ЗППРЯМАЯ) определяется по формуле:


, (8.14) (8.14)


где Ч - количество исполнителей данного проекта (чел.);

СРР - срок разработки без применения ВТ (мес.).


(грн.)


Кроме прямой заработной платы, в расчет включаем доплаты в размере 30% от прямой зарплаты. Тогда фонд основной зарплаты составит:


(грн.)


2)Накладные расходы:

Совокупность расходов на содержание помещений, на управление той организацией, в которой выполняется проект, относим к накладным расходам (ЗНАКЛ):


(грн.)


3)Затраты на разработку ПП с применением ВТ:

Затраты на разработку ПП с применением ВТ (ЗПО) определяются по формуле:

, (8.15) (8.15)


где СРМ - срок разработки ПП с использованием ВТ (месяцев);ЭФ.М. - эффективный фонд рабочего времени за месяц;

СЧМВ - себестоимость часа машинного времени (грн.)

Эффективный фонд рабочего времени в месяц, полагая, что номинальный фонд рабочего времени в месяц составляет:


(часов);

(час).


Тогда


(грн.)


Таблица 8.5

Смета затрат на проектирование

Наименование расходовСумма, грн.Фонд оплаты труда проектировщиков (с отчислениями на социальные мероприятия) за работу, выполненную без применения вычислительной техники2002Накладные расходы404.4Затраты на разработку ПП с применением вычислительной техники3922.3Итого: Затраты на проектирование (ЗПР)6328.7

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


.4.3 Формирование цены предложения разработчика

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

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

Постоянные издержки (ИП) связаны с арендой помещения, оплаты коммунальных расходов, переменные (ИПЕР) - расходы, которые связаны с продажей каждой копии товара: оплата машинного времени, стоимость носителя, обучение персонала, отчисления в государственные фонды, документация, реклама, административные расходы, гарантийное обслуживание [19].

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


ИП = ЗПР = 6328.7 (грн).


Общая величина переменных издержек (ИПЕР) определяется по формуле:


, (8.16) (8.16)


где ИУД.ПЕР - удельные переменные издержки;- количество проданных экземпляров программного продукта.

Величина удельных переменных издержек ИУД.ПЕР. включает в себя затраты на комплект рабочей документации, на операции, связанные с защитой программного продукта от копирования и другое. Полагаем, что величина ИУД.ПЕР. = 100 (грн.).

Полные издержки (ИПОЛ) составят:


, (8.17) (8.17)


Выручка от реализации (В) определяется в зависимости от цены продажи одного экземпляра программного продукта (Ц) и объема продаж:


, (8.18) (8.18)


Наклон графика изменения выручки зависит от уровня цены. В точке безубыточности достигается равенство:


,


то есть


.(8.19) (8.19)


Отсюда минимальный объем продаж составит (при известной цене):


(8.20) (8.20)


или минимальная цена реализации (при известном N):


.(8.21) (8.21)


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


(экземпляров).

Рисунок 8.2 - График зависимости издержек и выручки в зависимости от количества произведенных экземпляров разработанного программного продукта


Из графика и расчета следует, что при цене, равной 500 грн. минимальный объем продаж составит 16 экземпляров.


8.4.4 Расчёт капитальных затрат

Капитальные вложения представляют собой следующее:

a)для разработчика - расходы на покупку (ЦTC), доставку (ЗTP) и монтаж (ЗM) технических средств, а также на приобретение программного обеспечения (ЦПО), необходимого для процесса создания программного продукта:


(грн.).(8.22) (8.22)


В данной работе примем следующие значения вышеописанных расходов:


ЦТС = 5000 (грн.);

ЗТР = 50 (грн.);

ЗМ = 0 (грн.);

ЦПО = 0(грн.).


Таким образом,


КР = 5000 + 50 + 0 + 0 = 5050 (грн.)

)для пользователя - расходы на приобретение данного программного продукта (ЦПП), его доработку и адаптацию (ЗА), привязку и освоение на конкретном объекте (ЗО), доукомплектование технических средств на объекте управления (ЗД):


КП = ЦПП + ЗА + ЗО + ЗД (грн.). (8.23) (8.23)


В данной работе примем следующие значения вышеописанных расходов:


ЦПП = 500 (грн.);

ЗА = 150 (грн.);

ЗО = 100 (грн.);

ЗД = 100 (грн.).


Тогда:


КП = 500 + 150 +100 +100 = 850 (грн.).


8.4.5 Расчет эксплуатационных расходов

К эксплуатационным расходам относим те расходы потребителя, которые он несет при однократном обращении к ПП.

Эксплуатационные расходы определяются по формуле:

(8.24)


Где ЗОБР.ЭКСПЛ. - эксплуатационные затраты на одно обращение к ПП (грн.);М - время одного обращения к ЭВМ (час);ПОД - время на подготовку исходной информации (час/год);

ЗПОД - часовая зарплата персонала, занятого подготовкой исходной информации (грн.);

КН - процент отчислений на социальные мероприятия;

ЦПП - цена программного продукта;

Т - планируемый срок службы продукта (лет);

ЦН - цена носителя (грн.);Н - количество носителей, используемых за год;ОБР - количество обращений к ПП за год.

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

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

1)Затраты на машинное время:


ЗМВ = tМ × СЧМВ (ден.ед.) (8.25) (8.25)


Полагаем, что tМ = 6 часов, тогда


ЗМВ = 6 × 35.87 = 215.22 (грн)


2)Материальные расходы:


(ден.ед.) (8.26) (8.26)


Полагаем, что

ЦН = 2.00 грн. (стоимость одного «чистого» диска - CD-R);

NН = 10 штук;

NОБР = 210 (обращение происходит 4 раза в неделю),

тогда


(грн.)


3)Заработная плата обслуживающего персонала:


(ден.ед.) (8.27) (8.27)


Полагаем, что tПОД = 105 час/год, так как необходимо затратить 30 минут на подготовку исходной информации 4 раза в неделю.

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


(ден.ед.) (8.28) (8.28)


Полагаем, что Оклад = 800 грн., тогда


(грн.)

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


(грн.)


4)Амортизация программного продукта:


(ден.ед.) (8.29) (8.29)


Полагаем, что Т = 4 год, тогда


(грн.)


Полученные расчеты сводим в следующую таблицу:


Таблица 8.6

Расходы

Направление расходовСумма, грн.1. Затраты на машинное время215.222. Материальные расходы0.0953. Заработная плата обслуживающего персонала с отчислениями на социальные мероприятия3.164. Амортизация ПП1.19Итого:219.67

Таким образом, при однократном обращении к ПП потребитель несет следующие расходы: ЗОБР.ЭКСПЛ. = 219.67 (грн.)



8.4.6 Оценка эффективности проектируемого программного продукта

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

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

Поскольку возможно коммерческое использование продукта потребителем (оказание платных услуг), то следует подвергнуть анализу затраты и результаты, сложившиеся в организации-пользователе продукта [20].

Рассчитаем показатели экономической эффективности для разрабатываемого программного продукта с точки зрения организации - разработчика.

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


ЧДПt = Рt - (Кt + Иt). (8.30) (8.30)


где

ЧДПt - чистый денежный поток года t (грн.);

Рt - выручка от реализации работ и услуг в году t (грн.);

Кt - капитальные вложения года t (грн.);

Иt - издержки года t (грн.).

Объем реализации работ (услуг) определяется как


Рt = Ц × Nt , (8.31) (8.31)


Где Ц - цена реализации одного изделия (пакета программ), (грн.);t - годовой объем реализации изделий (пакетов программ), (шт.).

Полагая, что


N12 =4, Р12 =18 × 500 = 9000 (грн.).

К12 = Кр = 5050 (грн.).


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


Иt = ЗПРt + ИПЕРt + ИМАРКt, (8.32) (8.32)


Где ЗПРt - затраты на проектирование года, t,

ИПЕРt - переменные издержки года, t,

ИМАРКt - затраты на продвижение программного продукта на рынке года, t.

Очевидно, что


ЗПР12 = ЗПР = 6328.7 (грн).


Переменные издержки можно вычислить по следующей формуле:


ИПЕРt = СПЕР × Nt, (8.33) (8.33)


Где СПЕР - переменные издержки, СПЕР = 100 грн.

Таким образом, получаем


ИПЕР12 = 100 × 18 = 1800 (грн.).

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


ИМАРКt = (8.34) (8.34)


Согласно этой формуле:


ИМАРК12 = 0.2×18×500 = 1800 (грн.),


Тогда


И12 = 6328.7 + 1800 + 1800 = 9928.7 (грн.)


Тогда


ЧДП12 = 9000 - (5050 + 9928.7) = -5978.7(грн.)


Для 2013 года полагаем, что N13 = 30, тогда


Р13 = 500 × 30 = 15000 (грн);

К13 = 0 (грн.);

ЗПР13 = 0 (грн);

ИПЕР13 = 100 × 30 =3000 (грн);

ИМАРК13 = 0.2 × 30× 500 = 3000 (грн),


Тогда


И13 = 0 + 3000 + 3000 = 6000 (грн.).


Таким образом, получаем


ЧДП13 = 15000 - (0 + 6000) = 9000 (грн.).


Для 2014 года полагаем, что N14 = 22, тогда


Р14 = 500 × 22 = 11000 (грн);

К14 = 0 (грн.);

ЗПР14 = 0(грн);

ИПЕР14 = 100 × 22 = 2200 (грн);

ИМАРК14 = 0.2 × 22 × 500 = 2200 (грн),


Тогда


И14 = 0 + 2200 + 2200 = 4400 (грн.).


Таким образом, получаем


ЧДП14 = 11000 - (0 + 4400) = 6600 (грн.).


Для 2015 года полагаем, что N15 = 15, тогда


Р15 = 500 × 15 = 7500 (грн);

К15 = 0 (грн.);

ЗПР15 = 0 (грн);

ИПЕР15 = 100 × 15= 1500 (грн);

Имарк15 = 0.2 × 15 × 500= 1500 (грн),


Тогда


И15 = 0 + 1500 + 1500 = 3000 (грн.)


Таким образом, получаем


ЧДП15 = 7500 - (0 + 3000) = 4500 (грн.).


Далее определим показатели чистой текущей стоимости за период реализации проекта по следующей формуле:


ЧТСt = ЧДПt × ?t , (8.35) (8.35)


где

ЧТСt - чистая текущая стоимость в году t (грн.);

ЧДПt - чистый денежный поток года t (грн.);

?t - коэффициент приведения по фактору времени, рассчитываемый по следующей формуле:


, (8.36) (8.36)


Где Е - норма доходности отложения денежных средства в конкретном государстве в конкретную экономику или ставка дисконтирования;

tp - расчетный год;

t - текущий год.

Полагаем, что Е = 12% = 0.12:


, тогда ЧТС12 = -5978.7× 1 = -5978.7 (грн.)

, тогда ЧТС13 = 9000 × 0.89 = 8010 (грн.)

, тогда ЧТС14 = 6600 × 0.80 = 5280 (грн.)

,


Тогда


ЧТС15 = 4500 × 0.71 = 3195 (грн.)


Определим интегральный экономический эффект по формуле:


, (8.37) (8.37)


Где Т - жизненный цикл проекта, лет.

Получаем:


ЭИ = -5978.7 + 8010 + 5280+ 3195 = 10506.3 (грн.).


Результаты расчета сведем в таблицу:


Таблица 8.7

Расчет интегрального экономического эффекта

ПоказателиГоды2012201320142015Объем реализации (шт.)18302215Объем реализации (грн.)900015000110007500Капитальные вложения (грн.)5050000Годовые издержки (грн.)9928.7600044003000Коэффициент приведения по фактору времени10.890.800.71Чистый денежный поток (грн.)-5978.7900066004500Чистая текущая стоимость (грн.)-5978.7801052803195Чистая текущая стоимость нарастающим итогом (грн.)-5978.72031.37311.310506.3

Используя полученные результаты, построим финансовый профиль проекта с точки зрения организации - разработчика [21].


Рисунок 8.3 - Финансовый профиль проекта


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

Далее определим внутреннюю норму рентабельности рассматриваемого программного продукта. Метод определения внутренней нормы рентабельности позволяет оценить эффективность капитальных вложений.

Внутренняя норма рентабельности соответствует такой ставке коэффициента дисконтирования (Е), при котором интегральный экономический эффект равен нулю:


ЭИ = 0 или .


При решении этого уравнения относительно Е, получаем Е = 20%.



Результаты расчета сведем в таблицу:


Таблица 8.8

Показатели рентабельности проекта

ПоказателиЕдиница измеренияВеличинаИнтегральный экономический эффектгрн.10506.3Период окупаемости капитальных вложенийлет1Внутренняя норма рентабельности%20

9. Охрана труда


.1 Анализ условий труда разработчика проектируемого продукта


Анализ условий труда разработчика проектируемого продукта производится на основе ниже перечисленных пунктов в соответствии с методическими указаниями [22].


.1.1 Краткая характеристика помещения и выполняемых работ

Рабочее место разработчика расположено в здании Севастопольского национального технического университета на закрытой территории. Помещение представляет собой комнату размером 10x7,5 м2, с высотой потолков 3.5 метра. В помещении предусмотрены место для работы администратора (разработчика), а также десять рабочих мест для студентов. Таким образом, на одного человека, работающего в помещении, приходится рабочее пространство площадью в 6.8м2 и объемом 23.9м3, что соответствует требованиям ДСанПІН 3.3.2.007-98 [23].

В ходе работы разработчик использует такое основное оборудование:

) Компьютер в составе: системный блок (1 шт.), монитор (1 шт.), клавиатура (1 шт.), мышь (1 шт.), сетевой коммутатор (3 шт.).

) Принтер (1 шт.).

В ходе работы студенты используют такое основное оборудование:

) Компьютер в составе: системный блок (10 шт.), монитор (10 шт.), клавиатура (10 шт.), мышь (10 шт.), сетевой коммутатор (3 шт.).

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

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

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


9.1.2 Планировка и размещение оборудования и рабочих мест

Эскиз помещения с указанием размещения всех рабочих мест, мебели, а также дверных и оконных проемов приведен на рисунке 9.1.


Рисунок 9.1 - Эскиз помещения


- рабочие места для студентов, 2 - стол администратора (разработчика), 3 - столы, 4 - дверной проем, 5 - сейф, 6 - шкафы для документации, 7 - оконные проемы, 8 - офисные стулья, 9 - стул разработчика.


Необходимое для работы оборудование, перечисленное выше, размещено на рабочем столе: монитор, клавиатура, мышь и принтер расположены напротив стула разработчика. Оборудование для студентов расположено напротив офисных стульев Расстояние дисплея от стен достаточное (больше или равно 1м). Рабочие места удалены на достаточное расстояние.


9.1.3 Микроклимат рабочей зоны

Работу программиста можно отнести к категории I - легкие физические работы, подкатегория Iа - физические работы, производимые сидя и сопровождающиеся незначительным физическим напряжением; затраты энергии до 120 ккал/ч (139 Вт) [24]. Для этой категории работ нормативные значения параметров метеоусловий в рабочей зоне производственных помещений таковы:

-холодный период года - температура воздуха: оптимальная - 22-240С, допустимая - 21-250С; относительная влажность воздуха: оптимальная - 40-60%, допустимая - 85%; скорость движения воздуха: оптимальная - 0.1 м/с, допустимая - не более 0.1 м/с;

-теплый период года - температура воздуха: оптимальная - 23-250С, допустимая - 22-280С; относительная влажность воздуха: оптимальная - 40-60%, допустимая - 55% (при 280С); скорость движения воздуха: оптимальная - 0.1 м/с, допустимая - 0.1-0.2 м/с.

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

Источников выделения вредных веществ в помещении не имеется. В помещении регулярно выполняется проветривание и влажная уборка.

9.1.4 Шум и вибрация

Основным источником шума в помещении являются непосредственно следующие устройства персональных ЭВМ (ПЭВМ): дисковод, CD-ROM, вентиляторы, а также печатающие устройства, разговорная речь. Источников вибрации не имеется.

В таблице 9.1 приведены значения уровней звукового давления для программиста ПЭВМ в соответствии с [25].


Таблица 9.1

Значения уровней звукового давления для программиста ЭВМ

В октавных полосах со среднегеометрическими частотами, Гц31.5631252505001000200040008000Уровни звукового давления, дБ868161544945424038

Уровень звука должен быть ? 50 дБА.


9.1.5 Освещение

Работа с клавиатурой и дисплеем ПЭВМ относится к напряжённым зрительным работам, поэтому большое значение придаётся освещению помещения. Помещение, в котором работает администратор, имеет два оконных проема площадью по 9м2, обеспечивающие естественное освещение помещения. Также помещение оборудовано приборами искусственного освещения комбинированного типа. К используемым источникам такового относятся четыре потолочных светильника и лампа локального освещения на столе администратора.

Зрительная работа разработчика соответствует работе средней тяжести, при которой наименьший размер объекта различения равен 0.51 мм, разряд зрительной работы - IV, характеристика фона - светлый, средний [26]. Освещенность от светильников общего освещения в системе комбинированного освещения:

-при газоразрядных лампах - 200 лк;

-при лампах накаливания - 150 лк.

Для определения норм естественного освещения определяются: пояс светового климата - V, коэффициент светового климата для Крыма - m = 0.9, коэффициент солнечности климата - С = 0.65. Нормированное значение коэффициента естественного освещения (КЕО) ен для зданий, расположенных в V поясе светового климата, определяется по формуле:


, (9.1)


где - значение КЕО для III светового климата, которое составляет 4% при верхнем или верхнем и боковом освещении и 1.5 % при боковом освещении.

Таким образом, значение КЕО для зданий, расположенных в V поясе светового климата равно, соответственно:

-при верхнем или верхнем и боковом освещении ен = 2.34%;

-при боковом освещении ен = 0.88%.

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


.1.6 Электро- и пожаробезопасность

В помещении, где работает разработчик, для питания аппаратуры используется электрический ток при напряжении питания 220~230 В и частоте 50 Гц.

Используемая аппаратура (указанная в п. 9.1.1) по способу защиты человека от поражения электрическим током относится к классу 0 электротехнических изделий - это изделия, имеющие рабочую изоляцию и не имеющие объектов для заземления [27].

Поражение человека электрическим током может произойти при:

-соприкасании к открытым токопроводящим частям компьютера;

-неисправности аппаратуры как таковой;

-неисправности сетевых и встроенных розеток и т.п.;

Для предотвращения поражения электрическим током предусмотреть следующие технические мероприятия:

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

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

-проведение инструктажа о мерах электробезопасности.

Выбор изоляции изделия и его частей должен определяться примененным напряжением. Изоляция частей изделия, доступных для прикосновения, должна обеспечивать защиту человека от поражения электрическим током и электрической дугой. В данном случае все доступные для прикосновения участки изделия изолированы. Заземления не требуется, так как изделие (аппаратура разработчика) относится к классу 0.

Помещение имеет степень огнестойкости III, по степени пожароопасности относится к категории П [28].

Основными причинами возникновения пожара могут являться:

-эксплуатация аппаратуры, имеющей дефекты на схемном уровне;

-короткое замыкание;

-использование большого числа электрических приборов, имеющих высокую мощность;

-нарушение противопожарной дисциплины;

-неисправность проводки.

Пожарная безопасность объекта должна обеспечиваться системой предотвращения пожара, системой противопожарной защиты (огнетушители типа ОХП-10, ОУ-5) и организационно-техническими мероприятиями [29]. Системы предотвращения пожара и противопожарной защиты в совокупности должны исключать воздействие на людей опасных факторов пожара. Вероятность воздействия опасных факторов не должна превышать нормативную, равную 10-6 в год в расчете на каждого человека.

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

-пожарная профилактика (составление схемы эвакуации людей, инструктаж и беседы о мерах пожарной безопасности и т.п.);

-создание объемной системы пожаротушения;

-установка автоматической пожарной сигнализации для извещения о пожаре и месте его возникновения;

-использование для обогрева помещения только батарей центрального отопления;

-периодическая профилактическая проверка электрооборудования.


9.1.7 Электромагнитное излучение

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

Значение напряженности электромагнитных полей на рабочих местах с ЭВМ должны отвечать нормативным значениям, в соответствии с которыми напряженность ЭМП в диапазоне частот 60 кГц-300 МГц на рабочих местах персонала в течение рабочего дня не должна превышать установленных предельно допустимых уровней (ПДУ) [30]:

по электрической составляющей, В/м:

- для частот от 60 кГц до 3 МГц;

-для частот свыше 3 МГц до 30 МГц;

-для частот свыше 30 МГц до 50 МГц;

- для частот свыше 50 МГц до 300 МГц;

по магнитной составляющей, А/м:

- для частот от 60 кГц до 1,5 МГц;

,3 - для частот от 30 МГц до 50 МГц.


9.1.8 Эргономика и техническая эстетика

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

-рабочую позу разработчика;

-пространство для размещения разработчика;

возможность обзора элементов рабочего места;

возможность обзора пространства за пределами рабочего места;

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

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

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

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

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

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

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


9.1.9 Напряженность труда. Режим труда и отдыха работников

По характеру трудовой деятельности в соответствии с классификатором профессий (ДК - 003 - 95 и Изменение № к ДК - 003 - 95) работа программиста относится к группе 1. Разработчики программ (инженеры-программисты) выполняют работу преимущественно с видеотерминалом и документацией при необходимости интенсивного обмена информацией с ЭВМ и высокой частью принятия решений. Работа характеризуется интенсивным умственным творческим трудом с повышенным напряжением зрения, концентрацией внимания на фоне нервно-эмоционального напряжения, вынужденной рабочей позой, общей гиподинамией, периодической нагрузкой на кисти верхних конечностей. Работа выполняется в режиме диалога с ЭВМ в свободном темпе с периодическим поиском ошибок в условиях дефицита времени.

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

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

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


9.2 Расчет системы естественного освещения


Расчет производится по методике, указанной в [31].

Помещение подлежащее рассмотрению:

длина L = 10м;

ширина В = 7.5м;

высота H = 3.5м;

площадь S = 75м2;

объем V = 262.5м3;

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

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


, (9.1)


Где - площадь световых проемов, м2;

- площадь пола помещения, м2;

- нормированное минимальное значение К.Е.О., %;

- коэффициент запаса;

- световая характеристика окон;

- коэффициент, учитывающий затемнение окон противостоящим зданием;

- общий коэффициент светопропускания;

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


м2,(9.3)


где - глубина помещения, м;

- длина помещения, м .

Подставив численные значения получим


м2.


Нормированное минимальное значение к.е.о. определяется по формуле


,(9.4)


где - коэффициент естественного освещения для третьего светового пояса;- коэффициент климата;- коэффициент солнечности.

Так как ориентация окон южная возьмем C = 0,65 [31].



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

Коэффициент затемнения близлежащим зданием kзд можно принять равным 1, исходя из того, что рядом отсутствует здание, затеняющее световые проемы.

Дальнейший расчет проводится при условии, что используется одностороннее боковое освещение. Световая характеристика окон определяется из таблицы [9], при этом требуется вычислить соотношения L/B и B/h1,

где h1 - высота от уровня рабочей зоны до верха окон, м.

/B = 10/7.5 = 1.3м; (9.5)/h1 = 7.5/3 = 2.5м . (9.6)

учетом табличных данных и рассчитанных коэффициентов световая характеристика равна 15.5.

Для нахождения коэффициента r1, учитывающего повышение К.Е.О благодаря свету, отраженному от поверхности помещения и подстилающего слоя, прилегающего к зданию, определяется соотношение ln/e, где ln - расстояние от расчетной точки до наружной стены, м. Пусть расчетная точка находится в центре помещения и соотношения ln/e = 1.

Тогда при средневзвешенном коэффициенте отражения потолка, стен и пола ?=0.5 коэффициент r1 - 1.05.

Общий коэффициент светопропускания

. (9.7)


где ?1 - коэффициент светопропускания материала; если используется стекло оконное, листовое, двойное, то ?1 можно принять равным 0,85;

?2 - коэффициент, учитывающий потери света в переплетах светового проема; если переплеты стальные, двойные и открывающиеся, то ?2 = 0,8;

?3 - коэффициент, учитывающий потере света в несущих конструкциях; при боковом освещении ?3 можно принять 1;

?4 - коэффициент, учитывающий потере света в солнцезащитных устройствах, при использовании убирающихся жалюзей и штор ?4 = 1.

Отсюда, общий коэффициент светопропускания



Итак, необходимая минимальная площадь световых проемов


м2.


На основании проделанной работы видно, что выбранная площадь оконных проемов (18 м2) полностью удовлетворяет требованиям ДБН В.2.5 - 28 - 2006 [26].


10. Безопасность в чрезвычайных ситуациях


Оценка радиационной обстановки в лаборатории при загрязнении радиоактивными веществами после аварии на АЭС.


.1 Вводная часть


Основную часть облучения население земного шара получает от естественных источников радиации. Большинство из них таковы, что избежать облучения от них совершенно невозможно. На протяжении всей истории существования Земли разные виды излучения падают на поверхность Земли из космоса и поступают от радиоактивных веществ, находящихся в земной коре. Человек подвергается облучению двумя способами: радиоактивные вещества могут находиться вне организма и облучать его снаружи; в этом случае говорят о внешнем облучении, или же они могут оказаться в воздухе, которым дышит человек, в пище или в воде и попасть внутрь организма - такой способ облучения называют внутренним. Облучению от естественных источников радиации подвергается любой житель Земли, однако одни из них получают большие дозы, чем другие. Это зависит, в частности, от того, где они живут. Уровень радиации в некоторых местах земного шара, там, где залегают особенно радиоактивные породы, оказывается значительно выше среднего, а в других местах - соответственно ниже. Доза облучения зависит также от образа жизни людей. Земные источники радиации в сумме ответственны за большую часть облучения, которому подвергается человек за счет естественной радиации. Остальную часть вносят космические лучи, главным образом путем внешнего облучения. С начала прошлого века человек покорил атом и к естественным источникам радиации добавились источники, созданные самими людьми. Опасность получения радиоактивного облучения сильно возросла.

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

Радиационно-опасные объекты (РОО) - предприятия, при аварии на которых или при разрушении которых могут произойти массовые радиационные поражения людей, животных, растений и радиоактивное заражение окружающей природной среды. К ним относятся:

. Предприятия ядерного топливного цикла - урановая промышленность, радиохимическая промышленность, ядерные реакторы разных типов, предприятия по переработке ядерного топлива и захоронения радиоактивных отходов;

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

. Транспортные ядерные энергетические установки;

. Военные объекты.

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

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

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

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

На территории Украины работают 4 атомные электростанции с 15 энергетическими ядерными реакторами, которые дают около 50% электроэнергии, вырабатываемой в стране. Для проведения исследовательских работ функционируют 2 ядерных реактора. В Украине работают более 8 тысяч предприятий и организаций, которые используют различные радиоактивные вещества, а также хранят и перерабатывают радиоактивные отходы.

Развитие отечественной ядерной энергетики ведется на основе строительства реакторов на тепловых нейтронах, позволяющих использовать в качестве топлива слабо обогащённый природный уран (U-238). К таким реакторам относятся:

реакторы большой мощности, канальные (РБМК-1000. РБМК-1500), замедлителем в нем служит графит, а теплоносителем - кипящая вода, циркулирующая cнизy вверх по вертикальным каналам, проходящим через активную зону. Он размещается в наземной шахте и содержит 192т. слабо обогащённой двуокиси урана-238, а под ним находится железобетонный бункер для сбора радиоактивных отходов при работе реактора;

водоводяные энергетические реакторы (ВВЭР-600, ВВЭР-1000), в которых вода служит одновременно теплоносителем и замедлителем; наиболее распространены на АЭС;

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

Оценку радиационной обстановки произведём методом прогнозирования.

При авариях на АЭС выделяются 5 зон радиоактивного загрязнения. Зона радиационной опасности (М) - представляет собой участок загрязненной местности, в пределах которой доза излучения на открытой местности может составлять от 5 до 50 рад в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 0,014 рад/ час.

В пределах зоны «М» целесообразно ограничить пребывание людей, не привлекаемых непосредственно к работам по ликвидации последствий радиационной аварии.

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

Зона умеренного загрязнения (А) - представляет собой участок загрязнённой местности, в пределах которой доза излучения может составлять от 50 до 500 рад в год. Hа внешней границе этой зоны уровень радиации через 1 час после аварии составляет 0,14 рад/час. Действия формирований в зонe «A» необходимо осуществлять в защитной технике с обязательной защитой органов дыхания.

В зоне сильного загрязнения (Б) - доза излучения составляет от 500 до 1500 рад в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 1,4 рад/час. Действия формирований необходимо осуществлять в защитной технике с размещением в защитных сооружениях.

В зоне опасного загрязнения (В) - доза излучения составляет от 1500 до 5000 рад в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 4,2 рад/чаc. Действия формирований возможны только в сильно защищённых объектах техники. Время нахождения в зоне - несколько часов.

В зоне чрезвычайно опасного загрязнения (Г) - доза излучения может составлять больше 5000 рад в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 14 рад/час. В зоне нельзя находиться даже кратковременно.

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

При расчётах необходимо руководствоваться допустимой дозой облучения, установленной для различных категорий населения, оказавшегося в зоне радиоактивного загрязнения при аварии на АЭС.

. Население, рабочие и служащие, не привлекаемые в мирное время к работе с радиоактивными веществами - 1 мЗв в год.

. Население, рабочие и служащие, персонал, привлекаемый в мирное время к работе с радиоактивными веществами - 2 мЗв в год.

. Постоянно работающие с источниками ионизирующих излучений - 20 мЗв в год.


.2 Расчётная часть


Расчетная часть выполнена по методическим указаниям [32].

Расчётную часть выполним для следующих исходных данных:

тип реактора РБMК-1000;

мощность реактора 1000 Мвт;

количество аварийных реакторов - n=1;

доля выброса радиоактивных веществ в процентах - h=10%;

дата аварии 19.03;

время, в которое произошла авария - Тав. = 9.00 часов;

время начала работы после аварии Тнач. = 10.00 часов;

начало работы после авария - Т = 1 час;

продолжительность работы - Tpаб.= 9.00 часов;

коэффициент ослабления мощности дозы - Косл. =1;

метеоусловия:

скорость ветра на высоте 10м - V10 = 3 м/с;

направление ветра - в сторону лаборатории;

облачность - средняя (4 балла);

расстояние от лаборатории до АЭС - Rх = 10 км;

допустимая доза облучения за время работы - Dyст. = 20 бэр;

обеспеченность убежищами (СИЗ) - 100%.

Решение

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

. Для полученной категории устойчивости и известной скорости приземного ветра скорость среднего ветра составляет Vср=5 м/с.

. Используя исходные данные, определяем размеры прогнозируемых зон загрязнения местности и нанесём их вне масштаба в виде правильных эллипсов (Рисунок 10.1):


М L=270 км;A L=75 км;Б L=17.4 км;B L=5.8 км.

.00 19.03

Рисунок 10.1 - Прогнозируемые зоны загрязнения местности


. Исходя из заданного расстояния лаборатории (Rx = 10 км) до аварийного реактора с учетом образующихся зон загрязнения устанавливаем, что лаборатория оказалась на середине зоны «Б».

. Определяем время начала формирования следа радиоактивного загрязнения (tср) после аварии (время начала выпадения радиоактивных осадков на территории лаборатории): tср = 0.5 часа.

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

. Определяем дозу облучения, которую получит рабочий персонал лаборатории при открытом расположении в середине зоны «Б». Дзоны=14.6 бэр.

Расчёт дозы с учётом середины границы производим по формуле (10.1):


;(10.1)

; .


Получим:

бэр.


Расчет показывает, что рабочий персонал лаборатории за 9 часов работы в зоне «Б» может получить дозу меньше установленной (Дуст=20 бэр).

. Определяем допустимый режим работы в лаборатории после аварии на АЭС при условии получения доз облучения не более Дуст=20 бэр. Для этого рассчитаем величину Дз по формуле (10.2 с учётом расположения лаборатории на середине границе зоны «Б»):


; (10.2) (10.2)


Т.о. получим:


бэр.


Так как рассчитанная доза облучения является меньше установленной, то сотрудники лаборатории могут начинать работу в зоне «Б» через 1 час и выполнять ее 9 часов, что соответствует исходным данным.


Таблица 10.1

Сводная таблица рассчитанных данных

Категория устойчивости атмосферыVср, м/сЗона, место в зонеTср чД зоны бэрД обл бэр бэрРежимыТнач; Траб - ?Траб; Тнач - ?Д - нейтральная (изотермия)5Б, середина0.514.614.620Тнач=1ч, Траб=9ч.

Оценка обстановки

. Лаборатория оказалась на середине зоны «Б».

. Сотрудники могут получить Добл=14.6 бэр, что не превышает допустимую дозу облучения за время работы.

. Радиоактивное облако подойдёт через 30 минут


.3 Мероприятия по защите сотрудников лаборатории


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

. При прохождении радиоактивного облака сотрудников лаборатории укрыть в убежище или ПРУ.

. По данным разведки уточнить прогнозируемую радиационную обстановку.

. При уровнях радиации (Р>5 мР/час) на открытой местности сотрудники лаборатории должны находиться в респираторах или противогазах.

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

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

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

. При больших уровнях загрязнённости и невозможности работы сотрудников лаборатории необходимо эвакуировать в незагрязнённые районы.

. В случае необходимости режим работы может быть следующим: Тнач = 1ч Траб=9ч

При этом доза облучения (14.6 бэр) будет меньше Дуст=20 бэр.

ЗАКЛЮЧЕНИЕ


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

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

-проанализированы литературные источники по теме;

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

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

-была формально описана разработанная подсистема - модуль протоколов управления;

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

-проведен расчет технико-экономических показателей проектируемого продукта;

-проанализированы аспекты охраны труда;

-проведена оценка радиационной обстановки в лаборатории при загрязнении радиоактивными веществами после аварии на АЭС.

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

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


БИБЛИОГРАФИЧЕСКИЙ СПИСОК


1. Методические указания «Процедура системного анализа при проектировании программных систем» для студентов-дипломников дневной и заочной формы обучения специальности 7.091501 / Сост. Сергеев Г.Г., Скатков А.В., Мащенко Е.Н. - Севастополь каф. КВТ СевНТУ, 2005. - 32с.

. Щепин Ю.Н. Методические указания к практическому занятию на тему «Метод анализа иерархий» по дисциплине «Теория оптимальных решений» / Ю.Н. Щепин - Севастополь: Изд-во СевНТУ, 2002 - 11с.

. Стахнов А.А. Сеть для офиса и Linux-сервер своими руками. - СПб.: БХВ-Петербург, 2006. - 320с.:ил.

. Эви Немет. Руководство администратора Linux.: Пер.с англ. - М.: Издательский дом «Вильямс», 2005. - 880с.: ил. - Парал. тит.англ.

. Браун П. Введение в операционную систему UNIX. -М.: Мир, 1987. -287 с.

. Тихомиров В.П., Давидов М.И. Операционная система UNIX: Инструментальные средства программирования. - М.: Финансы и статистика, 1988. -206 с.

. Керниган Б.В., Пайк Р. UNIX - Универсальная среда программирования. -М.: Финансы и статистика, 1992 -304 с.

. Т. Адельштайн, Б. Любанович. Системное администрирование в Linux.: Пер.с англ. - М.: Издательский дом «Питер», 2010. - 288с.: ил. - Парал. тит.англ.

. Алексей Береснев. Администрирование GNU/Linux с нуля. - СПб.: БХВ-Петербург, 2010. - 576с.:ил.

. В.М.Вишневский. Теоретические основы проектирования компьютерных сетей Москва: Техносфера, 2003. - 512с.

. Ното П. JAVA: Справ. руководство: Пер. с англ./ Под ред. А. Тихонова. М.: БИНОМ, 1996. - 447с.

. Патрик Нотон, Герберт Шилдт Полный справочник по Java.- McGraw-Hill,1997, Издательство "Диалектика",1997.

. Чен М.С. и др. Программирование на JAVA:1001 совет:Наиболее полное руководство по Java и Visual J++:Пер.с англ. / Чен М.С., Грифис С.В., Изи Э.Ф.- Минск:Попурри,1997.-640с.ил.

. И.Ю. Баженова Язык программирования Java.- АО "Диалог-МИФИ", 1997.

.Кен Арнольд, Джеймс Гослинг Язык программирования Java.- Addison-Wesley Longman,U.S.A.,1996, Издательство "Питер-Пресс", 1997.

. Методические указания к выполнению курсовой работы по дисциплинам «Основы менеджмента и маркетинга», «Менеджмент» для студентов специальностей 7.091501, 7.091401, 7.080401 всех форм обучения / Сост. Г.А. Раздобреева, Е.В. Коваль, Т.В. Кулешова, С.В. Ключко - Севастополь: Изд-во СевНТУ, 2009. - 24с.

. Баркен Д.И. Маркетинг для всех / Д.И. Баркен -М.: Редакционно-издательский центр "Культ-информ-пресс", 1991г. - 257с.

. Котлер Ф. Менеджмент- маркетинг / Ф.Котлер. Пер. с англ.-М.: Прогресс, 2000 -520с.

. Ильин А.М. Планирование на предприятии / А.М. Ильин - Минск: Инфра - М., 2001- 680с.

. Богатин Ю.В. Экономическая оценка качества и эффективности работы предприятия / Ю.В. Богатин. - М: Знание, 1999.-214с.

. Прыкина Л.В. Экономический анализ предприятия / Л.В. Прыкина. - М: Финансы, 2003.- 432с.

. Методические указания для выполнения раздела «Охрана труда и окружающей среды» в дипломных проектах специальностей 8.080401-«Информационные управляющие системы и технологии», 8.092502-«Компьютерно-интегрированные технологические процессы и производства», 8.091401-«Системы управления автоматики», 8.091501-«Компьютерные системы и сети»/Сост. Е.И. Азаренко. - Севастополь: Изд-во СевНТУ, 2005. - 10 с.

. ДСанПіН 3.3.2.007-98. Державні санітарні правила і норми роботи з візуальними дисплейними терміналами електронно-обчислювальних машин ЕОМ. - К., 1998. - 17 с.

. ГОСТ 12.1.005-88. ССБТ. Общие санитарно-гигиенические требования к воздуху рабочей зоны. - Введ. с 01.01.810. - М.: Издательство стандартов, 1988. - 85 с. УДК 658. Группа Т58.

. ГОСТ 12.1.003 - 89. ССБТ. Шум. Общие требования безопасности. - Введ.01.01.90.

. ДБН В.2.5-28-2006. Природне і штучне освітлення. - К.: Мінбуд України, 2006. - 12 с.

. ГОСТ 12.2.008.0-85. ССБТ. Изделия электротехнические. Общие требования безопасности. - Введ. с 10.10.85. - М.: Издательство стандартов, 1988. - 14 с. УДК 614. Группа Т58.

. ДБН В.1.1.7-2002. Пожежна безпека обєктів будівництва. - К.: Держбуд України, 2003. - 36с.

. ГОСТ 12.1.004-85. ССБТ. Пожарная безопасность. Общие требования. - Взамен ГОСТ 12.1.004-86; Введ. с 28.03.85 до 01.08.92. - М.: Издательство стандартов, 1988. - 88 с. УДК 614. Группа Т58.

. ГОСТ 12.1.006-84. Система стандартов безопасности труда электромагнитные поля радиочастот допустимые уровни на рабочих местах и требования к проведению контроля - Взамен ГОСТ 12.1.006-86; Введ. с 01.01.86 - - М.: Издательство стандартов, 1988. - 10 с. УДК 614.

. Методические указания к расчётной части раздела «Охрана труда» в дипломных проектах «Расчёт естественного и искусственного освещения». - Севастополь: Изд-во СевНТУ, 2005. - 20с.

. Методические указания к расчётной части раздела «Безопасность в чрезвычайных ситуациях» в дипломных проектах «Оценка радиационной обстановки в лаборатории при загрязнении радиоактивными веществами после аварии на АЭС». - Севастополь: Изд-во СевНТУ, 2011. - 24с.

. #"justify">ПРИЛОЖЕНИЕ А


.Class Interface1.java.io.*;java.util.ArrayList;java.util.Collections;javax.swing.JComboBox;javax.swing.JDialog;javax.swing.JFileChooser;javax.swing.JOptionPane;

class Interface1 extends javax.swing.JFrame {[] adduserParams;[] umodParams;i,j;

Interface1() {();.setEditable(false);.setText("<html><u>еще файл</u></html>");.setText("<html><u>еще параметр</u></html>");.setText("<html><u>еще параметр</u></html>");}

/*

* Диалог открытия файлов

*/openFileDialog(JDialog dialog){pathToFile = "";fc = new JFileChooser();.showOpenDialog(dialog);selFile = fc.getSelectedFile();(!fc.getCurrentDirectory().toString().equals("/"))= fc.getCurrentDirectory()+"/"+fc.getName(selFile);= fc.getCurrentDirectory()+fc.getName(selFile);pathToFile;}

/*

* Диалог открытия папок

*/openDirectoryDialog(JDialog dialog){pathToFile = "";fc = new JFileChooser();.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);.showOpenDialog(dialog);selFile = fc.getSelectedFile();(!fc.getCurrentDirectory().toString().equals("/"))= fc.getCurrentDirectory()+"/"+fc.getSelectedFile().getName();= "/" + fc.getSelectedFile().getName();pathToFile;}

/*

* Вызов команды Linux

*/runCommand(String command) throws IOException{.getRuntime().exec(command);}

makeAdduserCom(String[] param){su = "";parameters = "";username = userName.getText();(systemUser.isSelected())= "--system";(int x = 0; x < i+2; x++)(param[x] != null)= parameters + param[x] + " ";.setText("adduser "+su+" " + parameters + " " + );}

makeDeluserCom(){username = delUsername.getText();parameter = deluserOpt.getSelectedItem().toString();pathToBackup = "";(!backupPath.equals(""))= backupPath.getText();.setText("deluser "+parameter+" "+pathToBackup+"

"+username);}

makeUsermodCom(String[] param){parameters = "";username = usermodName.getText();(int y = 0; y < j+2; y++)(param[y] != null)= parameters + param[y] + " ";.setText("usermod " + parameters + " " + username);}

makePasswdCom(){username = passwdName.getText();parameter = passwdOpt.getSelectedItem().toString();days = daysField.getText();.setText("passwd " + parameter + " " + days + " " +

username);}makeAddgroupCom(){groupname = addgroupName.getText();option = addgroupOpt.getSelectedItem().toString();gid = addgroupGid.getText();system = "";(systemGroup.isSelected())= "--system";.setText("addgroup " + system + " " + option + " " + gid

+ " " + groupname);}

makeDelgroupCom(){groupname = delgroupName.getText();option = delgroupOpt.getSelectedItem().toString();.setText("delgroup " + option + " " + groupname);}

makeGroupmodCom(){groupname = groupmodName.getText();option = groupmodOpt.getSelectedItem().toString();gmfiled = groupmodField.getText();.setText("groupmod " + option + " " + gmfiled + " " +

groupname);}

makeGpasswdCom(){groupname = gpasswdName.getText();option = gpasswdOpt.getSelectedItem().toString();username = gpasswdName1.getText();.setText(("gpasswd " + option + " " + username + " " +

groupname));}

/*

* Формирование текста команды chmod

*/makeChmodCom(){

String pathfile = chmodPathfile.getText();user = chmodUsers.getSelectedItem().toString();permissions = chmodPerms.getSelectedItem().toString();options = chmodOptions.getSelectedItem().toString();.setText("chmod " + options + " " + user + permissions + "

" + pathfile);}

/*

* Формирование текста команды chown

*/makeChownCom(){

String temp = "";command_text = "";pathfile = chownPathFile.getText();user = chownUser.getText();group = chownGroup.getText();options = chownOptions.getSelectedItem().toString();(!group.isEmpty())= user+":"+group;= user;_text = "chown " + options + " " + temp + " " + pathfile;.setText(command_text);}

/*

* Формирование текста команды umask

*/makeUmaskCom(){mask = umaskMask.getText();.setText("umask " + mask);}

/*

* Создание и формирование sh-файла

*/makeSh(String filename, String[] command) throws IOException{file = new File("part1/"+filename);(file.exists()) {.delete();}(Writer output = new BufferedWriter(new FileWriter(file))) {.write("#!/bin/bash");.write("\n");(int i = 0; i < command.length; i++).write("su --command="+'"'+command[i]+'"');.write("\n");.write("sleep 5");

output.close();}}

/*

* Создание и формирование sh-файла с командой umask

*/makeUmaskSh(String username, String mask) throws IOException{file = new File("part1/umask.sh");(file.exists()) {.delete();}(Writer output = new BufferedWriter(new FileWriter(file))) {.write("#!/bin/bash");.write("\n");(username.equals(" ") && mask.equals("")){.write("umask\n");.write("sleep 3");.close();}{(username.equals(" ")).write("if grep '^umask' $HOME/.profile");.write("if grep '^umask' /home/"+username+"/.profile"+"\n");.write("then"+"\n\t");.write("su --command="+'"'+"sed -i '$d'

/home/"+username+"/.profile;"+"\n\t");.write("echo 'umask "+mask+"' >>

/home/"+username+"/.profile"+'"'+"\n");.write("else\n\t");.write("su --command="+'"'+"echo 'umask "+mask+"' >>

/home/"+username+"/.profile"+'"'+"\n");.write("fi\n");.write("sleep 5");

output.close();}}}

/*

* Формирование выпадающего списка пользователей,

зарегистрированных в системе

*/usersToCombo() throws IOException{.removeAllItems();.addItem("");ex_com = "sh part1/users.sh";(ex_com);in = new BufferedReader(new

FileReader("/tmp/users.txt"));line;((line = in.readLine()) != null){(!line.equals("ftp")).addItem(line);}}


void adduserDialogClean(){.setSelectedIndex(0);.setText("");.setSelectedIndex(0);.setText("");.setText("");}

deluserDialogClean(){.setSelectedIndex(0);.setText("");}

usermodDialogClean(){.setSelectedIndex(0);.setText("");.setText("");}

passwdDialogClean(){.setSelectedIndex(0);.setText("");}

addgroupDialogClean(){.setSelectedIndex(0);.setText("");.setSelected(false);}

gpasswdDialogClean(){.setText("");.setSelectedIndex(0);}

/*

* Сброс значений в диалоге работы с командой chmod

*/chmodDialogClean(){.setText("chmod");.setText("");.setSelectedIndex(0);.setSelectedIndex(0);.setSelectedIndex(0);}

/*

* Сброс значений в диалоге работы с командой chown

*/chownDialogClean(){.setText("chown");.setText("");.setText("");.setText("");.setSelectedIndex(0);.setEnabled(true);

jLabel9.setEnabled(false);}

/*

* Сброс значений в диалоге работы с командой umask

*/umaskDialogClean(){.setSelectedIndex(0);.setText("");

jLabel13.setText("umask");}

/*

* Установка всплывающих подсказок для элементов раскрывающегося

списка

*/ComboTooltip(JComboBox box, String[] tooltipsArray){renderer = new ComboboxToolTipRenderer();.setRenderer(renderer);

renderer.setTooltips(makeTooltipsArray(tooltipsArray));}

/*

* Создание специальной структуры - массива-списка подсказок из

массива строк

*/makeTooltipsArray(String[] StringArray){myList = new ArrayList();.addAll(myList, StringArray);myList;}

/*

* Запуск проверки установки демонов (служб)

*/runCheck(){passed = false;.setText("");.append("Проверка \nустановки демонов... \n\n");dr = new DoRuntime();{.append(dr.installVerify("ssh")+"\n");(dr.isInstalled==true){_installButton.setEnabled(false);_configButton.setEnabled(true);_configButton.setEnabled(true);= true;}_installButton.setEnabled(true);

} catch (IOException ex) {}passed;}

/*

* Запуск проверки состояния запуска

*/runCheckDaemon(){.append("\nПроверка \nзапуска демонов... \n\n");dr = new DoRuntime();{(dr.isRunning()==true){.append("sshd: запущен"+"\n");_runButton.setEnabled(false);_stopButton.setEnabled(true);}{.append("sshd: не запущен"+"\n");_runButton.setEnabled(true);_stopButton.setEnabled(false);}

} catch (IOException ex) {}}

[] getOutput(String command) throws IOException{[] output = new String[12];arg = command;runtime = Runtime.getRuntime();process = runtime.exec(arg);is = process.getInputStream();isr = new InputStreamReader(is);br = new BufferedReader(isr);line = "";comWords[] = command.split("\\s+");words[];(comWords[0]){"users":

output[0] = "\nВ настоящий момент в системе\n";[1] = "работают следующие\n";[2] = "пользователи:\n\n";

int j = 3;((line = br.readLine()) != null){= line.split("\\s+");(int i = 0; i < words.length; i++)[j] = words[i]+"\n";

j++;};"groups":[0] = "\nПолучаем информацию о том,\n";[1] = "в какие группы входят \n";[2] = "пользователи. Формат вывода -\n";[3] = "имя_пользователя : имя_группы\n\n";

int i = 4;((line = br.readLine()) != null){[i] = line+"\n";++; }}output;}

adduserComponentsHide(){.setVisible(false);.setVisible(false);.setVisible(false);.setVisible(false);.setVisible(false);.setVisible(false);.setVisible(false);.setVisible(false);.setVisible(false);.pack();}

deluserComponentsHide(){.setVisible(false);.setVisible(false);.setVisible(false);.pack();}

usermodComponentsHide(){.setVisible(false);.setVisible(false);.setVisible(false);.setVisible(false);.setVisible(false);.pack();}passwdComponentsHide(){.setVisible(false);.setVisible(false);.pack();}

addGroupComponentsHide(){.setVisible(false);.setVisible(false);.pack();}

groupmodComponentsHide(){.setVisible(false);.setVisible(false);.pack();}gpasswdComponentsHide(){.setVisible(false);.setVisible(false);.pack();}

prepUsermod(String text){.setVisible(true);.setVisible(true);.setText(text);.setText("");.setToolTipText(null);}


@SuppressWarnings("unchecked") Generate code

void formWindowClosing(java.awt.event.WindowEvent evt) {n = JOptionPane.showConfirmDialog(.rootPane,

"Вы действительно хотите выйти?",

"Confirm",

JOptionPane.YES_NO_OPTION);(n==0){();.exit(1);}}

void groupsButtonActionPerformed(java.awt.event.ActionEvent evt)

{.setVisible(true);}

void delgroupButtonActionPerformed(java.awt.event.ActionEvent

evt) {.setVisible(true);}

void chmodButtonActionPerformed(java.awt.event.ActionEvent evt)

{.setVisible(true);}

void chmodOKActionPerformed(java.awt.event.ActionEvent evt) {file_name = "chmod.sh";[] com = { chmodCommand.getText() };ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(file_name,com);(ex_com1);(ex_com2);

} catch (IOException ex) {}}

void chmodCancelActionPerformed(java.awt.event.ActionEvent evt)

{();.setVisible(false);}

void chownButtonActionPerformed(java.awt.event.ActionEvent evt)

{.setVisible(true);}

void chmodDiscardActionPerformed(java.awt.event.ActionEvent

evt) {();}


private void ssh_configButtonActionPerformed(java.awt.event.ActionEvent

evt) {ex_com = "gnome-terminal -x part1/ssh_config.sh";{(ex_com);

} catch (IOException ex) {}}

void

sshd_configButtonActionPerformed(java.awt.event.ActionEvent evt) {ex_com = "gnome-terminal -x part1/sshd_config.sh";{(ex_com);

} catch (IOException ex) {}}

void ssh_installButtonActionPerformed(java.awt.event.ActionEvent

evt) {ex_com = "gnome-terminal -x part1/ssh_install.sh";{(ex_com);

} catch (IOException ex) {}{.sleep(8000);

} catch (InterruptedException ex) {}(runCheck())();}

void ssh_runButtonActionPerformed(java.awt.event.ActionEvent

evt) {ex_com = "gnome-terminal -x part1/ssh_run.sh";{(ex_com);

} catch (IOException ex) {}(runCheck())();}

void ssh_stopButtonActionPerformed(java.awt.event.ActionEvent

evt) {ex_com = "gnome-terminal -x part1/ssh_stop.sh";{(ex_com);

} catch (IOException ex) {}(runCheck())();}

void chownClearActionPerformed(java.awt.event.ActionEvent evt) {();}

void chownDiscardActionPerformed(java.awt.event.ActionEvent

evt) {();.setVisible(false);}

void umaskClearActionPerformed(java.awt.event.ActionEvent evt) {();}

void umaskCancelActionPerformed(java.awt.event.ActionEvent evt)

{();.setVisible(false);}


private void umaskOKActionPerformed(java.awt.event.ActionEvent evt) {file_name = "umask.sh";username = umaskUsers.getSelectedItem().toString();mask = umaskMask.getText();ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(username,mask);(ex_com1);(ex_com2);

} catch (IOException ex) {}}

void chownOKActionPerformed(java.awt.event.ActionEvent evt) {file_name = "chown.sh";[] com = { chownCommand.getText() };ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(file_name,com);(ex_com1);(ex_com2);

} catch (IOException ex) {}.setEnabled(false);}

void chmodOpenFileActionPerformed(java.awt.event.ActionEvent

evt) {.setText(openFileDialog(this.chmodDialog));();}

void chownOpenFileActionPerformed(java.awt.event.ActionEvent

evt) {.setText(openFileDialog(this.chownDialog));();.setEnabled(true);}

void chmodUsersItemStateChanged(java.awt.event.ItemEvent evt) {();}

void chmodPermsItemStateChanged(java.awt.event.ItemEvent evt) {();}

void chmodOptionsItemStateChanged(java.awt.event.ItemEvent evt)

{();}

void jLabel9MouseClicked(java.awt.event.MouseEvent evt) {.setEnabled(false);field_text = chownPathFile.getText();.setText(field_text + " " +

openFileDialog(this.chownDialog));();.setEnabled(false);}

void chownOptionsItemStateChanged(java.awt.event.ItemEvent evt)

{();}

void umaskButtonActionPerformed(java.awt.event.ActionEvent evt)

{{();

} catch (IOException ex) {}.setVisible(true);}

void terminalButtonActionPerformed(java.awt.event.ActionEvent

evt) {ex_com = "gnome-terminal";{(ex_com);

} catch (IOException ex) {}}

void hintsButtonItemStateChanged(java.awt.event.ItemEvent evt) {(hintsButton.isSelected()){

adduserButton.setToolTipText("Добавить пользователя в систему");

deluserButton.setToolTipText("Удалить пользователя из системы");.setToolTipText("Изменить параметры учетной записи

пользователя");.setToolTipText("Напечатать имена пользователей, которые в

данный момент работают в системе");.setToolTipText("Изменить пароль пользователя");.setToolTipText("Открыть для просмотра

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

известных системе");.setToolTipText("Добавить группу в систему");.setToolTipText("Удалить группу из системы");.setToolTipText("Изменить определение группы в

системе");.setToolTipText("Напечатать имена групп, в которые

входят пользователи");.setToolTipText("Управление группами и их паролями");

etcGroupButton.setToolTipText("Открыть для просмотра

(редактирования) файл с перечнем групп, известных системе");.setToolTipText("Программа для изменения прав доступа к

файлам и директориям");.setToolTipText("Утилита, изменяющая владельца и/или

группу для указанных файлов");

umaskButton.setToolTipText("Функция, изменяющая права доступа,

которые присваиваются новым файлам и директориям по умолчанию");_configButton.setToolTipText("Редактировать файл конфигурации

клиента протокола SSH из пакета OpenSSH ");_configButton.setToolTipText("Редактировать файл конфигурации

службы openSSH");.setToolTipText("Вызвать терминал Linux");

[] adduserTips = { "",

"Этот параметр помещает пользователя в группу с номером ID",

"Показать краткую инструкцию",

"Использовать указанную папку в качестве домашнего каталога

пользователя",

"Выбрать оболочку, которая будет использоваться в качестве

регистрационной оболочки",

"Добавить нового пользователя в группу с именем",

"Не создавать домашний каталог, даже если он не существует.",

"Не выводить информационные сообщения, показывать только

предупреждения и ошибки",

"Показывать отладочную информацию",

"Присвоить пользователю опреденный UID"};

ComboTooltip(userOpts, adduserTips);

[] deluserTips = { "",

"Показать краткую инструкцию",

"Не выводить сообщения о ходе работы",

"Выполнить удаление, только если пользователь является системным",

"Выполнить резервное копирования всех файлов домашнего каталога в

архив с именем /$user.tar.bz2 или /$user.tar.gz",

"Помещать файлы резервных копий в указанный каталог",

"Удалить домашний каталог пользователя и его хранилище почты",

"Удалить все файлы из системы, принадлежащие этому

пользователю"};

ComboTooltip(deluserOpt, deluserTips);

[] usermodTips = { "",

"Добавить пользователя в дополнительную группу(ы)",

"Установить новую папку входа для пользователя",

"Установить дату, когда учётная запись пользователя будет

заблокирована",

"Установить количество дней после истечения срока действия пароля,

когда учетная запись будет полностью отключена",

"Изменить имя пользователя на новое",

"Заблокировать пароль пользователя",

"Получить шифрованное значение пароля, которое возвращает

функция crypt",

"Установить имя новой регистрационной оболочки пользователя",

"Установить новое значение идентификатора пользователя (uid)",

"Разблокировать пароль пользователя"};(usermodOpts, usermodTips);

[] passwdTips = { "",

"Вывод статуса всех пользователей",

"Удалить пароль пользователя (сделать его пустым). Это быстрый

способ заблокировать пароль учётной записи",

"Немедленно сделать пароль устаревшим",

"Показать краткую справку и закончить работу",

"Блокировка учётной записи по прошествии заданного числа дней

после устаревания пароля",

"Задать минимальное количество дней между сменой пароля",

"Разблокировать пароль пользователя",

"Установить число дней выдачи предупреждения, перед тем как

потребуется смена пароля",

"Установить максимальное количество дней, в течении которых пароль

остаётся рабочим"};

ComboTooltip(passwdOpt, passwdTips);

[] addgroupTips = { "",

"Задать идентификатор группы при ее создании"};

ComboTooltip(addgroupOpt, addgroupTips);

[] delgroupTips = { "",

"Удалить группу, если в нее не входят пользователи"};

ComboTooltip(delgroupOpt, delgroupTips);

[] groupmodTips = { "",

"Изменить идентификатор группы (GID) на новый",

"Показать краткую справку и закончить работу",

"Изменить имя группы на новое"};(groupmodOpt, groupmodTips);

.setToolTipText("Имена пользователей перечислять

через пробел");


String[] gpasswdTips = { "",

"Добавить пользователя в группу",

"Удалить пользователя из группы",

"Удалить пароль группы",

"Запретить доступ к группе"};

ComboTooltip(gpasswdOpt, gpasswdTips);


String[] usersTip = { "",

"user - владелец файла",

"group - пользователи, которые являются членами группы владельца

файла",

"others - пользователи, которые не являются владельцем файла или

членом группы",

"all - все пользователи",

"group & other - все пользователи, кроме владельца файла" };

ComboTooltip(chmodUsers, usersTip);

[] rightsTip = { " '+' - добавить указанный режим, '-' - удалить

указанный режим",

"read - чтение файла или просмотр содержимого каталога",

"write - запись в файл или каталог",

"execute - запустить файл или открыть каталог",

"Изменить права доступа к файлу файл для чтения и записи",

"Изменить права доступа к файлу файл для чтения и запуска",

"Изменить права доступа к файлу файл для записи и запуска",

"Изменить права доступа к файлу файл для чтения, записи и запуска",

"read - чтение файла или просмотр содержимого каталога",

"write - запись в файл или каталог",

"execute - запустить файл или открыть каталог",

"Изменить права доступа к файлу файл для чтения и записи",

"Изменить права доступа к файлу файл для чтения и запуска",

"Изменить права доступа к файлу файл для записи и запуска",

"Изменить права доступа к файлу файл для чтения, записи и запуска"};

ComboTooltip(chmodPerms, rightsTip);

[] chmodOptionsTip = { "",

"Cкрывать большинство ошибок",

"Выводить диагностические сообщения для каждого файла",

"Подробный отчет, но только тогда, когда вносятся изменения",

"Изменение файлов и директорий рекурсивно",

"Показать справку и выйти",};(chmodOptions, chmodOptionsTip);

[] chownOptionsTip = {"",

"Подробно описывать действие для каждого файла, владелец которого

действительно изменяется",

"Не выдавать сообщения об ошибках для файлов, чей владелец не

может быть изменён",

"Работать с самими символьными ссылками, а не с файлами, на

которые они указывают",

"Рекурсивное изменение владельца каталогов и их содержимого",

"Подробное описание действия (или отсутствия действия) для каждого

файла",

"Изменить владельца файла, на который указывает символьная ссылка,

вместо самой символьной ссылки.",

"Показать справку и выйти" };

ComboTooltip(chownOptions, chownOptionsTip);}

else {.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);_configButton.setToolTipText(null);_configButton.setToolTipText(null);.setToolTipText(null);.setToolTipText(null);[] adduserTips = { "","","","","","","","",""};(userOpts, adduserTips);[] deluserTips = { "","","","","","","","" };(deluserOpt, deluserTips);[] usermodTips = { "","","","","","","","","","","" };(usermodOpts, usermodTips);[] usersTip = { "", "", "", "", "", "" };(chmodUsers, usersTip);[] passwdTips = { "","","","","","","","","" };(passwdOpt, passwdTips);

[] addgroupTips = { "","" };(addgroupOpt, addgroupTips);[] delgroupTips = { "","" };(delgroupOpt, delgroupTips);[] groupmodTips = { "","","","" };(groupmodOpt, groupmodTips);[] gpasswdTips = { "","","","","" };(gpasswdOpt, gpasswdTips);[] rightsTip = { "", "", "", "","","","","","","","","","","","" };(chmodPerms, rightsTip);[] chmodOptionsTip = { "","","","","","" };(chmodOptions, chmodOptionsTip);[] chownOptionsTip = { "","","","","","","","" };(chownOptions, chownOptionsTip);}}

void umaskMaskKeyReleased(java.awt.event.KeyEvent evt) {();}

void chmodDialogWindowClosing(java.awt.event.WindowEvent

evt) {();.setVisible(false);}

void chownDialogWindowClosing(java.awt.event.WindowEvent

evt) {();.setVisible(false);}

void umaskDialogWindowClosing(java.awt.event.WindowEvent

evt) {();.setVisible(false);}void formWindowOpened(java.awt.event.WindowEvent evt) {dr = new DoRuntime();{.makeProcSh("sshd");("chmod +x proc.sh");

} catch (IOException ex) {}(runCheck())();();();();();();();}

void addgroupButtonActionPerformed(java.awt.event.ActionEvent

evt) {.setVisible(true);}

void groupmodButtonActionPerformed(java.awt.event.ActionEvent

evt) {.setVisible(true);}

void etcGroupButtonActionPerformed(java.awt.event.ActionEvent

evt) {ex_com = "gnome-terminal -x part1/etcGroup.sh";{(ex_com);

} catch (IOException ex) {}}


private void gpasswdButtonActionPerformed(java.awt.event.ActionEvent ) {.setVisible(true);}

void deluserButtonActionPerformed(java.awt.event.ActionEvent evt)

{.setVisible(true);}

void adduserButtonActionPerformed(java.awt.event.ActionEvent

evt) {.setVisible(true);}

void usermodButtonActionPerformed(java.awt.event.ActionEvent

evt) {.setVisible(true);}

void usersButtonActionPerformed(java.awt.event.ActionEvent evt) {{[] appendText = getOutput("users");(int i = 0; i < appendText.length; i++).append(appendText[i]);.append("\n\n");}(IOException e) {}}

void etcPasswdButtonActionPerformed(java.awt.event.ActionEvent

evt) {ex_com = "gnome-terminal -x part1/etcPasswd.sh";{(ex_com);

} catch (IOException ex) {}}void passwdButtonActionPerformed(java.awt.event.ActionEvent ) {.setVisible(true);}

void CancelActionPerformed(java.awt.event.ActionEvent evt) {();();.setVisible(false);}

void ClearActionPerformed(java.awt.event.ActionEvent evt) {= 0;= new String[12];();.setText("");(adduserParams);}

void OKActionPerformed(java.awt.event.ActionEvent evt) {file_name = "adduser.sh";[] com = { adduserCommand.getText() };ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(file_name,com);(ex_com1);(ex_com2);

} catch (IOException ex) {}}

void Cancel1ActionPerformed(java.awt.event.ActionEvent evt) {();();.setVisible(false);}

void Clear1ActionPerformed(java.awt.event.ActionEvent evt) {();();.setText("");}

void OK1ActionPerformed(java.awt.event.ActionEvent evt) {file_name = "deluser.sh";[] com = { deluserCommand.getText() };ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(file_name,com);(ex_com1);(ex_com2);

} catch (IOException ex) {}}

void Cancel2ActionPerformed(java.awt.event.ActionEvent evt) {();();.setText("");.setVisible(false);}

void Clear2ActionPerformed(java.awt.event.ActionEvent evt) {= 0;= new String[12];();.setText("");(umodParams);}void OK2ActionPerformed(java.awt.event.ActionEvent evt) {file_name = "usermod.sh";[] com = { usermodCommand.getText() };ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(file_name,com);(ex_com1);(ex_com2);

} catch (IOException ex) {}}

void Cancel3ActionPerformed(java.awt.event.ActionEvent evt) {();();.setText("");.setVisible(false);}

void Clear3ActionPerformed(java.awt.event.ActionEvent evt) {();.setText("");();}

void OK3ActionPerformed(java.awt.event.ActionEvent evt) {file_name = "passwd.sh";[] com = { passwdCommand.getText() };ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(file_name,com);(ex_com1);(ex_com2);

} catch (IOException ex) {}}

void Cancel4ActionPerformed(java.awt.event.ActionEvent evt) {();();.setText("");.setVisible(false);}

void Clear4ActionPerformed(java.awt.event.ActionEvent evt) {();();.setText("");}

void OK4ActionPerformed(java.awt.event.ActionEvent evt) {file_name = "gpasswd.sh";[] com = { gpasswdCommand.getText() };ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(file_name,com);(ex_com1);(ex_com2);

} catch (IOException ex) {}}

void Cancel5ActionPerformed(java.awt.event.ActionEvent evt) {();.setText("");.setVisible(false);}


private void Clear5ActionPerformed(java.awt.event.ActionEvent evt) {();.setText("");}

void OK5ActionPerformed(java.awt.event.ActionEvent evt) {file_name = "addgroup.sh";[] com = { addgroupCommand.getText() };ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(file_name,com);(ex_com1);(ex_com2);

} catch (IOException ex) {}}

void Cancel6ActionPerformed(java.awt.event.ActionEvent evt) {.setText("");.setSelectedIndex(0);.setVisible(false);}

void Clear6ActionPerformed(java.awt.event.ActionEvent evt) {.setText("");.setSelectedIndex(0);}

void OK6ActionPerformed(java.awt.event.ActionEvent evt) {file_name = "delgroup.sh";[] com = { delgroupCommand.getText() };ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(file_name,com);(ex_com1);(ex_com2);

} catch (IOException ex) {}}

void Cancel7ActionPerformed(java.awt.event.ActionEvent evt) {.setSelectedIndex(0);.setText("");.setText("");.setVisible(false);}

void Clear7ActionPerformed(java.awt.event.ActionEvent evt) {.setSelectedIndex(0);.setText("");.setText("");}

void OK7ActionPerformed(java.awt.event.ActionEvent evt) {file_name = "groupmod.sh";[] com = { groupmodCommand.getText() };ex_com1 = "chmod +x part1/"+file_name;ex_com2 = "gnome-terminal -x part1/"+file_name;{(file_name,com);(ex_com1);(ex_com2);

} catch (IOException ex) {}}

void Cancel8ActionPerformed(java.awt.event.ActionEvent evt) {.setText("");.setVisible(false);}void Clear8ActionPerformed(java.awt.event.ActionEvent evt) {.setText("");}

void OK8ActionPerformed(java.awt.event.ActionEvent evt) {usernames = usernameGroups.getText();{[] appendText = getOutput("groups "+usernames);(int i = 0; i < appendText.length; i++).append(appendText[i]);.append("\n\n");}(IOException e) {}}

void userOptsItemStateChanged(java.awt.event.ItemEvent evt) {();(userOpts.getSelectedItem().toString()){"--gid":.setVisible(true);.setVisible(true);;"--home":.setVisible(true);.setVisible(true);.setVisible(true);;"--shell":.setVisible(true);.setVisible(true);;"--ingroup":.setVisible(true);.setVisible(true);;"--uid":.setVisible(true);.setVisible(true);;:();;}.pack();.setEnabled(true);[i] = userOpts.getSelectedItem().toString();(adduserParams);}

void systemUserItemStateChanged(java.awt.event.ItemEvent evt) {(adduserParams);}

void jLabel29MouseClicked(java.awt.event.MouseEvent evt) {+=2;();();}

void adduserDialogWindowOpened(java.awt.event.WindowEvent

evt) {=0;= new String[12];}

void userNameKeyReleased(java.awt.event.KeyEvent evt) {(adduserParams);}


private void userOpenDirActionPerformed(java.awt.event.ActionEvent evt)

{.setText(openDirectoryDialog(this.adduserDialog));}

void userHomePathCaretUpdate(javax.swing.event.CaretEvent evt) {[i+1] = userHomePath.getText();(adduserParams);}

void userShellItemStateChanged(java.awt.event.ItemEvent evt) {[i+1] = userShell.getSelectedItem().toString();(adduserParams);}

void userGroupCaretUpdate(javax.swing.event.CaretEvent evt) {[i+1] = userGroup.getText();(adduserParams);}

void userIDCaretUpdate(javax.swing.event.CaretEvent evt) {[i+1] = userID.getText();(adduserParams);}

void deluserOptItemStateChanged(java.awt.event.ItemEvent evt) {(deluserOpt.getSelectedItem().toString().equals("--backup-to")){.setVisible(true);.setVisible(true);.setVisible(true);.setText("");.pack();}();();}void adduserDialogWindowClosing(java.awt.event.WindowEvent ) {();();.setVisible(false);}

void deluserDialogWindowClosing(java.awt.event.WindowEvent

evt) {();();.setText("");.setVisible(false);}

void delUsernameCaretUpdate(javax.swing.event.CaretEvent evt) {();}

void backupPathCaretUpdate(javax.swing.event.CaretEvent evt) {

// TODO add your handling code here:();}

void usermodOptsItemStateChanged(java.awt.event.ItemEvent evt) {();(usermodOpts.getSelectedItem().toString()){"-a -G":("Группа: ");;"-d":.setVisible(true);.setVisible(true);.setVisible(true);.setText("");;"-e":("Дата: ");.setToolTipText("Дата задаётся в формате ГГГГ-ММ-ДД");;"-l":("Новое имя: ");;"-p":("Пароль: ");;"-s":("Оболочка: ");;"-u":("UID: ");;:();;}.pack();.setEnabled(true);[j] = usermodOpts.getSelectedItem().toString();(umodParams);}

void jLabel31MouseClicked(java.awt.event.MouseEvent evt) {+=2;();();}void chooseBackupActionPerformed(java.awt.event.ActionEvent ) {.setText(openDirectoryDialog(this.deluserDialog));}

void userHomePath1CaretUpdate(javax.swing.event.CaretEvent evt)

{[j+1] = userHomePath1.getText();(umodParams); }

void userOpenDir1ActionPerformed(java.awt.event.ActionEvent evt)

{.setText(openDirectoryDialog(this.usermodDialog));}

void usermodDialogWindowOpened(java.awt.event.WindowEvent

evt) {= 0;= new String[12];}

void usermodFieldCaretUpdate(javax.swing.event.CaretEvent evt) {[j+1] = usermodField.getText();(umodParams);}

void usermodNameCaretUpdate(javax.swing.event.CaretEvent evt) {(umodParams);}

void usermodDialogWindowClosing(java.awt.event.WindowEvent

evt) {();();.setText("");.setVisible(false);}

void passwdOptItemStateChanged(java.awt.event.ItemEvent evt) {();(passwdOpt.getSelectedItem().toString()){"-i":.setVisible(true);.setText("Дней:");.setVisible(true);.setText("");;"-n":.setVisible(true);.setText("Мин_дней:");.setVisible(true);.setText("");;"-w":.setVisible(true);.setText("Пред_дней:");.setVisible(true);.setText("");;"-x":.setVisible(true);.setText("Макс_дней:");.setVisible(true);.setText("");;


default:();.setText("");;}.pack();();}

void passwdNameCaretUpdate(javax.swing.event.CaretEvent evt) {();}

void daysFieldCaretUpdate(javax.swing.event.CaretEvent evt) {();}

void passwdDialogWindowClosing(java.awt.event.WindowEvent

evt) {();();.setText("");.setVisible(false);}

void groupsDialogWindowClosing(java.awt.event.WindowEvent

evt) {.setText("");.setVisible(false);}

void addgroupOptItemStateChanged(java.awt.event.ItemEvent evt) {selectedOpt = addgroupOpt.getSelectedItem().toString();(selectedOpt.equals("--gid")){.setVisible(true);.setVisible(true);.setText(""); }();();}

void addgroupNameCaretUpdate(javax.swing.event.CaretEvent evt)

{();}

void addgroupGidCaretUpdate(javax.swing.event.CaretEvent evt) {();}

void systemGroupItemStateChanged(java.awt.event.ItemEvent evt) {();}

void addgroupDialogWindowClosing(java.awt.event.WindowEvent

evt) {();.setText("");.setVisible(false);}

void delgroupOptItemStateChanged(java.awt.event.ItemEvent evt) {();}

void delgroupNameCaretUpdate(javax.swing.event.CaretEvent evt)

{();}void delgroupDialogWindowClosing(java.awt.event.WindowEvent

evt) {();.setText("");.setVisible(false);}

void groupmodOptItemStateChanged(java.awt.event.ItemEvent evt)

{();

selectedOpt = groupmodOpt.getSelectedItem().toString();(selectedOpt){"-g":.setVisible(true);.setText("GID:");.setVisible(true);.setText("");;"-n":.setVisible(true);.setText("Новое имя:");.setVisible(true);.setText("");;:.setText("");;}();}

void groupmodFieldCaretUpdate(javax.swing.event.CaretEvent evt)

{();}

void groupmodNameCaretUpdate(javax.swing.event.CaretEvent evt)

{();}

void groupmodDialogWindowClosing(java.awt.event.WindowEvent

evt) {.setSelectedIndex(0);.setText("");.setText("");.setVisible(false);}

void gpasswdOptItemStateChanged(java.awt.event.ItemEvent evt) {();selectedOpt = gpasswdOpt.getSelectedItem().toString();(selectedOpt){"-a":.setVisible(true);.setVisible(true);.setText("");;"-d":.setVisible(true);.setVisible(true);.setText("");;:();.setText("");;}.pack();(); }

void gpasswdDialogWindowClosing(java.awt.event.WindowEvent

evt) {();();.setText("");.setVisible(false);}

void gpasswdNameCaretUpdate(javax.swing.event.CaretEvent evt) {();}

void gpasswdName1CaretUpdate(javax.swing.event.CaretEvent evt)

{();}

void chownUserCaretUpdate(javax.swing.event.CaretEvent evt) {();}

void chownGroupCaretUpdate(javax.swing.event.CaretEvent evt) {();}



{(javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {("Nimbus".equals(info.getName())) {.swing.UIManager.setLookAndFeel(info.getClassName());;

}}} catch (ClassNotFoundException ex) {.util.logging.Logger.getLogger(Interface1.class.getName()).log(java.util.

logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {.util.logging.Logger.getLogger(Interface1.class.getName()).log(java.util.

logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {.util.logging.Logger.getLogger(Interface1.class.getName()).log(java.util.

logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {.util.logging.Logger.getLogger(Interface1.class.getName()).log(java.util.

logging.Level.SEVERE, null, ex);

}.awt.EventQueue.invokeLater(new Runnable() {void run() {Interface1().setVisible(true);}});}javax.swing.JButton Cancel;javax.swing.JButton Cancel1;javax.swing.JButton Cancel2;javax.swing.JButton Cancel3;javax.swing.JButton Cancel4;javax.swing.JButton Cancel5;javax.swing.JButton Cancel6;javax.swing.JButton Cancel7;javax.swing.JButton Cancel8;javax.swing.JButton Clear;javax.swing.JButton Clear1;javax.swing.JButton Clear2;javax.swing.JButton Clear3;javax.swing.JButton Clear4;javax.swing.JButton Clear5;javax.swing.JButton Clear6;javax.swing.JButton Clear7;javax.swing.JButton Clear8;javax.swing.JButton OK;javax.swing.JButton OK1;javax.swing.JButton OK2;javax.swing.JButton OK3;javax.swing.JButton OK4;javax.swing.JButton OK5;javax.swing.JButton OK6;javax.swing.JButton OK7;javax.swing.JButton OK8;javax.swing.JButton addgroupButton;javax.swing.JTextArea addgroupCommand;javax.swing.JDialog addgroupDialog;javax.swing.JTextField addgroupGid;javax.swing.JTextField addgroupName;javax.swing.JComboBox addgroupOpt;javax.swing.JButton adduserButton;javax.swing.JTextArea adduserCommand;javax.swing.JDialog adduserDialog;javax.swing.JTextField backupPath;javax.swing.JButton chmodButton;javax.swing.JButton chmodCancel;javax.swing.JTextArea chmodCommand;javax.swing.JDialog chmodDialog;javax.swing.JButton chmodDiscard;javax.swing.JButton chmodOK;javax.swing.JButton chmodOpenFile;javax.swing.JComboBox chmodOptions;javax.swing.JTextField chmodPathfile;javax.swing.JComboBox chmodPerms;javax.swing.JComboBox chmodUsers;javax.swing.JButton chooseBackup;javax.swing.JButton chownButton;javax.swing.JButton chownClear;javax.swing.JTextArea chownCommand;javax.swing.JDialog chownDialog;javax.swing.JButton chownDiscard;javax.swing.JTextField chownGroup;javax.swing.JButton chownOK;javax.swing.JButton chownOpenFile;javax.swing.JComboBox chownOptions;javax.swing.JTextField chownPathFile;javax.swing.JTextField chownUser;javax.swing.JTextField daysField;javax.swing.JTextField delUsername;javax.swing.JButton delgroupButton;javax.swing.JTextArea delgroupCommand;javax.swing.JDialog delgroupDialog;javax.swing.JTextField delgroupName;javax.swing.JComboBox delgroupOpt;javax.swing.JButton deluserButton;javax.swing.JTextArea deluserCommand;javax.swing.JDialog deluserDialog;javax.swing.JComboBox deluserOpt;javax.swing.JButton etcGroupButton;javax.swing.JButton etcPasswdButton;javax.swing.JButton gpasswdButton;javax.swing.JTextArea gpasswdCommand;javax.swing.JDialog gpasswdDialog;javax.swing.JTextField gpasswdName;javax.swing.JTextField gpasswdName1;javax.swing.JComboBox gpasswdOpt;javax.swing.JButton groupmodButton;javax.swing.JTextArea groupmodCommand;javax.swing.JDialog groupmodDialog;javax.swing.JTextField groupmodField;javax.swing.JTextField groupmodName;javax.swing.JComboBox groupmodOpt;javax.swing.JButton groupsButton;javax.swing.JDialog groupsDialog;javax.swing.JCheckBox hintsButton;javax.swing.JLabel jLabel1;javax.swing.JLabel jLabel10;javax.swing.JLabel jLabel11;javax.swing.JLabel jLabel12;javax.swing.JLabel jLabel13;javax.swing.JLabel jLabel14;javax.swing.JLabel jLabel15;javax.swing.JLabel jLabel16;javax.swing.JLabel jLabel17;javax.swing.JLabel jLabel18;javax.swing.JLabel jLabel19;javax.swing.JLabel jLabel2;javax.swing.JLabel jLabel20;javax.swing.JLabel jLabel21;javax.swing.JLabel jLabel22;javax.swing.JLabel jLabel23;javax.swing.JLabel jLabel24;javax.swing.JLabel jLabel25;javax.swing.JLabel jLabel26;javax.swing.JLabel jLabel27;javax.swing.JLabel jLabel28;javax.swing.JLabel jLabel29;javax.swing.JLabel jLabel3;javax.swing.JLabel jLabel30;javax.swing.JLabel jLabel31;javax.swing.JLabel jLabel32;javax.swing.JLabel jLabel33;javax.swing.JLabel jLabel34;javax.swing.JLabel jLabel35;javax.swing.JLabel jLabel36;javax.swing.JLabel jLabel37;javax.swing.JLabel jLabel38;javax.swing.JLabel jLabel39;javax.swing.JLabel jLabel4;javax.swing.JLabel jLabel40;javax.swing.JLabel jLabel41;javax.swing.JLabel jLabel42;javax.swing.JLabel jLabel43;javax.swing.JLabel jLabel5;javax.swing.JLabel jLabel6;javax.swing.JLabel jLabel7;javax.swing.JLabel jLabel8;javax.swing.JLabel jLabel9;javax.swing.JPanel jPanel1;javax.swing.JPanel jPanel2;javax.swing.JPanel jPanel3;javax.swing.JPanel jPanel4;javax.swing.JPanel jPanel5;javax.swing.JPanel jPanel6;javax.swing.JPanel jPanel7;javax.swing.JScrollPane jScrollPane1;javax.swing.JScrollPane jScrollPane10;javax.swing.JScrollPane jScrollPane11;javax.swing.JScrollPane jScrollPane12;javax.swing.JScrollPane jScrollPane2;javax.swing.JScrollPane jScrollPane3;javax.swing.JScrollPane jScrollPane4;javax.swing.JScrollPane jScrollPane5;javax.swing.JScrollPane jScrollPane6;javax.swing.JScrollPane jScrollPane7;javax.swing.JScrollPane jScrollPane8;javax.swing.JScrollPane jScrollPane9;javax.swing.JButton passwdButton;javax.swing.JTextArea passwdCommand;javax.swing.JDialog passwdDialog;javax.swing.JTextField passwdName;javax.swing.JComboBox passwdOpt;javax.swing.JButton ssh_configButton;javax.swing.JButton ssh_installButton;javax.swing.JButton ssh_runButton;javax.swing.JButton ssh_stopButton;javax.swing.JButton sshd_configButton;javax.swing.JTextArea statusArea;javax.swing.JCheckBox systemGroup;javax.swing.JCheckBox systemUser;javax.swing.JButton terminalButton;javax.swing.JButton umaskButton;javax.swing.JButton umaskCancel;javax.swing.JButton umaskClear;javax.swing.JDialog umaskDialog;javax.swing.JTextField umaskMask;javax.swing.JButton umaskOK;javax.swing.JComboBox umaskUsers;javax.swing.JTextField userGroup;javax.swing.JTextField userHomePath;javax.swing.JTextField userHomePath1;javax.swing.JTextField userID;javax.swing.JTextField userName;javax.swing.JButton userOpenDir;javax.swing.JButton userOpenDir1;javax.swing.JComboBox userOpts;javax.swing.JComboBox userShell;javax.swing.JButton usermodButton;javax.swing.JTextArea usermodCommand;javax.swing.JDialog usermodDialog;javax.swing.JTextField usermodField;javax.swing.JTextField usermodName;javax.swing.JComboBox usermodOpts;javax.swing.JTextField usernameGroups;javax.swing.JButton usersButton;

// End of variables declaration

}


. Class WelcomeWindow.class WelcomeWindow extends javax.swing.JFrame {WelcomeWindow() {();}

@SuppressWarnings("unchecked") Generated code

void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {Interface1().setVisible(true);}

void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {Interface2().setVisible(true);}

void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {Interface3().setVisible(true);}static void main(String args[]) {.awt.EventQueue.invokeLater(new Runnable() {void run() {WelcomeWindow().setVisible(true);}});}javax.swing.JButton jButton1;javax.swing.JButton jButton2;javax.swing.JButton jButton3;javax.swing.JLabel jLabel1;


. Class DoRuntime.java.io.*;class DoRuntime {isInstalled = false;installVerify(String daemonName) throws IOException {result = "";arg = "aptitude show "+daemonName;+= daemonName;runtime = Runtime.getRuntime();process = runtime.exec(arg);is = process.getInputStream();isr = new InputStreamReader(is);br = new BufferedReader(isr);line = "";words[];(int i = 0; i < 2; i++)= br.readLine();= line.split("\\s+");(words[0].equals("Новый")){= br.readLine();= line.split("\\s+");}(words[1].equals("не"))

result += ": не установлен";{+= ": установлен";

isInstalled = true;}result;}

isRunning() throws IOException{run = false;file = new File("run.info");(file.exists()) {.delete();}arg = "gnome-terminal -x ./proc.sh";runtime = Runtime.getRuntime();process = runtime.exec(arg);{.sleep(5000);

} catch (InterruptedException ex) {}in = new BufferedReader(new FileReader("run.info"));line = in.readLine();(line.equals("alive"))= true;.close();run;}

makeProcSh(String daemonName) throws IOException{file = new File("proc.sh");(file.exists()) {.delete();}(Writer output = new BufferedWriter(new FileWriter(file))) {.write("#!/bin/bash");.write("\n");.write("if su --command="+'"'+"kill -0 $(cat

/var/run/"+daemonName+".pid)"+'"');.write("\nthen \n\techo alive >> run.info");.write("\nelse");.write("\n\techo dead >> run.info");.write("\nfi");.close();}}}

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

функций.

1.Файл addgroup.sh

#!/bin/bash--command="addgroup grupa"5

. Файл adduser.sh

#!/bin/bash--command="adduser qwery"5

. Файл chmod.sh

#!/bin/bash--command="chmod a+rwx /home/alim/15.jpg"5

. Файл chown.sh

#!/bin/bash--command="chown alim:alim /home/alim/15.jpg"5

. Файл delgroup.sh

#!/bin/bash--command="delgroup grupas"5

.Файл deluser.sh

#!/bin/bash--command="deluser --remove-home qwertyk"5

. Файл etcGroup.sh

#!/bin/bash--command="nano /etc/group"

. Файл etcPasswd.sh

#!/bin/bash--command="nano /etc/passwd"

. Файл gpasswd.sh

#!/bin/bash--command="gpasswd -r qwerty"5

. Файл groupmod.sh

#!/bin/bash--command="groupmod -n grupas grupa"5

. Файл passwd.sh

#!/bin/bash--command="passwd qwertyk"5

. Файл proc.sh

#!/bin/bashsu --command="kill -0 $(cat /var/run/sshd.pid)"alive >> run.infodead >> run.info

. Файл shadow.sh

#!/bin/bash--command="nano /etc/shadow"

. Файл ssh_config.sh

#!/bin/bash--command="nano /etc/ssh/ssh_config"

. Файл sshd_config.sh

#!/bin/bash--command="nano /etc/ssh/sshd_config"

. Файл ssh_install.sh

#!/bin/bash--command="apt-get install ssh"5

. Файл ssh_run.sh

#!/bin/bash--command="/etc/init.d/ssh start"3

. Файл ssh_stop.sh

#!/bin/bash--command="/etc/init.d/ssh stop"3

. Файл umask.sh

#!/bin/bashgrep '^umask' /home/qwery/.profile--command="sed -i '$d' /home/qwery/.profile;'umask 027' >> /home/qwery/.profile"--command="echo 'umask 027' >> /home/qwery/.profile"5

. Файл usermod.sh

#!/bin/bash--command="usermod -l qwerty qwery"5

. Файл users.sh

#!/bin/bash/home> /tmp/users.txt


Пояснительная записка к дипломному проекту страниц, 66 рисунков, 23 таблицы и 33 источника. Объект исследования - небольшая сеть с оптимизацией ее раб

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ