Научная статья на тему 'Централизованное управление настройкой прав доступа к файлам в UNIX-системах'

Централизованное управление настройкой прав доступа к файлам в UNIX-системах Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
857
94
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВЫЧИСЛИТЕЛЬНЫЕ МАШИНЫ / ОПЕРАЦИОННЫЕ СИСТЕМЫ / UNIX-СИСТЕМЫ / ФАЙЛОВЫЕ СИСТЕМЫ / НАСТРОЙКА ПРАВ ДОСТУПА К ФАЙЛАМ И КАТАЛОГАМ / COMPUTERS / OPERATING SYSTEMS / UNIX SYSTEMS / FILE SYSTEMS / CONFIGURING ACCESS RIGHTS TO FILES AND DIRECTORIES

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Трубачева Светлана Ивановна, Трубачев Евгений Сергеевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

CENTRALIZED CONFIGURATION MANAGEMENT OF ACCESS RIGHTS TO FILES IN UNIX-BASED SYSTEMS

In the paper, an article about how to provide automated centralized management restore system data, set permissions for files and directories on computers that are running a Unix system. Technical solution allows to reduce the labor costs for system administration of computers on the network.

Текст научной работы на тему «Централизованное управление настройкой прав доступа к файлам в UNIX-системах»

УДК: 004.45

ББК: 32.97-018.2

Трубачева С.И., Трубачев Е.С.

ЦЕНТРАЛИЗОВАННОЕ УПРАВЛЕНИЕ НАСТРОЙКОЙ ПРАВ ДОСТУПА К ФАЙЛАМ В UNIX-СИСТЕМАХ

Trubachyova S.I., Trubachyov E.S.

CENTRALIZED CONFIGURATION MANAGEMENT OF ACCESS RIGHTS TO FILES IN UNIX-BASED SYSTEMS

Ключевые слова: вычислительные машины, операционные системы, Unix-системы, файловые системы, настройка прав доступа к файлам и каталогам.

Keywords: computers, operating systems, Unix systems, file systems, configuring access rights to files and directories.

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

Abstract: in the paper, an article about how to provide automated centralized management restore system data, set permissions for files and directories on computers that are running a Unix system. Technical solution allows to reduce the labor costs for system administration of computers on the network.

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

Важной вехой в истории развития ВТ, компьютеров и вообще в истории ОС явилось создание ОС Unix. Первоначально эта ОС предназначалась для поддержки режима разделения времени в мини-компьютере PDP-7. С середины 70-х годов двадцатого века началось широкое использование ОС Unix. К тому времени программный код для Unix был на 90% написан на языке высокого уровня С. Разработка и широкое распространение эффективных С-компиляторов сделало Unix уникальной ОС, обладающей возможностью сравнительно легкого переноса на различные типы ВМ: суперкомпьютеры, мэйнфреймы, миникомпьютеры, серверы и рабочие станции на базе RISC-процессоров, ПК. Мощные функциональные возможнос-ти, гибкость настройки, многозадачность, многотерминальность и открытость позво-лили ОС Unix занять прочные позиции во всех классах компьютеров.

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

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

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

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

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

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

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

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

