Салют ,
Данная лабораторная работа посвещена изучению *nix машин и как они работают, позволяет приобрести навыки для работы с терминалом/ консолью и приобрести знания по работе ОС. В лабоработрной работе описываются материалы по командам, скриптам и подключаемым приложениям.
Для сдачи данной работы также будет требоваться ответить на дополнительыне вопросы по описанным темам.
Структура репозитория лабораторной работы
Материалы
Давайте начнем с описания как это работает, но следует подойти к этому вопросу изначально с терминов и основных элекментов, таких как:
| Раздел | Описание | Основные элементы |
|---|---|---|
| Терминал | Устройство ввода/ вывода | |
| Оболочка (shell) | Интерпретатор команд, обеспечивающий интерфейс для взаимодействия пользователя с функциями ОС (в Linux по умолчанию bash). |
|
| Консоль | Интерфейс командной строки с командами для работы с файлами. |
|
| Файловая система | Иерархия каталогов и файлов с правами доступа пользователей. |
|
| Переменные окружения | Переменные, задающие контекст работы пользователя и процессов. |
|
Права доступа
При монтировании образа для каждой *nix ОС задаются права доступа к файлам и путям каталогов, которые позволяют их индивидуально профилировать, а также изменять, но давайте посмотрим на общую картину, советую ознакомиться изначально с Петром Девянином и его описанием take-grant модели. Система безопасности построена на:
- chmod — изменение прав доступа
$ chmod [-R] [option] [rules] # пользователь может менять только у принадлежащих ему файлов, а root у всех файлов в системе
- umask — маска прав доступа дляполученияреальныхправвновь .
- chown — изменение владельца
- chgrp — изменение группы
$ chgrp [-R] group ... file # изменение группы файла для пользователя только там, где он является ее членом
У каждого файла или каталога имеются определенные права доступа, такие как:
- r — право на чтение из файла / просмотр содержимого директории
- w — право на запись в файл / создание, удаление файлов в директории
- x — право на исполнение / доступ в директорию и сабдиректории
По умолчанию права для директории 777, а для файлов 666. А теперь давайте посмотрим, как можно поменять права. На сейчас все *nix поддерживают POSIX ACL, который позволяет указать права доступа для конкретных пользователей и групп.
$ getfacl [option] file ... # показывает список access list
$ setfacl [option] file ... # устанавливает или удаляет access list
-m # изменение или установка
-х # удаление
# Пример
$ setfacl -m u:user1:rw file # для пользователя
$ setfacl -m g:users:r file # для группы
$ setfacl -m m::rw file для # маски
Процессы
А теперь давай посмотрим, что каждому выполняемому процессу присваивается уникальный номер PID Process ID, где его ID после завершения процесса высвобождается. У всех процессов в системе кроме самого первого (PID = 1 - init) есть родительские, которые запускают процесс.
$ ps [option] # список процессо в всистеме
-a # список всех процессов привязанных к терминалу
-x # ... не привязанных к терминалу
—е # показывает все процессы системы
-f # показывает дерево процессов
-u user # список процессов пользователя
$ pstree # дерево процессов
$ kill [-l] PID # пример как можно вывести спиок всех сигналов
$ killall [-signal] # определение процесса по имени
После завершения работы родительского процесса у наследователя становится init. Также, если shell заканчивает работу, то все процессы будут завершены. Но если надо, что бы программа работала далее без оболочки, то ее необходимо запускать при помощи nohup, так как отключает программу от терминала. А теперь, все вы знаете про daemon, а это именно то, что работает после запуска и сразу же отключается от терминала.
Задание
- 1. Выведите на терминале и проанализируйте следующие команды консоли
- 2. Выведите утилитой
treeсписок вложенности дерева диреторий для каталога своего пользователя. Далее используйтеls -aи укажите отличие отls -l. - 3. Используйте утилиту
fileиdfдля определения какая файловая система на разделе/dev/sda1. - 4. Выведите на терминале и проанализируйте следующие команды консоли
$ which vi
$ locate hello.py
$ sudo updatedb
$ locate hello
$ touch screen
$ find ~ -name screen
$ locate screen
$ sudo updated
$ locate screen
- 5. Используйте конструкцию и вставьте ее в созданный файл ранее. Подключите
pygame- используем исключительно для стилизации окна.
import pygame
pygame.init()
# Устанавливаем размеры окна
screen_width = 800
screen_height = 600
window_size = (screen_width, screen_height)
pygame.display.set_mode(window_size) # Создаем окно
# Задаем цвет фона
bg_color = (255, 255, 255)
pygame.draw.rect(screen, bg_color, [0, 0, screen_width, screen_height], 1)
# Выводим текст на экран
font = pygame.font.SysFont(None, 75)
text = font.render("Hello appsec world*", True, (0, 255, 0))
text_rect = text.get_rect()
text_rect.center = (400, 300)
screen.blit(text, text_rect)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
pygame.display.flip() # Обновляем экран
- 6. Сделайте
commitиpushв свой репозиторий с изменениями вmaster branch. На следующих лабораторных работах мы вернемся к этому файлу. - 7. Выведите на терминале и проанализируйте следующие команды консоли
$ groups
$ useradd smallman
$ userdel smallman -rf
$ useradd smallman
$ passwd smallman
$ usermod smallman -c 'Hach Hachov Hacherovich,239,45-67,499-239-45-33'
$ passwd smallman
$ id smallman
$ groupadd -g 1500 readgroup
$ usermod -aG readgroup smallman
$ chmod 666 screen
- 8. Выведите группу прав для
screenи измените, что бы файл был доступен только для чтения созданному пользователю и выведите права этого польователя для измененного файла только используяreadgroup. - 9. Используйте
POSIX ACL. Выведите на терминале и проанализируйте следующие команды консоли
$ touch nmapres.txt
$ setfacl -m u:smallman:rw nmapres.txt
$ setfacl -m g:readgroup:r nmapres.txt
$ getfacl nmapres.txt
- 10. Сохраните файл внутри локального репозитория, так как следующая работа будет подразумевать запись в нее данных о nmap.
- 11. Для закрепления выведите все списки групп пользователей на вашей ОС и права на верхнеуровневые каталоги.
- 12. Выведите все права для файлов и директорий локального репозитория которые имеют различные пользователи (без использования длинных путей)
- 13. Выведите процессы которые у вас запущены в термине и вне его.
- 14. Оформить
README.mdпо аналогии и использоватьshield, etc. - 15. Составить
gistотчет и отправить ссылку личным сообщением
Links
Copyright © 2025 Elijah S Shmakov

