Лекция 2 Права доступа
Процессы
ps -f
top
Процессы: программа top
top (столбцы вывода)
Приоритет процесса PRI и значение nice
Команда nice
Команда nice nice <приоритет> <выполняемая команда>
Команда nice
Команда renice
Сигналы
Важно!
id [имя пользователя]
Доступ к файлу и каталогу
Виды доступа
Виды доступа
Иерархия прав доступа
Иерархия прав доступа
Интересно!
Еще три свойства объекта: setuid, setgid, sticky bit
Установка этих битов выполняется командой chmod
Права вновь созданных объектов
Смена маски
Расширенные ACL- атрибуты
ACL атрибуты (access-control list)
chattr, lsattr
chattr [опции][оператор(+-=)] [ACL атрибуты] файл
Защита от удаления
Защита файлов /etc/passwd и /etc/shadow(отключаем создание пользовательских аккаунтов)
Добавление данных в файл без изменения уже существующих
Защита всех объектов через директорию

Lektsia_2_Linux (1)

1. Лекция 2 Права доступа

2. Процессы

Выполняющаяся программа называется в
Linux процессом.
Все процессы система регистрирует в таблице
процессов, присваивая им уникальный
идентификатор процесса PID.
Для просмотра процессов можно
воспользоваться утилитами
ps [ключи] [параметры]
top [ключи] [параметры]
2

3. ps -f

3

4. top

4

5. Процессы: программа top

Она выводит постоянно обновляющийся
список
процессов
с
сортировкой
по
процессорному времени в порядке убывания.
Работают клавиши:
Q – выход из top;
U – показывать только пользовательские
процессы;
F – изменить столбец сортировки;
Н – выдает справку по остальным командам
5

6. top (столбцы вывода)

PID –идентификатор процесса
USER –имя пользователя, запустившего процесс
PR –приоритет процесса
Ni –значение nice
VIRT- виртуальная память, используемая процессором(Кб)
RES-размер процесса, не перемещенный в область подкачки
SHR-объем памяти, разделяемой с другими процессами
S-состояние процесса:S-ожидание(находится в swap), R- выполняется, Zзомби;T-остановлен; D-непрерывный сон(ожидает сигнал от
оборудования)
%CPU-занимаемое процессом процессорное время
%MEM-использование памяти процессом
TIME+-процессорное время, израсходованное с момента запуска
COMMAND-команда, используемая для запуска процесса.
6

7. Приоритет процесса PRI и значение nice

• В работающей системе Linux выполняется множество
процессов. И каждому запущенному процессу
назначается приоритет. Чем больше значение
приоритета, тем меньше сам приоритет. То есть,
процесс с приоритетом 15 будет более
приоритетным, чем процесс с приоритетом 20.
• Более приоритетные процессы получают больше
процессорного времени. Они более отзывчивы,
выполняются более быстро. Но при этом, они сильнее
нагружают процессор и замедляют все остальные
процессы.
7

8. Команда nice

•Но никакие пользователи и даже root не могут управлять
приоритетами процессов. Они могут управлять другим
значением — nice.
• Диапазон nice имеет 40 значений от -20 до +19. По
умолчанию, любой процесс Linux, созданный
пользователем, имеет значение nice равное 0
и приоритет равный 20.
• Разница в том, что priority — это реальный приоритет
процесса в данный момент, а nice — подсказка для ядра
указывающая нужно ли увеличить или уменьшить
приоритет процессу.
8

9. Команда nice nice <приоритет> <выполняемая команда>

Команда nice
nice <приоритет> <выполняемая команда>
Для пользовательских процессов, в
большинстве случаев,
значение priority можно рассчитать по
следующей формуле:
priority = 20 - nice.
Таким образом, процесс с nice=3
(пишется nice -3) имеет priority=17,
а процесс с nice=-7
(пишется nice - - 7) имеет priority=27.
9

10.

Как видите команды md5sum работают параллельно. Но у одной команды
приоритет стал 12, а у другой 18. При этом более приоритетный процесс 10
получает больше процессорного времени, это видно в колонке TIME+.

11. Команда nice

• При этом:
• обычный пользователь может лишь
увеличить значение nice своего процесса;
• root может уменьшить или
увеличить nice своего или чужого процесса.
11

12.