Чтобы начать сеанс работы в Unix (Linux), необходимо сначала зарегистрироваться в системе (log in). В процессе регистрации каждому пользователю назначаются уникальный сеансовый идентификатор (session's ID) и права доступа (permissions). При регистрации система обновляет файл, в котором хранятся данные о зарегистрированных пользователях, и добавляет в него информацию о пользователе. При успешном входе в систему появляется в командной строке знак "#" (суперпользователь) или знак "$" (обычный пользователь с ограниченными правами). При регистрации в системе считается, что каждый пользователь работает за терминалом (локальным или удаленным) или устройством tty. С точки зрения ОС, устройство tty является файлом специального типа, который позволяет ПК, работающему под управлением Unix (Linux), взаимодействовать с удаленными физическими устройствами. Системный процесс, называемый демоном (daemon), проверяет, не запущен ли на этом терминале какой-либо процесс. Если демон не обнаруживает других процессов, он запускает в отдельном процессе специальную программу, под названием getty, чтобы определить тип терминала или "получить tty". Программа getty выдает приглашение (prompt) на регистрацию в системе и переходит в состояние ожидания ввода информации пользователем. Для регистрации пользователь должен ввести специальный идентификатор (user ID), который представляет собой строку, состоящую из цифр и символов алфавита. После получения этой информации getty запускает программу регистрации в системе login, используя в качестве аргумента идентификатор пользователя. Основную работу по установке параметров сеанса выполняет программа регистрации login. Она проверяет файл /etc/passwd, содержащий информацию о том, требует ли учетная запись (account) пароль для входа в систему. Если пароль требуется, то процесс регистрации запрашивает его. Пароли могут храниться в файле /etc/passwd, но Unix-системы с повышенным уровнем безопасности хранят пароли в файле теневых паролей /etc/shadow.

Если введенный идентификатор пользователя не соответствует ни одной из учетных записей в данной системе, программа регистрации все равно отобразит приглашение на ввод пароля. При вводе пароля в процессе регистрации в системе шифруется строка, затем полученный результат сравнивается со значением поля файла /etc/shadow. Если строки совпадают, пользователь получает доступ к системе. После идентификации пользователя система устанавливает его параметры для текущего сеанса работы. Каждому сеансу присваивается числовой идентификатор пользователя и идентификатор группы. Эти идентификаторы определяют права доступа пользователя к файлам. После регистрации система запускает специальную среду, в которой можно выполнять команды. По отношению к ресурсам в ОС поддерживается три уровня безопасности, которые перечислены ниже (рисунок 1).

1. Владелец (User). На данном уровне безопасности определяется, может ли владелец ресурса читать, записывать и/или выполнять данный ресурс (rwx - read, wrire, execute). Владелец определяется числовым идентификатором пользователя (user ID, uid).

2. Группа (Group). В ОС пользователи могут принадлежать к одной или нескольким группам. Пользователи, работающие совместно над одним, например, проектом, обычно

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

3. Все пользователи (Other). Данный уровень безопасности определяет доступ к ресурсам (чтение, запись и/или выполнение) для всех других пользователей данного ПК.

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

Рисунок 1 - Права доступа к файлам и каталогам

Применение вышеописанных механизмов обеспечивает высокую степень защиты информации в Unix-системах.

Файлы в ОС семейства Unix (Linux) играют ключевую роль, что не всегда справедливо для других ОС. Как и во многих современных ОС, в Unix (Linux) файлы организованы в виде древовидной структуры (дерева), называемой файловой системой (file system). Каждый файл имеет имя, определяющее его расположение в дереве файловой системы. Корнем этого дерева является корневой каталог (root directory), имеющий имя "/". Имена всех остальных файлов содержат путь — список каталогов (ветвей), которые необходимо пройти, чтобы достичь файла. Все доступное пользователям файловое пространство объединено в единое дерево каталогов, корнем которого является каталог "/". Таким образом, полное имя любого файла начинается с "/" и не содержит идентификатора устройства, на котором он фактически хранится (как это сделано в Windows). Однако это не означает, что в системе присутствует только одна файловая система. В большинстве случаев единое дерево, такое, каким его видит пользователь системы, составлено из нескольких отдельных файловых систем, которые могут иметь различную внутреннюю структуру, а файлы, принадлежащие этим файловым системам, могут быть расположены на различных устройствах. Такие файловые системы называются монтируемыми. ОС, поддерживающие работу с различными типами файловых систем. Конечно, они сложнее с точки зрения организации, но более функциональны.

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

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

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

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

для каталога открывает доступ к его содержимому.

Старшие три бита прав доступа имеют специальное назначение. Первые два позволяют изменить права доступа программы при ее запуске, а последний называется битом сохранения программы (sticky bit). Чтобы предоставить пользователям доступ к ресурсам, которые для них обычно недоступны, для процесса нужно установить идентификатор привилегированного пользователя. Это можно осуществить с помощью команды su. Команда su изменяет действующий идентификатор пользователя с помощью системного вызова, разрешенного только для пользователя root. Также можно включить пользователя в группу, имеющую доступ к данным файлам. Установленный флаг SUID (первый старший бит прав доступа) указывает на то, что программа будет выполняться с правами доступа ее владельца. При установленном флаге SGID (второй бит прав доступа) программа, запущенная пользователем, будет выполняться с правами группы, в которую входит владелец программы. Данные о режиме выполнения программы содержатся в ее бите сохранения Sticky бит (третий бит прав доступа). Если он установлен, то после завершения копия программы будет сохранена в памяти. Тогда на загрузку программы при ее повторном запуске потребуется значительно меньше времени.

Позволяя расширять права пользователя, SUID, SGID могут привести к снижению безопасности системы. Третий бит - sticky - способствует повышению безопасности системы. Бит sticky, будучи установленным на каталог, позволяет производить удаление файла только владельцу файла.

Используемые механизмы позволяют обеспечить высокую степень защиты данных в ОС семейства Unix (Linux).

Далее проанализируем, как можно просмотреть права, назначить/переназначить их, ограничить права на эти действия (при необходимости).

При создании файлов в системе им назначаются стандартные права доступа. Обычно файлам, создаваемым текстовыми редакторами или полученными с помощью перенаправления потоков ввода/вывода, назначаются права 666 (rw-rw-rw-), что позволяет любому пользователю читать и записывать информацию в данный файл. Файлам, создаваемым компиляторами или другими программами создания исполняемых программ, присваиваются права 755 (rwxr-xr-x), предоставляющие полный доступ к ним любому пользователю системы. Каталогам обычно также назначаются права 755. После создания файла изменить его права доступа может только владелец этого файла или системный администратор (root).

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

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

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

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

определяющее права доступа к файлам. Вот простой пример: chmod 644 *. Здесь в качестве параметра используется восьмеричное число, определяющее стандартные права доступа для всех указанных в команде файлов.

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

chmod u+x * - добавить владельцу файла право выполнять файл, как программу;

chmod u+x, g+x * - добавить владельцу файла, группе право выполнять файл, как программу.

Выбор инструментального средства разработки специализированного программного обеспечения централизованного управления настройкой компонентов системы. Высокоуровневый язык программирования - язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков - это использование абстракций, смысловых конструкций, описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) сложны для понимания. Высокоуровневые языки направлены на то, чтобы не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование трансляторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными ОС и оборудованием, в то время как их исходный код остаётся неизменным. Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества преимуществ имеет и недостатки. В частности, они не позволяют создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования. ОС Unix (Linux) поддерживает компиляторы и интерпретаторы для следующих языков высокого уровня: C, C++, Java, Python, PHP, Ruby, Perl. Для ОС Unix (Linux) реализованы интегрированные среды разработки (англ. IDE, Integrated development environment) - системы программных средств, используемые программистами для разработки программного обеспечения. Обычно среда разработки включает в себя: текстовый редактор для написания исходного кода программы; компилятор и/или интерпретатор для преобразования кода программы; средства автоматизации сборки, отладчик. Иногда среда разработки содержит средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя.

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

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

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

