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

except_4

.pdf
Скачиваний:
65
Добавлен:
24.06.2017
Размер:
11.13 Mб
Скачать

7. Субъекты и объекты доступа в операционной системе. Взаимодействие процессов в ОС Linux. Механизм сигналов. Реакция на получение сигнала. Игнорирование и перехват сигналов.

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

Объектом системы мы будем называть любой её идентифицируемый ресурс (например, файл или устройство). Доступом к объекту системы – некоторую заданную в ней операцию над этим объектом (чтение или запись).

Субъектом доступа называют любую сущность, способную инициировать выполнение операций над элементами ОС. (пользователи,процессы). Процесс - это программа, выполняющаяся в оперативной памяти компьютера.

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

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

kill [-SIG] PID [PID..]

SIG — это номер сигнала или наименование сигнала. PID — process ID Вот некоторые виды сигналов:

Номер сигнала

Наименование сигнала

Что делает

 

(SIG) для kill

 

 

 

 

3

SIGQUIT

Keyboard quit

 

 

 

9

SIGKILL

Убить процесс полностью

 

 

 

15

SIGTERM

Остановить(даже

 

 

заблокированный)

18

SIGCONT

Продолжить

 

 

 

19

SIGSTOP

Остановить даже

 

 

заблокированный процесс

Чтобы посмотерь все возможные сигналы в консоли: kill -l

Каждый пользователь может использовать kill для своих процессов, root — для всех.

Существует три варианта реакции процесса на сигнал:

1.Принудительно проигнорировать сигнал.

2.Произвести обработку по умолчанию:

a)проигнорировать,

b)остановить процесс (перевести в состояние ожидания до получения другого специального сигнала)

c)завершить работу с образованием core файла или без него.

3.Выполнить обработку сигнала, специфицированную пользователем.

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

Игнорирование сигналов.

Взаголовочном файле <signal.h> определены две константы SIG_DFL и SIG_IGN. SIG_DFL означает выполнение действий по умолчанию - в большинстве случаев - окончание процесса, а SIG_IGN — означает

игнорировать сигнал.

Впрограмме можно определить signal(SIGINT, SIG_IGN); Если теперь нажать на комбинацию клавиш CTRL+C, ничего не произойдет, так как сигнал SIGINT игнорируется.

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

Сигнал перехватывается, если установлено правило перехвата с помощью команды trap, которая определяет действия(команды) при перехвате сигналов.

trap [COMMANDS] [SIGNALS]

command– что именно необходимо выполнить при перехвате сигнала; signals– список сигналов, которые необходимо перехватывать. Сигналы можно указывать как в полном виде –SIGTERM, так и в виде кода – 1, 2 и т.д. Пример:

trap 'echo "Exit"; exit 1' 1 2 3 15

Когда во время ожидания завершения команды Bash принимает сигнал, для которого была установлена команда trap, команда trap не будет выполняться до завершения исполняемой команды. Когда Bash с помощью встроенной команды wait ожидает выполнение асинхронной команды, прием сигнала, для которого была задана команда trap, вызовет немедленный выход из встроенной команды wait с кодом возврата, большим 128, а затем сразу будет выполнена команда trap.

8.Управление доступом пользователей к файлам в ОС Linux. Три категории пользователей. Суперпользователь root. Назначение владельца файла и группы-владельца файла при создании файла. Изменение владельца файла и группы-владельца файла.

Каждый пользователь в системе имеет свой уникальный идентификационный номер (user-ID, или UID). Также пользователи могут объединяться в группы, которые в свою очередь имеют group-ID, или GID. Чтобы узнать свой UID и GID, необходимо ввести команду id.

У каждого файла есть индивидуальные права доступа, хранящиеся в inode, которые разбиты на три группы:

1.Доступ для пользователя-владельца файла (owner).

2.Доступ для группы-владельца файла (group).

3.Доступ для остальных пользователей (others).

$ ls -al

 

drwxr-xr-x 6 hp hp

4096 апр 24 19:52 vm

root - суперпользователь системы (пользователь с идентификатором0).Это пользователь обладает наивысшими привилегиями в ОС.

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

процесса, создающего файл.

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

chown пользователь[:группа] файл… chgrp группа файл… (меняет только группу)

Например:

chown root foofile

Теперь файл foofile принадлежит к пользователю root chown : admins foofile

