Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Операционные системы. Учебное пособие-2

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
642 Кб
Скачать

2.Удаляются ли исходные файлы при формировании архива?

3.Какую опцию команды tar надо использовать для создания архива на диске?

4.С помощью какой программы можно сжать файлы? Опишите технологию еѐ использования.

5.Удаляются ли исходные файлы при их сжатии?

6.Какой алгоритм сжатия реализован в программах gzip и bzip2?

7.Каким образом работают алгоритмы сжатия текста, звука и изображений. В чѐм их отличие?

3.Управление учѐтными записями пользователей и правами доступа к

файлам

3.1. Концепция пользователей и групп

Модель пользователей и прав доступа, принятых во FreeBSD и большинстве систем Unix, является одноуровневой. Есть только два типа пользователей: обычные и суперпользователь или root. Пользователь root—единственный пользователь, обладающий неограниченными правами. Каждый пользователь FreeBSD имеет ограниченные права доступа и постоянное место для работы в системе — домашний каталог (home directory). Повысить свой статус в системе до уровня root даѐт возможность команда su. Она запрашивает пароль root. Пароль root – это самая важная информация в любой UNIX-системе. Получение доступа с правами root позволяет создавать, изменять или уничтожать абсолютно все, что содержит система.

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

Пользователей системы можно разделить на реальных людей, подключающихся к системе, и системных пользователей или псевдопользователей. Системные пользователи предназначены для запуска сервисов, таких как электронная почта, web-серверы и так далее. Это необходимо по соображениям безопасности; если все сервисы работают от суперпользователя, они могут действовать без ограничений. Примерами системных пользователей являются daemon, operator, bind (для Domain Name Service, DNS), news, www, nobody.

3.2. Учетные записи пользователей

Вся информация о пользователях хранится в файле /etc/passwd. Это обычный текстовый файл, право на чтение которого имеют все пользователи системы, а право на запись имеет только администратор (root).

Аналогично, информация о группах хранится в файле /etc/group и содержит списки пользователей, принадлежащих той или иной группе.

11

Атрибуты пользователя

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

name:passwd-encod:UID:GID:comments:home-dir:shell

всего семь атрибутов, разделенных двоеточиями (см. таблицу 3.1).

 

Таблица 3.1

 

 

 

Атрибут

Назначение

 

name

Имя пользователя.

 

passwd-encod

Пароль в закодированном виде

 

UID

Идентификатор пользователя (User ID) номер, используемый

 

 

для однозначной идентификации пользователя в системе.

 

 

Суперпользователь имеет UID= 0.

 

GID

Идентификатор группы (Group ID) это номер, используемый

 

 

для однозначной идентификации главной группы, к которой

 

 

принадлежит пользователь.

 

comments

Комментарии. Обычно, это реальное имя пользователя или

 

 

другая информация о пользователе.

 

home-dir

Домашний каталог пользователя

 

shell

Оболочка пользователя. Имя программы, которую UNIX

 

 

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

 

 

пользователя в систему.

 

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

 

Таблица 3.2.

 

 

 

Команда

Краткое описание

 

 

Программа для добавления новых пользователей. Она создает

 

adduser

записи в системных файлах passwd и group, а также домашний

 

 

каталог для нового пользователя.

 

 

Программа для удаления пользователей. Удаляет пользователя из

 

 

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

 

rmuser

временные файлы, задачи, выполняемые по расписанию,

 

 

принадлежащие пользователю. Удаляет имя пользователя из всех

 

 

групп.

 

chpass

Программа для изменения информации в базе данных

 

пользователей: пароли, оболочки, персональные данные.

 

 

 

 

12

passwd Программа для изменения паролей пользователей.

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

3.3. Группы пользователей

Группа это просто список пользователей. Группа идентифицируется по имени и идентификатору группы GID. В FreeBSD (и большинстве других UNIX-подобных системах) ядро для определения прав процесса использует два фактора: его идентификатор пользователя (UID) и список групп, к которым он принадлежит.

Имена групп связываются с GID в файле /etc/group. Это текстовый файл с четырьмя разделенными двоеточием полями. Первое поле - это имя группы, второе – зашифрованный пароль, третье - ID группы, а четвертое - разделенный запятыми список членов группы. Этот файл может быть безопасно отредактирован вручную.

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

Примеры:

# pw groupadd teamtwo – добавление группы teamtwo

# pw groupshow teamtwo– проверка существования группы teamtwo teamtwo:*:1100:

Число 1100 это GID группы teamtwo. На данный момент в, teamtwo нет членов, и поэтому она практически бесполезна. Изменим эту ситуацию, добавив пользователя user в группу teamtwo.

#pw groupmod teamtwo -M user

#pw groupshow teamtwo teamtwo:*:1100:user

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

#pw groupmod teamtwo -m db

#pw groupshow teamtwo teamtwo:*:1100:jru,db

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

# id user -- определение принадлежности пользователя к группам

13

uid=1001(user) gid=1001(user) groups=1001(user), 1100(teamtwo)

