except_4
.pdf7. Субъекты и объекты доступа в операционной системе. Взаимодействие процессов в ОС 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 |
удалить учетную запись пользователя |