---
# System prepended metadata

title: OS Linux

---

#  OS Linux
## Занятие 2. Общие положения, терминал и системные утилиты. Домашнее задание.
>Выполнить первые 5 уровней https://overthewire.org/wargames/bandit/

Пароль bandit0:
bandit0
> ssh bandit0@bandit.labs.overthewire.org -p 2220
> ls
> cat readme

![](https://i.imgur.com/vd37Nvc.png)
Пароль bandit1:
boJ9jbbUNNfktd78OOpsqOltutMc3MY1

>ls
>cat ./-

![](https://i.imgur.com/jBwtg5r.png)
Пароль bandit2:
CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

>ls
>cat "spaces in this filename"

![](https://i.imgur.com/XbEphnc.png)
Пароль bandit3:
UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

>ls -la
>cd inhere/
>ls -la
>cat ./.hidden

![](https://i.imgur.com/LUoyyn9.png)
Пароль bandit4:
pIwrPrtPN36QITSp3EQaw936yaFoFgAB


>ls -la
>cd inhere/
>ls -la
>cat ./-file07 

![](https://i.imgur.com/WlWjYJ5.png)
Пароль bandit5:
koReBOKuIDDepwhWk7jZC0RTdopnAYKh

>find . -type f -size -1034c -and -size +1032c
cat inhere/maybehere07/.file2

![](https://i.imgur.com/EfcEzpO.png)
Пароль bandit6:
DXjZPULLxYr17uwoI01bNLQbtFemEgo7

>find / -type f -user bandit7 -group bandit6 -size -34c -and -size +32c 2>/dev/null
>cat /var/lib/dpkg/info/bandit7.password

![](https://i.imgur.com/CT5ct80.png)
Пароль bandit7:
HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

>grep millionth data.txt

![](https://i.imgur.com/LiW8TfF.png)
Пароль bandit8:
cvX2JJa4CFALtqS87jk27qwqGhBM9plV

>sort data.txt | uniq -u

![](https://i.imgur.com/a71vg3B.png)
Пароль bandit9:
UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

>strings data.txt | grep '=='

![](https://i.imgur.com/BodaQhX.png)
Пароль bandit10:
truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

>base64 -d data.txt

![](https://i.imgur.com/sn9CHeQ.png)
Пароль bandit11:
IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

>tr 'A-Za-z'  'N-ZA-Mn-za-m'  < data.txt

![](https://i.imgur.com/RrYghSk.png)
Пароль bandit12:
5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu

## Занятие 3. Домашнее задание.
>Настроить SSH подключение к Linux машине с помощью публичного ключа
Добавить еще один интерфейс на виртуальную машину (NAT) и настроить сеть для этого интерфейса по DHCP
Установить ПО для мониторинга сервера Linux

Генерируем пару ключей
![](https://i.imgur.com/WJEZp93.png)
![](https://i.imgur.com/0dBmSwR.png)
Передаем на SSH сервер публичный ключ  и затем подключаемся по ssh не вводя пароль
![](https://i.imgur.com/wQDoqCI.png)
Добавляем в VBOX сетевой интерфейс, командой ip a выводим имя нового интерфейса и настраиваем его редактируя файл /etc/network/interfaces
![](https://i.imgur.com/3o27Js8.png)

Делаем рестарт(/etc/init.d/networking restart) и проверяем
![](https://i.imgur.com/P4IJwlC.png)

Устанавливаем ПО для мониторинга сервера
Monitorix
>apt-get update
apt-get install monitorix
systemctl status monitorix

![](https://i.imgur.com/SOguqCx.png)

Запускаем веб интерфейс https://localhost:8080/monitorix
![](https://i.imgur.com/fOSJTJC.png)


## Занятие 4. Практическая работа_1. Настройка сети в Linux (на примере Ubuntu)
- [ ] Научиться настраивать сеть.
Вариант 1 - через графический интерфейс.
Settings -> Network -> Wired -> IPv4
Вариант 2 - через конфигурационные файлы /etc/network/interfaces (/etc/network/interfases.d/*)
/etc/resolv.conf - DNS серверы 
или в некоторых ОС, например, Ubuntu с версии 17.10
/etc/netplan/01-network-manager-all.yaml
- [ ] Изучить настройки и конфигурационные файлы.
- [ ] Настроить проводную сеть.
>sudo passwd root
(файл конфигурации sudo - /etc/sudoers и файлы в каталоге /etc/sudoers.d)

Чтобы не набирать каждый раз sudo можно набрать
>sudo su

Чтобы выяснить имя интерфейса набираем 
>ls /sys/class/net/

Видим 2 интерфейса lo и ens33.
Можно отредактировать конфигурационный файл
>nano 01-network-manager-all.yaml

А также можно произвести настройки командой netplan set, что более безопасно.
Настройка динамического получения IP адреса выполняется командой
>netplan set ethernets.ens33.dhcp4=true

Затем применяем новые настройки командой
>netplan try или netplan apply

Проверяем что IP адрес получен по DHCP
![](https://i.imgur.com/HDx3gMN.png)

В результате выполнения команды netplan set ethernets.ens33.dhcp4=true создается файл 70-netplan-set.yaml
Чтобы настроить статический IP адрес отредактируем его следующим образом
![](https://i.imgur.com/lu5WSPl.png)

Команда netplan get выводит следующий результат:

![](https://i.imgur.com/dJOivJD.png)

Применяем изменения командой netplan try
и проверяем настройку  статического IP адреса
![](https://i.imgur.com/ez205yi.png)

Если сетевые настройки задаются через файлы /etc/network/interfaces (/etc/network/interfases.d/*)
(/etc/resolv.conf)
пример /etc/network/interfaces:
```
auto lo                              #интерфейс для loopback интерфейса
iface lo inet loopback               #аналог Localhost 

allow-hotplug ens33                   #автоматически выполнять перезапуск интерфейса при его падении
auto ens33                            #поднимать интерфейс автоматически при старте системы
#iface ens33 inet dhcp                #получить адрес по DHCP
iface ens33 inet static               #статический адрес
        address 192.168.84.17         #IP адрес
        netmask 255.255.255.0         #маска
        network 192.168.84.0          #задаём адрес сети
        broadcast 192.168.84.255      #задаём адрес для широковещательной рассылки
        gateway 192.168.84.2          #шлюз
        dns-nameserver 8.8.8.8        #задаём адреса DNS-серверов ```
```       
а также если в /etc/netplan/*.yaml указана программа-обработчик networkd, а не NetworkManager,
то после изменения этих конфигурационных файлов необходимо перезагрузить сетевую службу командой

>sudo /etc/init.d/networking restart


Устанавливаем пакеты, содержащие ifconfig traceroute 
>apt install net-tools traceroute

Проверяем настройку через ifconfig ens33

![](https://i.imgur.com/gIhQ5ip.png)
Назначим еще один IP адрес интерфейсу ens33
>ip address add 192.168.84.18/24 dev ens33

![](https://i.imgur.com/khFoj7j.png)
Удалим первый IP адрес
>ip address del 192.168.84.17/24 dev ens33

![](https://i.imgur.com/rRL4mwk.png)

- [ ] Выполнить практическую работу по команде ip a .
https://hackmd.io/@IgorLitvin/SklxGVyXt

![](https://i.imgur.com/yuSwE4x.png)
Изменяем и проверяем статус интерфейса
![](https://i.imgur.com/RZdgqU7.png)
Добавляем маршрут к сети 192.168.3.0 и пингуем хост из этой сети
![](https://i.imgur.com/n1IF52C.png)

- [ ] Научиться работать с командой traceroute.
https://hackmd.io/@IgorLitvin/B11mb8JXK

![](https://i.imgur.com/nwtNuoA.png)

## Занятие 4. Практическая работа_2. Настройка и конфигурация Linux-систем и прав доступа на базе Debian 11.
Добавляем пользователя user в группу sudo
![](https://i.imgur.com/RqJdKHk.png)

для этого редактируем /etc/sudoers
![](https://i.imgur.com/emQ0N4F.png)

подключаем в VBOX новый диск
![](https://i.imgur.com/o98hOGZ.png)

создаем новый раздел на диске программой fdisk
![](https://i.imgur.com/v4YiXPm.png)

форматируем диск командой 
>sudo mkfs.ext4 /dev/sdc

![](https://i.imgur.com/VBNq2Ny.png)

монтируем диск командой 
>sudo mount /dev/sdc /home/data

![](https://i.imgur.com/qMLtIUN.png)

Чтобы диск автоматически монтировался при загрузке редактируем /etc/fstab добавляя в него строку /dev/sdc /home/data/ ext4 defaults 0 0

![](https://i.imgur.com/2E4ofWO.png)

Другой способ монтирования это создание файла в каталоге /etc/systemd/systеm
Ниже приведен пример файла home-30GB.mount для монтирования диска /dev/sdb в каталог /home/30GB
![](https://i.imgur.com/r5O7CUi.png)


Чтобы монтирование происходило автоматически при загрузке надо выполнить коману 
>sudo systemctl enable home-30GB.mount

![](https://i.imgur.com/lwXwDJB.png)

После перезагрузки проверяем что диски /dev/sdb и /dev/sdc автоматически примонтировались.
![](https://i.imgur.com/KZGZBHJ.png)

>Создать новую группу “CYB”.
Создать папку “23” в директории “Data”.
Назначить на данную папку “23” группу “CYB”.
Назначить права доступа таким образом на директорию “Data”, чтобы результат работы команды ls был отрицательным, пояснить вывод команды ls.

![](https://i.imgur.com/HGbQ9yJ.png)

Если на каталог отсутствует право Read, то посмотреть его содержимое командой ls нельзя. Но если есть право X (eXecute), то можно перейти в этот каталог, а также, при наличии соттветствующих прав на вложенный каталог, перейти во вложенный каталог и просмотреть его содержимое.

![](https://i.imgur.com/Zq9G54O.png)

>Создать нового пользователя.(sudo adduser test)
Назначить пароль.(sudo passwd test)
Включить нового пользователя в группу “mirea”(sudo usermod -aG mirea test)
Убедиться, что в домашнем каталоге создана директория с новым пользователем.(ls /home)
Залогиниться новым пользователем в Linux(su test).

![](https://i.imgur.com/g2otmAf.png)

>Установить SSH-сервер (сменить стандартный порт на любой другой) продемонстрировать подключение с linux на linux.
https://hackmd.io/@IgorLitvin/Hkz5b78MY

![](https://i.imgur.com/FuEb7cx.png)

![](https://i.imgur.com/eqhmq0y.png)

![](https://i.imgur.com/PtbHVE0.png)

>Подключиться из Windows на виртуальную машинку Linux по SSH с помощью PuTTY 
https://hackmd.io/@IgorLitvin/BJm5SfIMK

![](https://i.imgur.com/42vOYla.png)

## Занятие 6. Управление сервисами. Практическая работа_3

Устанавливаем samba:
>sudo apt-get update
>sudo apt-get install -y samba samba-client

Создаем резервную копию файла конфигурации Samba:
>sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Создаем директорию, к которой все пользователи будут иметь общий доступ:
>sudo mkdir -p /samba/public

Изменим режим доступа :
>cd /samba
sudo chmod -R 0755 public

Создадим каталог к которому будет иметь доступ ограниченное число пользователей:
>sudo mkdir /samba/private

Создадим группу пользователей, которые будут иметь доступ к приватным данным:
>sudo groupadd smbgrp

Создадим пользователей с помощью команды useradd:
>sudo useradd user1

Добавим созданных пользователей в группу:
>sudo usermod -aG smbgrp user1

Изменим группу, которой принадлежит приватная директория:
>sudo chgrp smbgrp /samba/private

Зададим пароль, с помощью которого пользователь будет подключаться к каталогу:
>sudo smbpasswd -a user1

Отредактируем файл конфигурации SMB:
>sudo nano /etc/samba/smb.conf

внеся в него следующие строки

```
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no

[public]
path = /samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes

[private]
path = /samba/private
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes
```
Чтобы изменения вступили в силу надо перезапустить сервис:

>sudo service smbd restart

![](https://i.imgur.com/MILU1Pn.png)

для подключения к папке private требуется аутентификация
![](https://i.imgur.com/f6Z2rMI.png)

Далее нужно настроить firewall, открыв порты, которые использует SAMBA. 
Разрешим только подключения из локального диапазона IP-адресов:


>iptables -A INPUT -p tcp -m tcp --dport 445 –s 192.168.10.0/24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 139 –s 192.168.10.0/24 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 137 -s 192.168.10.0/24 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 138 –s 192.168.10.0/24 -j ACCEPT

Теперь необходимо сделать так, чтобы указанные выше правила фаервола iptables были сохранены после перезагрузки машины. Для это установим пакет iptables-persistent:

>apt-get install iptables-persistent

После установки откроется окно с предложением последовать запомнить текущие правила iptables для IPv4 и IPv6. Подтвердите это действие.


![](https://i.imgur.com/bLKem7l.png)

Проверить актуальные правила iptables можно командой:

>iptables -L

В выводе команды должны увидеть ранее добавленные разрешающие политики (Accept).
Запретить остальные соединения можно коммандами:

>iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

## Занятие 8. Bash-scripts и автоматизация сервисов.
### Домашнее задание
- Создать bash-скрипт для присвоения всем файлам и папкам в текущей директории - одинаковых прав (текущий пользователь владелец имеет права RWX, остальные r--)
- Настроить скрипт - как сервис с автозапуском
- Настроить скрипт - для запуска каждый день в 14.00
- Разработка скриптов для реализаций разных стратегий резервного копирования (полная, дифференциальная/инкрементальная)

![](https://i.imgur.com/2fdrEPf.png)

![](https://i.imgur.com/ylPK7M6.png)

>touch /etc/systemd/system/test-script.service
chmod 664 /etc/systemd/system/test-script.service
nano /etc/systemd/system/test-script.service

![](https://i.imgur.com/86hW4xJ.png)

Проверяем и перезапускаем:
>systemctl daemon-reload
systemctl start test-script.service
systemctl status test-script.service

Добавляем в автозагрузку:
>systemctl enable test-script.service

Настраиваем автозапуск:
>crontab -e 

![](https://i.imgur.com/FQvPUWB.png)

Скрипт для полного резервного копирования
```#!/bin/bash

#Daily backup script

#Create some needed variable
day=$(date +%F)
Folder="/root/bash/"

File="/home/data/Backup/$day.tar.gz"

#Backup Server Configuration
tar cpzf $File $Folder

#Remove backup files older than 90 days
find /home/data/Backup/* -mtime +90 -exec rm {} \;
```