Таким образом, пользователь user является членом групп user и teamtwo.

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

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

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

Для изменения владельца-пользователя для файла используется команда chown, а владельца-группы команда chgrp.

Примеры:

$ chown sergey file1 file2 – пользователь sergey стал владельцем файлов file1 и file2.

$ chgrp staff * – установка группы staff в качестве владельца всех файлов текущего каталога.

Владение файлом определяет тот набор операций, который пользователь может совершить с файлом. Часть из них, такие как изменение прав доступа или владельца файла, может осуществлять только владелец (или суперпользователь), другие операции, такие как чтение (r), запись (w) и запуск на выполнение (x) дополнительно контролируются правами доступа. Права доступа к файлу можно посмотреть с помощью команды ls –l. Они представляются в следующем формате:

d

rwx

rwx

rwx

|

|

|

|

|

|

|

| Доступ для остальных пользователей

|

|

| Доступ к файлу для членов группы

|

| Доступ к файлу владельца

14

| Тип файла (директория)

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

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

Атрибуты файла и доступ к нему, можно изменить командой:

chmod <коды защиты> <имя файла>

Коды защиты могут быть заданы в числовом или символьном виде. Для символьного кода используются:

знак плюс (+) – добавить права доступа; знак минус (-) – отменить права доступа;

r, w, x –доступ на чтение, запись, выполнение;

u, g, o, a – владелец-пользователь, владелец-группа, остальные, все.

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

Примеры:

chmod g+rw,o+r file – установка атрибутов чтения и записи для группы и чтения для всех остальных пользователей;

chmod o-w file – отмена атрибута записи у остальных пользователей;

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

3.5.Задание на лабораторную работу

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

2.Используя команду su, подключиться к системе в качестве администратора.

3.Создать нового пользователя с помощью команды adduser.

4.Обязательно выйти из системы с помощью команды exit и войти в неѐ под новой учетной записью!

5.Убедиться, что создан домашний каталог для нового пользователя.

15

6.Найти созданных пользователя и группу в файлах /etc/passwd и /etc/group.

7.С помощью команды passwd изменить для своей новой учѐтной записи пароль.

8.С помощью команды chpass изменить для своей новой учѐтной записи полное имя пользователя.

9.Войти в систему под учѐтной записью user. Используя команду su, подключиться к системе в качестве администратора.

10.С помощью команды pw groupadd создать новую группу пользователей. 11.Добавить своего нового пользователя в новую группу с помощью команды

pw groupmod.

12.С помощью команды id определить принадлежность вашего пользователя к группам.

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

14.Изменить атрибуты файла test на r-xr-xr-x, задавая их в текстовом виде.

15.Изменить атрибуты файла test2 на r-xr-xr-x, задавая их в числовом виде.

16.Удалить созданную учѐтную запись с помощью команды rmuser. 17.Обязательно выйти из системы с помощью команды exit!

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

1.Какой командой можно получить список работающих пользователей и сохранить его в файле?

2.Для чего нужны пользователи и группы в системе?

3.Перечислите основных пользователей системы и группы.

4.Назовите атрибуты пользователя.

5.Назовите атрибуты группы.

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

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

8.Каким образом можно изменить права доступа к файлам?

9.Что означает владелец-пользователь и владелец-группа?

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

4.Использование команд для фильтрации и обработки текстов

4.1.Основные команды

16

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

 

Таблица 8.1.

 

 

 

Утилита

Назначение

 

cat

вывод и конкатенация (объединение) файлов;

 

grep

поиск по шаблону, заданному регулярным выражением;

 

cmp

сравнение файлов;

 

cut

вырезание полей из текста;

 

paste

сцепление строк файлов;

 

head

распечатка начала файла;

 

tail

распечатка последних строк файла;

 

sort

сортировка;

 

sed

потоковый текстовый редактор;

 

awk

многофункциональная утилита для обработки текстов;

 

 

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

 

wc

подсчѐт числа строк в файле.

 

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

 

Таблица 8.2.

 

 

 

Метасимвол

Назначение

 

^

начало строки;

 

$

конец строки;

 

[]

любой символ, заключенный в квадратные скобки; чтобы

 

 

задать диапазон символов, в квадратных скобках указываются

 

 

через дефис первый и последний символы диапазона;

 

[^]

любой символ, кроме символов, заданных в квадратных

 

 

скобках;

 

.

любой отдельный символ;

 

\

отменяет специальное значение следующего за ним

 

 

метасимвола;

 

*

указывает, что предыдущий шаблон встречается 0 или более

 

 

раз;

 

 

17

\{n\}

указывает, что предыдущий шаблон встречается ровно n раз;

\{n,\}

указывает, что предыдущий шаблон встречается не менее n

 

раз;

\{,n\}

указывает, что предыдущий шаблон встречается не более n

 

раз;

\{n,m\}

указывает, что предыдущий шаблон встречается не менее n и

 

не более m раз.

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

^the