На рисунке 2 представлена функ-циональная модель проектируемого программ-ного обеспечения системы централизованного управления настройкой ОС - диаграмма прецедентов, разработанная в RationalRose. Основная задача модели прецедентов - представить единое средство, дающее возмож-ность заказчику, конечному пользователю и разработчику совместно анализировать функциональность и поведение системы. Заданным набором актеров и связанных с ними прецедентов описываются все функции, выполнение которых требуется от проектируемой системы. Функции ПО рабочей станции отображены на рисунке 3. Совокупность действий, взаимосвязь рабочей станции и сервера отображена на рисунке 4.

Рисунок 2 - Главная диаграмма прецедентов

Рисунок 3 - Основные функции рабочей станции

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

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

Взаимосвязь действий администратора и сервера отображена на рисунке 5.

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

Рисунок 6 - Диаграмма взаимосвязи программных компонентов

Для настройки необходимых прав доступа нужно внести изменения в следующие конфигурационные файлы (рисунок 7):

файл/etc/profile

Конфигурационные файлы настройки ФС

файл

/etc/profile.d/01msec.sh

файл /etc/default/useradd

Рисунок 7 - Конфигурационные файлы настроек

Файл /etc/profile отвечает за создание новой учетной записи.

Файл /etc/profile.d/01msec.sh отвечает за уровень доступа к командам командной оболочки shell.

