Программа для среды UNIX

 

Содержание


Введение

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

Анализ требований

Права доступа к файлу

Проектирование

Командный интерпретатор shell

Общий синтаксис скрипта

Тестирование

Приложение А (Текст сценария)

Приложение Б (Результаты тестирования)


Введение


Сегодня характер работы в UNIX существенно отличается от того, каким он был, скажем, пятнадцать лет назад. Графический многооконный интерфейс, миллионы цветов, системы меню, техника drag-and-drop, - всё это стирает различия между работой в UNIX, и например, в Windows NT. Но взглянув внимательнее на экран, можно найти хотя бы одно окно простого алфавитно-цифрового терминала.

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


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


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

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


Анализ требований


Права доступа к файлу

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

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

<режим> <список файлов>


Эта команда может задавать правила изменения атрибутов доступа (<режим>) в двух формах - символической и числовой. В символической форме атрибуты задаются в формате


[who] + | - = [permission]


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

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

Допустимые операции:

+добавление прав доступа;

отмена прав доступа;

=определение перечисленных и отмена остальных прав.


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

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

Командаg+x-w exampl


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

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

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

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

754 my_file


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

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

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

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

<новый владелец> <файлы>


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

Для того чтобы установить нового владельца-группу используется

<новая группа> <файлы>


Группа задается идентификатором или именем.


Проектирование


Командный интерпретатор shell

Командный интерпретатор занимает важное место в операционной среде UNIX, прежде всего, благодаря следующим обстоятельствам:

·Первая программа, с которой по существу начинается работа пользователя, - shell.

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

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

·Наконец, основная инициализация операционной системы происходит в результате выполнения скриптов shell. И при изменении процесса инициализации следует заглянуть в эти скрипты.

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

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

В нашем случае:


#!/bin/bash


символ # означает комментарии.

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


Общий синтаксис скрипта


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


var=value,


где var - имя переменной, а value - её значение.

При использовании переменной, например var, командный интерпретатор подставляет вместо $var её значение.

Язык shell позволяет осуществлять ветвление программы, предоставляя оператор условия if. Условие может генерироваться командой test.

Команда test имеет следующий синтаксис:

test выражение

или [ выражение ]

Команда вычисляет логическое выражение и возвращает 0, если выражение истинно, и 1 в противном случае.

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


[ -r <имя_файла>]

[ -w <имя_файла>]

[ -x <имя_файла>]


для чтения, записи и выполнения соответственно.

Если команда вернёт 0 - размер файла больше нуля.

Более сложные выражения могут быть образованны с помощью логических операторов !, -а, -о (операции NOT, AND, OR соответственно).

Текст сценария приведён в приложении А


Тестирование


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

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

Результаты тестирования приведены в приложении Б.



Приложение А (Текст сценария)


#!/bin/bash

ls -l

echo "Введите имя файла: "

read fn[ ! -x $fn ]

echo "Файл $fn недоступен для выполнения. Атрибут будет

установлен"

chmod u+x $fn"Файл $fn доступен для выполнения."-l



Приложение Б


Результаты тестирования

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


$ ./kp6

итого 8

rwxrwxrwx 1 all all 217 Дек 22 12:36 kp6

rw-r--r-- 1 all all 0 Дек 22 12:08 test

rwxrw-r-- 1 all all 5 Дек 22 12:34 test1

Введите имя файла

Файл test недоступен для исполнения.Атрибут будет установлен

Файл test доступен для исполнения.

итого 8

rwxrwxrwx 1 all all 217 Дек 22 12:36 kp6

rwxr--r-- 1 all all 0 Дек 22 12:08 test

rwxrw-r-- 1 all all 5 Дек 22 12:34 test1

$ ./kp6

итого 8

rwxrwxrwx 1 all all 217 Дек 22 12:36 kp6

rwxr--r-- 1 all all 0 Дек 22 12:08 test

rwxrw-r-- 1 all all 5 Дек 22 12:34 test1

Введите имя файла

Файл test1 доступен для исполнения.

итого 8

rwxrwxrwx 1 all all 217 Дек 22 12:36 kp6

rwxr--r-- 1 all all 0 Дек 22 12:08 test

rwxrw-r-- 1 all all 5 Дек 22 12:34 test1

$


Содержание Введение Постановка задачи Анализ требований Права доступа к файлу Проектирование Командный интерпретатор shell Общий синтак

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