• Если мы хотим указать отрицательное
значение для nice. Другими словами,
уменьшить nice, тем самым увеличив
приоритет. То должны
использовать двойное тире и sudo (так как
обычный пользователь не имеет право
запускать процессы с повышенным
приоритетом)
12

13.

13

14. Команда renice

Чтобы изменить приоритет уже работающего
процесса нужно использовать команду
renice -n <значение> -p <pid>.
И этой командой может пользоваться
только root.
14

15.

15

16. Сигналы

Сигнал – короткое сообщение, посылаемое
системой или процессом другому процессу.
Сигналы 9(KILL) и 19(STOP) всегда обрабатывает
система.
9- завершить процесс принудительно
19-остановить процесс до сигнала 18(CONT)
Передавать сигналы из командной строки
можно командой #kill –сигнал PID
kill -9 345
kill KILL 345
PID процесса можно узнать #ps -f
16

17.

17

18. Важно!

• Каждый процесс системы обязательно
принадлежит какому-нибудь пользователю.
UID – обязательное свойство любого
процесса в Linux
• Все процессы, запущенные пользователем
во время сессии будут иметь его
идентификатор(в выводе команды ps мы
видим не числовой UID, а входное
имя(login)).
18

19. id [имя пользователя]

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

20. Доступ к файлу и каталогу

Рассмотрим процедуру чтения файла
cat file1
Здесь действующим по отношению к file1 субъектом
выступает процесс cat.
И так происходит во время любого действия с
объектом файловой системы, он будет являться
параметром какого то процесса!
Файловый объект всегда идет в сцепке с процессом.
Факт использования файла процессом называется
доступом к файлу, а способ взаимодействия –
видом доступа.
20

21. Виды доступа

Видов доступа в Linux три
• чтение
• запись
• выполнение/использование
21

22. Виды доступа

• Чтение(r)- разрешает получать
информацию из объекта
• Запись (w) –разрешает изменять
информацию из объекта
• Использование(х) – разрешает выполнять
операции, специфичные для данного типа
объекта
22

23.

23

24. Иерархия прав доступа

24

25.

Любой пользователь Linux по отношению к любому файлу
может выступать в трех ролях:
1. Владелец (user).
2. Член группы, которой принадлежит файл (group).
3. Посторонний (other), не имеющий никаких отношений
собственности на файл.
Права доступа к файлу владельца, группы и посторонних
определяют строку атрибутов.
Строка атрибутов – это набор символов rwxrwxrwx, где
некоторые символы могут замещаться на тире. Буквы
отражают три вида доступа: чтение, запись, исполнение.

26. Иерархия прав доступа

При выяснении прав доступа между файлом и пользователем, запустившим
процесс, роль пользователя определяется следующим образом:
1.Если UID файла =UID процесса, то пользователь –
владелец файла(первые тройка прав в строке
атрибутов)
2.Если GID файла =GID пользователя, от имени
которого запущен процесс, то пользователь –
член группы, которой принадлежит файл (вторая
тройка прав в строке атрибутов)
3. Иначе пользователь- посторонний( третья тройка
прав строки атрибутов)
!!!! Root может ВСЕ.
26

27.

Права пользователя можно изменить с помощью команд:
#chown newuser:newgroup// Сменить владельца, группу.
#chmod
/ /Сменить права
х
#chmod a+w // Всем добавить возможность записи.
#chmod go=r // Группе и посторонним - только чтение.
#chmod go+x-w // Группе добавить выполнение и убрать запись.
#chmod u+w,og+r-w // Владельцу – возможность записи, группе и
посторонним – добавить чтение и убрать запись.

28.

Восьмеричное представление
прав доступа:
Владелец
Группа
Посторонние
rwx
111
r-x
101
r-100
2 1 0 (позиция)
2 1 0 (позиция)
2 1 0 (позиция)
1 * 2² + 1 * 2¹ + 1 * 2º = 7 1 * 2² +0 * 2¹+ 1 *
2º = 5
#chmod 754 // Допускается запись и в таком виде.
1 * 2² = 4

29. Интересно!

• Команда chmod примененная к
символьной ссылке изменят права файла
на который ссылается ссылка.
• Команда
chmod --reference=file1.txt file2.txt
Означает что file2.txt будут назначены такие
же права как у file1.txt
29

30. Еще три свойства объекта: setuid, setgid, sticky bit