Файл /etc/default/useradd отвечает за присваивание основных значений создаваемому пользователю.

После настройки сервера связи (sshd-сервера) по протоколу ssh размещаем на сервере конфигурационные файлы.

Создаем пользователя admin и помещаем все файлы в его домашний каталог /home/admin.

Присвоим каталогу права доступа: chmod 755 /home/admin.

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

Скрипт /etc/profile запускается командой adduser и передает ей следующие параметры для создания учетной записи:

PATH - путь к домашнему каталогу;

USER - имя пользователя;

MAIL - путь к почтовому каталогу; HOSTNAME - имя рабочей станции; INPUTRC - уровень загрузки ОС.

Команда umask задает права доступа на вновь создаваемые файлы и каталоги пользователя. Значение по умолчанию составляет 022. Изменим значение на 002. Таким образом, права доступа на вновь создаваемые файлы пользователя будут задаваться командой chmod 775.

Листинг скрипта /etc/profile:

# /etc/profile -*- Mode: shell-script -*-

# (c) Linux

# изменен 20.03.14 loginsh=1

# проверка по номеру UID

# если > 500, то стандартный путь к каталогам

# если меньше, то каталог /usr/games

# используется для сетевых игровых приложений

if [ "$UID" -ge 500 ] && ! echo ${PATH} |grep /usr/games then

PATH=$PATH:/usr/games

fi

# задаем значение umask

# по умолчанию 022 umask 002

# присваивание значений локальным переменным для создаваемого

# пользователя USER=id' LOGNAME=$USER MAIL="/var/spool/mail/$USER" HISTCONTROL=ignoredups HOSTNAME=/bin/hostname HISTSIZE=1000

# копирование файла inputrc для вновь созданного пользователя

# файл содержит настройки для клавиатуры, раскладки и т.п. if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]

then

INPUTRC=/etc/inputrc fi

NLSPATH=/usr/share/locale/%l/%N

# передача вызывающей команде сформированных значений

export PATH PS 1 USER LOGNAME MAIL HOSTNAME INPUTRC NLSPATH export HISTCONTROL HISTSIZE

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

# копирование всех сценариев запуска из общего каталога

# в каталог запуска нового пользователя for i in /etc/profile.d/*.sh ;

do

if [ -r $i ]; then . $i fi

done

Скрипт /etc/profile.d/01msec.sh задает уровень запуска командного интерпретатора bash для вновь создаваемого пользователя. Доступны 2 уровня: суперпользователя и обычный. При обычном уровне недоступны команды для мониторинга и конфигурирования

сети, монтирования файловых систем и другие административные утилиты. Для обеспечения учебного процесса необходимо изменить уровень выполнения интерпретатора на уровень суперпользователя. Листинг скрипта 01msec.sh:

# проверка наличия данного файла if [ -r /etc/security/shell ];

then . /etc/security/shell fi

# если UID пользователя > 500, то значение umask

# из локальной переменной, заданной в profile

# иначе присваивается значение 022 if [ 'id -u -ge 500 ];

then

if [ -n "$UMASK_USER" ]; then

# по умолчанию указано $UMASK_USER

# umask $UMASK_USER

# зададим полные права доступа к консоли umask $UMASK_ROOT

else

umask 022 fi

else

# проверка на права администратора if [ -n "$UMASK_ROOT" ];

then

umask $UMASK_ROOT else

umask 022 fi fi

export PATH=$PATH export SECURE_LEVEL

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

Для внесения изменений воспользуемся интерфейсом команды useradd.

# /usr/sbin/useradd -D -g 0

Задаем вновь создаваемым пользователям группу администратора с GID, равным 0. Зададим интерпретатор по умолчанию:

# /usr/sbin/useradd -D /bin/bash

Скрипт all_user.sh для выполнения на рабочих машинах поместим в каталог /home/admin и присвоим ему права на выполнение командой chmod: chmod 755 /home/admin/all_user.sh