Теперь файл foofile принадлежит к группе admins

Чтобы изменить пользователя или пользователя и группу для всей директории используется флаг -R (для chgrp также)

chown - R student foodir

Теперь папка foodir и файлы в ней принадлежат пользователю student.

Важно! Только root может менять владельца файла! (Only root can change the ownership of a file.)Группу владельца файла может также изменять и сам владелец файла.

9. Управление доступом пользователей к файлам в ОС Linux. Права доступа к файлам и каталогам в ОС Linux. Кодирование прав доступа. Влияние прав доступа на выполнение операций над файлами и каталогами.

Просмотреть текущие права доступа можно по команде:

ls -l filename – для файла

ls -ld /dirname – для каталога

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

user – имя владельца файла;

users – имя группы владельца файла.

Типы файлов:

Обычный файл (-)

Каталог (d)

Файл символьного устройства (с)

Файл блочного устройства (b)

Сокет (s)

Именованный канал (p)

Символическая ссылка (l)

Выделяют 3 группы, которые могут иметь права доступа к файлам:

user (u) – владелец файла;

group (g) – группа владельца файла;

others (o) – все остальные;

и3 вида прав доступа для каждой группы:

право на чтение (r);

право на запись (w);

право на исполнение (x);

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

SUID (Set User ID) – если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;

SGID (Set Group ID) – аналогичен SUID, но относится к группе (пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит). Если бит SGID установлен для каталога, то создаваемые в нем объекты будут получать группу владельца каталога, а не пользователя;

Sticky-bit – используется в основном для каталогов. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.

Специальные права используются довольно редко, поэтому при выводе команды ls -l символ, обозначающий указанные атрибуты, закрывает символ стандартных прав доступа. Пример:

В приведенном примере не понятно, rwt – это rwили rwx? Если t маленькое, значит x установлен. Если T большое, значит x не установлен. То же самое правило распространяется и на s.

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

Разрешение

Влияние на файлы

Влияние на каталоги

 

 

 

r (read)

Можно прочитать

Можно просмотреть содержимое

 

содержимое файла

каталога (имена файлов в каталоге)

 

 

 

w (write)

Можно изменить

Можно создать или удалить любой

 

содержимое файла

файл в каталоге

 

 

 

x (execute)

Файл может быть

Можно обращаться к содержимому

 

выполнен как команда

каталога (зависит от разрешений

 

 

файлов в каталоге)

10. Управление доступом пользователей к файлам в ОС Linux. Назначение прав доступа к файлам и каталогам при создании файла. Маска доступа. Изменение прав доступа.

Являясь владельцем файла, вы можете воспользоваться утилитой chmod для изменения прав доступа к этому файлу. Утилите chmod можно указать:

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

числовые (абсолютные) аргументы.

Символьные аргументы

chmod [ключи] кто оператор право список_файлов

Аргумент кто: u – пользователь, g – группа, o – все остальные, a – все. Аргумент оператор: “+” – добавление прав, “-” – удаление прав, “=” – установка прав (переустанавливает все остальные права).

Аргумент право:

r – право на чтение;

X – превращение файла в исполняемый,

w – право на запись;

только если он является каталогом или

x – право на выполнение;

если у класса пользователей «все

s – установка ID пользователя

остальные» есть права на выполнение;

или ID группы в качестве

u – установка таких же прав, как у

владельца выполняемого файла

владельца;

(setuid, setgid);

g – установка таких же прав, как у группы;

t – установка бита флажка

o – установка таких же прав, как у всех

ограничения прав на удаление

остальных.

(sticky bit);

 

Пример:

chmod a=rw temp

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

Числовые аргументы

chmod [ключи] режим список_файлов

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

r – заменяют на 4; w – заменяют на 2; x – заменяют на 1.

Для получения числа, представляющего права доступа для владельца, для группы или для всех остальных, нужно сложить соответствующие числа.

Пример:

chmod 640 temp

(число 6 – дает владельцу права на чтение и запись (4+2), число 4 дает группе право на чтение, число 0 удаляет все права для остальных пользователей)

Атрибуты setuid, setgid и sticky bit устанавливаются следующим образом:

Режим

Значение

4000

Установка ID пользователя при выполнении программы (setuid)

2000

Установка ID группы при выполнении программы (setgid)

1000

Бит флажка ограничения прав на удаление (sticky bit)