начинающихся с буквосочетания "the";

be$

заканчивающихся буквосочетанием "be";

[Ss]igna[lL]

содержащих буквосочетания: "signal", "Signal", "signaL"

 

или "SignaL";

\.

содержащих точку;

^...th

содержащих символы "th" в 4-й и 5-й позициях;

^.*\{53\}th

содержащих символы "th" в 54-й и 55-й позициях;

^.*\{10,30\}th

содержащих символы "th" в любых позициях между 11-й

 

и 31-й;

^.....$

состоящих из 5 любых символов;

^t.*e$

ищутся строки, начинающихся с буквы "t" и

 

заканчивающиеся буквой "e";

[0-9][a-z]

содержащих комбинацию: цифра-прописная буква;

[^123]

содержащих цифр "1" или "2" или "3"

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

grep [опции] [шаблон] [файл...]

Опции команды grep приведены в таблице 8.3. Если команда задана без опций, выводятся все найденные строки.

 

Таблица 8.3.

 

 

 

Опция

Назначение

 

-c

выводится только число строк файла, соответствующих

 

 

шаблону

 

-f файл

чтение шаблона из файла

 

-h

не выводятся имена файлов, в которых найдены строки,

 

 

соответствующие шаблону

 

-i

игнорирование верхнего/нижнего регистров

 

 

18

-l

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

 

соответствующие шаблону

-n

перед каждой выводимой строкой выводится ее номер в файле

-v

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

-w

ищутся слова, полностью соответствующие шаблону

-x

ищутся строки, полностью соответствующие шаблону

Примеры:

Задание 1. В файле query4 выбрать все строки, в которых дата продажи - весна 1990 г. Дата представлена в формате «год-месяц-число», где месяц – три первых символа, например, 8 марта 2011 года будет «2011-mar-08».

$ grep "[0-9]-[MA][AP][RY]-[0-9]" ./lab8/query4

Первая буква весеннего месяца должна быть "M" или "A", вторая - "A" или "P", третья - "R" или "Y". Из этих букв можно сложить буквосочетания, обозначающие весенние месяцы, а все другие возможные буквосочетания не являются обозначениями месяцев вообще. Таким образом, шаблон для распознавания весеннего месяца будет: "[MA][AP][RY]".

Задание 2. В файле query2 выбрать все строки, в которых в адресе есть улица ("ST."). Поле адреса в файле начинается с 31-й позиции. Длина адреса составляет не более 20 символов.

$ grep "^.\{30\}.*\{0,17\}ST\." ./lab8/query2

Задание 3. В файле query1 выбрать все строки, в которых зарплата составляет целое число тысяч. Поле зарплаты в файле начинается с 60-й позиции.

grep "^.\{59\}[0-9]\{1,\}000[^0-9]*" ./lab8/query1

Если зарплата составляет целое число тысяч, то в ней содержится одна или несколько цифр, за которыми следует три нуля - подвыражение: "[0- 9]\{1,\}000". Однако возможна (теоретически) зарплата, например "10001", поэтому стоит позаботиться о том, чтобы следующие за тремя нулями символы были отличны от значащих цифр. Таких символов может быть сколько угодно, и это условие можно обеспечить подвыражением: "[^0-9]*".

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

head -5 ./lab8/query1 – вывод первых пяти строк файла;

19

tail -3 ./lab8/query1 – вывод трѐх последних строк файла;

head -5 ./lab8/query1 | tail -3 >./myfile – вывод строк c 3 по 5

файла query1 и помещение результата в файл myfile.

4.2.Задание на лабораторную работу

1.В файле query4 выбрать все строки, в которых код покупателя - 201.

2.В файле query2 выбрать все строки, в которых индекс начинается с '11'.

3.В файле query3 выбрать все строки, в которых минимальная цена не меньше

10.

4.В файле query1 выбрать все строки, в которых имя сотрудника начинается на букву 'R'.

5.В файле query3 выбрать все строки, в которых в названии есть слово 'TENNIS', а цена установлена в 1990 г.

6.В файле query4 выбрать все строки, в которых фамилия продавца -

'DUNCAN'.

7.Вывести 20 символов с конца файла.

8.Вывести 10 строк с конца файла.

9.Вывести 15 строк в обратном порядке.

10.Просматривать файл с конца в процессе его создания.

11.Отсортировать последние 20 строк файла.

12.Вывести количество пользователей подключенных к системе.

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

1.Перечислите основные утилиты для обработки текстов.

2.Назначение утилиты grep.

3.Что такое регулярное выражение и для чего оно предназначено?

4.Назначение утилит head и tail.

5.Назначение утилиты cut.

6.Назначение утилиты sort.

7.Возможности потокового редактора sed.

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

5.Программирование на языке командного интерпретатора

5.1.Командные интерпретаторы

В предыдущих лабораторных работах взаимодействие с операционной системой FreeBSD осуществлялось с помощью командного интерпретатора Bourne Shell. Он является самым распространенным, но не единственным. Существует еще

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]