Таким образом, мы устанавливаем права доступа на файл, который может только читаться и исполняться. Скрипт при выполнении на рабочих станциях находит всех зарегистрированных пользователей по учетным записям в файле /etc/passwd, затем удаляет все временные файлы и каталоги, принадлежащие данным учетным записям, затем удаляет учетные записи вместе с домашними и почтовыми каталогами пользователей, а также формирует лог-файл о проделанной работе и отправляет его на сервер. Листинг скрипта all_user.sh: #!/bin/bash

# all user.sh

#_#

# константы

PASSWORD_FILE=/etc/passwd TEMP_FILE=/temp/res.txt TARGET_FILE=/temp/res2.txt MIN_UID=500

MAX_UID=65534

#________________________________ #

# список зарегистрированных учетных записей

cat $PASSWORD_FILE | awk 'BEGIN{FS=":"}{print $3,$1}' > $TEMP_FILE

#________________________________ #

# сотрем файл назначения, т.к. записи добавляются

rm -f $TARGET_FILE

#________________________________ #

# отправляем список из UID и имен во временный файл for U_ID in $(awk '{print $1}' < $TEMP_FILE )

do

if [ $U_ID -ge "$MIN_UID" ] # сортируем значения UID then # в диапазоне 500-65534

if [ $U_ID -lt "$MAX_UID" ] then

# заносим отобранные имена реальных пользователей в файл

cat $TEMP_FILE | grep $U_ID | awk '{print $2}' >> $TARGET_FILE fi fi

done

# поиск и удаление всех файлов, созданных пользователями for us in $(awk '{print $1}' < $TARGET_FILE )

do

# поиск и удаление пользовательских файлов из временных каталогов

# /tmp and /var

find /tmp -user $us >> /temp/log # список удаляемых файлов find /tmp -user $us | rm -f # удаляем временные файлы

find /var/tmp -user $us >> /temp/log # список удаляемых файлов find /var/tmp -user $us | rm -f # удаляем временные файлы

# удаляем учетные записи пользователей

userdel -r $us # удаляются записи из файлов

# passwd, shadow, group

# удаляются домашний и почтовый каталоги

# пользователей со всем содержимым done

# отправка логов на сервер

scp /temp/log work@admin:/home/admin/logs

# удаление лога с рабочей станции rm -f /temp/log

exit 0

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

Настройка рабочих станций. Проверяем доступность сервера в подсети с помощью команды ping: # ping -c8 192.168.0.100

Пакеты должны проходить без потерь.

Настраиваем сервис ssh. После генерации и копирования ключей шифрования на

сервер закрываем сеанс удаленного подключения, вводя команду exit.

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

Для этого необходимо создать сценарий запуска и поместить его в соответствующие каталоги со сценариями запуска, отвечающими за загрузку ОС. Сценарий запуска скрипта: #! /bin/bash #chkconfig: 345 60 40

# description: run alluser service if [ ! -x /bin/all_user2.sh ]; then exit 1

fi

if [ -x /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions fi

RETVAL=0 start () {

echo "Starting alluser" action /bin/all_user2.sh RETVAL=$? [ $RETVAL -eq 0 ] return $RETVAL} stop () {

echo -n "Stopping $prog: " killproc /bin/all_user2.sh RETVAL=$? [ $RETVAL -eq 0 ] echo

return $RETVAL} case $1 in start) start ;; stop) stop ;;

restartjreload) stop start ;; status) status /bin/all_user2.sh ;;

*) echo "Usage: $0 {startjstopjrestartjreloadjcondrestartjstatus}" ;; esac

RETVAL=$? exit $RETVAL

Сценарий запуска размещаем в /etc/init.d. Для создания ссылок на сценарий в каталоги различных уровней запуска ОС используем утилиту chkconfig.

# chkconfig --add alluser

# chkconfig --level 345 alluser

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

# chkconfig --list alluser

При запуске ОС на уровнях выполнения 3, 4, 5 будет происходить выполнение скрипта, указанного в сценарии.

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

Исполняемый скрипт all_user.sh поместим в каталог /bin.

Скрипт profile разместим в каталоге /etc.

Скрипт 01msec.sh размещаем в каталог /etc/profile.d.

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