Назначение прав доступа к файлам и каталогам при создании файла. Маска доступа.

Установка маски прав доступа:

umask [маска]

где маска – трехзначное восьмеричное число (или символьное значение).

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

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

Исключение составляет утилита mkdir, которая предполагает, что вам нужен установленный бит выполнения (доступ в случае работы с каталогом).

Пример:

umask 022

(маска, имеющая значение 022, после вычитания из 777 дает права доступа 644 (rw–r––r––) для файла и 755 (rwxr–xr–x) для каталога)

11.Управление доступом к файлам в linux. Списки прав доступа ACL: формат, хранение, создание, удаление, права по умолчанию для каталогов.

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

Права доступа в ACL могут даваться как именованным пользователям и группам, так и по UID и GID в дополнение к стандартным категориям(т. е. к пользователю-создателю, его группе и другим пользователям). Применяются списки прав к файлам и директориям.

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

Просмотр некоторых(не всех!) деталей списков ACL:

$ ls -l myfile.txt

-rwxrw----

+ 1 student mygroup 130 Mar 19 20:36 myfile.txt

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

Тройки битов здесь интерпретируются так:

User – настройки user ACL, которые совпадают со стандартными правами Group – текущие ACL mask настройки; это не group из стандартных прав! Other – other ACL настройки, так же как и в стандартных правах

Просмотр и структура ACL файла и директорий:

$ getfacl myfile.txt

# file: myfile.txt

//информация о файле

# owner: student

//о владельце,

# group: mygroup

//о группе владельца

 

//на 4-ой строчке – setuid, setgid, если они есть(#flags)

 

//настр. user

user::rwx

//права для student – rwx

user::james:---

// права для james

user::1005::rwx

#effective:rw- //для uid=1005 права rwx, но маска ограничивает их

только до rw-(a.k.a. effective permissions ) //настройки group - аналогично

group::rwx #effective:rw-

group:sodor:r--

//настройки mask

mask::rw-

//настройки other

other::---

Кроме того, также в ACL директорий имеются настройки по умолчанию, и они имеют вид:

default:user::rwx

default:group:sodor:r-x

default:mask::rwx

default:other::---

Mask – задает максимально возможные права доступа для именован. user, group-owner и именован. group. Но она не задает ограничения для владельца и other!

Установка, удаление, модификация ACL:

setfacl <опции> <ключ> <список правил> <объект>

Ключи: -m модификация указанных правил -x удаление указанных правил --set полная перезапись правил

Опции: -b

удаляет все права, сохраняя основные правила

-k

удаляет права default

-d

устанавливает права default

-restore=file

восстанавливает права на объекты из указанного файла

-R

применить рекурсивно

Формирование списка правил:

u:<uid>:<perms>*

права для user

g:<gid>:<perms>*

права для group

m:<perms>*

задает маску для effective permissions

o:<perms>*

права для other

Примеры:

Назначить пользователю alex права на чтение и запись:

$ setfacl -m u:alex:rw myfile.txt

Назначить группе право на чтение:

$ setfacl -m g:teachers:r myfile.txt

12. Управление пользователями в ОС Linux. Характеристики бюджета пользователя. Формат файла /etc/passwd.

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

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

-пользователь root

-системные (фиктивные) пользователи

-обычные пользователи

Информация о пользователях хранится в файлах:

Файл

Описание

/etc/passwd

пользователи

/etc/group

группы пользователей

/etc/shadow

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

/etc/gshadow

зашифрованные пароли групп

Дополнительная информация располагается в файлах:

Файл

Описание

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

/etc/login.defs

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

/etc/skel/

каталог, файлы из которого копируются в домашний

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

Файл /etc/passwd имеет следующий текстовый формат:

login:X:UID:GID:name:home:shell

В случае, если пароль хранится в зашифрованном виде в файле /etc/shadow, то вместо пароля указывается символ x (икс).

Файл /etc/group имеет следующий текстовый формат:

group_name:password:GID:user1,user2,user3

К файлам /etc/passwd и /etc/group должны быть заданы права доступа: чтение и запись для пользователя root и только чтение - для всех остальных

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

Команда

Описание

useradd

добавить нового пользователя

passwd

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

usermod

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

userdel

удалить учетную запись пользователя

Соседние файлы в предмете Безопасность операционных систем