Практический интерес представляет собой установка бита setuid для
исполняемых файлов, setgid для каталога, Sticky bit устанавливается
только для каталога.
Если бит setuid установлен для исполняемого файла, то работать
этот процесс будет с правами владельца, а не пользователя
запустившего процесс.
Установка setgid для каталога означает, что все создаваемые
объекты внутри каталога будут в качестве группы владельца
принимать группу владельца каталога, а не пользователя создающего
объект. Этот бит используется для создания общедоступных каталогов
пользователей.
Sticky bit установленный для каталога, разрешает удалять и
переименовывать файлы этого каталога только владельцу или root,
даже если право записи будет установлено и для остальных
пользователей.
30

31. Установка этих битов выполняется командой chmod

• chmod u+s file1.exe
установка setuid на исполняемый файл
• chmod g+s /home/user1/examples
установка setgid на каталог
• chmod u+t /home/user2
установка sticky bit на каталог
31

32.

Еще один вариант установки этих свойств числовой
Впереди числовых прав добавить цифру
• 1 – sticky bit
• 2 – setgid
• 4 – setuid
chmod 4666 file1.exe
//установка effective UID через setuid для
файла
32

33. Права вновь созданных объектов

При создании объекта его права = правам поумолчанию. Задаются они при помощи числового
шаблона – маски. Узнать маску
#umask
0022
Права по-умолчанию для файла= 0666-маска
Права по-умолчанию для каталога= 0777-маска
То есть по-умолчанию права у нового файла
0644(rw-r—r--), у каталога 0755(rwxr-xr-x)
33

34. Смена маски

С помощью команды umask можно изменить шаблон маски.
Цифра 7 в шаблоне маски запрещает все права для своей триады.
34

35.

35

36. Расширенные ACL- атрибуты

• Для родной файловой системы Linux ext2/ext3/ext4
определены дополнительные атрибуты для
объекта.
• Расширенные атрибуты носят название
ACL-атрибуты файловых объектов (access-control list).
• С ними работает не chmod, а chattr
36

37. ACL атрибуты (access-control list)

37

38. chattr, lsattr

• Утилита chattr изменяет атрибуты файлов и чаще всего
используется для установки/снятия специальных
атрибутов для предотвращения модификации и
удаления файла или каталога даже root.
Наиболее употрибительные флаги i-нельзя
модифицировать файл (нельзя переименовать,
исполнять, записывать, создавать символьные
ссылки, снимает атрибут только root), t-файл при
сохранении нельзя разбивать на блоки, a-добавление
данных в файл без изменения существующих данных ,uпри удалении файла его данные будут сохраняться и
пользователь сможет восстановить его.
• Утилита #lsattr путь - просмотр текущих атрибутов.
Утилиты chattr и lsattr находятся в пакете 'e2fsprogs‘
38

39. chattr [опции][оператор(+-=)] [ACL атрибуты] файл

39

40. Защита от удаления

#chattr +i examples/
#chattr +i file.conf
#lsattr
----i----------- ./examples
----i----------- ./file.conf
#rm –r examples/
rm:cannot
#rm file.conf
rm:cannot
#chmod 755 file.conf
chmod:cannot
#mv examples/ examples_new
mv:cannot
#chattr –i /examples file.conf
#lsattr
---------------- ./examples
---------------- ./file.conf
#rm –rf *
#ls
Total 0

41. Защита файлов /etc/passwd и /etc/shadow(отключаем создание пользовательских аккаунтов)

#chattr +i /etc/passwd
#chattr +i /etc/shadow
#useradd test
useradd:cannot

42. Добавление данных в файл без изменения уже существующих

#cat file3.txt
Это пример для атрибута a
#chattr +a file3.txt
#lsattr file3.txt
-----a---------- file3.txt
#echo “добавляем с перезаписью”>file3.txt
-bash:file3.txt:operation not permitted
#echo “добавляем в конец”>>file3.txt
#cat file3.txt
Это пример для атрибута a
добавляем в конец

43. Защита всех объектов через директорию

#chattr –R +i myfolder
//рекурсивная (R)
защита от модификаций для всех
элнментов папки: нельзя переименовать,
создать ссылки, исполнять, записывать,
изменять права, удалять.
#rm -rf myfolder
rm:cannot
Снять может только root #chattr –R -i myfolder
43

44.

• На этом все, спасибо за внимание.
44
English     Русский Правила