Содержание автоматически запускаемого скрипта rewrite.sh для обновления конфигурационных файлов: #!bin/bash

#копирование файлов с сервера на рабочую станцию scp /etc work@admin: /home/admin/profile scp /etc/profile.d work@admin: /home/admin/01msec.sh scp /bin work@admin: /home/admin/all_user.sh exit 0

# end script rewrite. sh

Поместим скрипт в каталог /bin. Автоматический запуск скрипта обеспечивается демоном cron. Скрипты копируются из директории /home/admin на файл-сервере в каталоги на рабочих станциях. Обновление происходит каждый час.

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

Для настройки необходимых прав доступа нужно внести изменения в следующие конфигурационные файлы: файл /etc/profile, отвечающий за создание новой учетной записи; файл /etc/profile.d/01msec.sh, отвечающий за уровень доступа к командам командной оболочки shell; файл /etc/default/useradd, отвечающий за присваивание основных значений создаваемому пользователю.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

После настройки sshd-сервера размещаем на сервере конфигурационные файлы. Создаем пользователя admin и помещаем все файлы в его домашний каталог /home/admin. Присвоим каталогу права доступа: chmod 755 /home/admin

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

Разработаны следующие программные модули:

1. Скрипт profile (файл задания прав доступа). Размещаем в каталоге /etc. Запускается командой adduser (при создании нового пользователя). Команда umask задает права доступа на вновь создаваемые файлы и каталоги пользователя. Значение по умолчанию составляет 022. Значение меняется на 002. Таким образом, права доступа на вновь создаваемые файлы пользователя будут задаваться командой chmod 775.

2. Скрипт /etc/profile.d/01msec.sh задает уровень запуска командного интерпретатора bash для вновь создаваемого пользователя. Размещаем в каталоге /etc/profile.d.

3. Скрипт rewrite.sh - обновление конфигурационных файлов. Размещаем в каталоге /bin. Автоматический запуск скрипта обеспечивается демоном cron.

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

При включении рабочей станции происходит запуск сценария, который отвечает за выполнение программы очистки файловой системы. Cценарий запуска размещаем в /etc/init.d. При запуске ОС на уровнях выполнения 3, 4, 5 будет происходить выполнение скрипта, указанного в сценарии. Для создания ссылок на сценарий в каталоги различных уровней запуска ОС использована утилиту chkconfig. Во время перезагрузки ОС активизируется исполняемый скрипт all_user.sh (размещен в каталоге /bin) для очистки файловой системы от учетных записей пользователей и файлов, принадлежащих данным пользователям.

Скрипт при выполнении на рабочих станциях: находит всех зарегистрированных пользователей по учетным записям в файле /etc/passwd; удаляет все временные файлы и каталоги, принадлежащие данным учетным записям; удаляет учетные записи вместе с

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

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

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

1. Армстронг, Д. Секреты LINUX. - М.: Вильямс, 2011. - 1072 с.

2. Боггс, У., Боггс, М. UML и Rational Rose. - М.: ВМК МГУ, 2009.

3. Большаков, Т.Б., Иртегов, Д.В. Операционные системы // Материалы сайта http: // www. citforum. ru / operating_systems.

4. Гордеев, А.В., Молчанов, А.Ю. Системное программное обеспечение. - СПб.: Питер, 2008. - 736 с.

5. Колисниченко, Д.Н. Linux-сервер своими руками. - СПб.: Наука и Техника, 2013. -

576 с.

6. Олифер, В.Г., Олифер, Н.А. Сетевые операционные системы: Учебник для вузов. 2-е издание. - СПб.: Питер, 2009. - 669 с.

7. Робачевский, А.М. Операционная система UNIX. - СПб.: БХВ-Петербург, 2013. - 528

с.

8. Трубачева, С.И. Особенности построения файловых ситем // Вестник Волжского университета им. В.Н. Татищева. - № 4 (22). - 2013. - С. 97-105.

9. http://www.citforum.ru - программирование на shell.

10. http://www.opennet.ru - вычислительные сети.

11. http://www.mandriva.ru - linux.

i Надоели баннеры? Вы всегда можете отключить рекламу.