Заглавная Обсуждение
Читать Просмотр кода История

шпаргалка

ALT Linux

Шпаргалка: task-simply_14

⚠️ Важно перед началом

  • Опечатки в PDF: Sinply Linux → Simply Linux, jshevcenko → jshevchenko
  • Пароль по умолчанию везде: Linux$kills24
  • Порядок работы: rtr01 → rtr02 → backup из Windows → Ventoy/USB → wks01 → wks02 → firewall на wks01
  • Если флешка одна — используй Ventoy: на неё кладётся и ISO, и backup одновременно

📦 Backup из Windows (делать ДО установки Linux)

wks01 — сохранить файлы пользователя

# Узнать имена пользователей
dir C:\Users
net user

# Скопировать документы и картинки на флешку (E:)
robocopy C:\Users\<USER>\Documents E:\backup-wks01\<USER>\Documents /E
robocopy C:\Users\<USER>\Pictures  E:\backup-wks01\<USER>\Pictures  /E

wks02 — сохранить файлы jshevchenko + обои

# Узнать путь к обоям
reg query "HKCU\Control Panel\Desktop" /v WallPaper

# Скопировать документы и картинки
robocopy C:\Users\jshevchenko\Documents E:\backup-wks02\jshevchenko\Documents /E
robocopy C:\Users\jshevchenko\Pictures  E:\backup-wks02\jshevchenko\Pictures  /E

# Скопировать обои (подставь реальный путь из reg query выше)
copy "<PATH_TO_WALLPAPER>" E:\backup-wks02\wallpaper\

Подготовка USB-флешки

  1. Установить Ventoy на флешку
  2. Скопировать ISO Simply Linux в корень флешки
  3. Скопировать папки backup-wks01 и backup-wks02 в корень флешки

🌐 Маршрутизатор rtr01 (OpenWrt)

Задание: Настроить подключение к провайдеру: статический IP с теми же настройками, что получали по DHCP. LAN: IP 192.168.78.11, сеть 192.168.78.0/26, DHCP пул 32 адреса начиная с .20. Настроить маршрутизацию в «сеть 2». Имя хоста — rtr01. Московское время. Пароль root — Linux$kills24.

Шаг 1: Снять текущие DHCP-параметры WAN (записать их!)

ifstatus wan
ip -4 addr show
ip route
cat /tmp/resolv.conf.d/resolv.conf.auto

Запиши: IP-адрес, маску, шлюз, DNS1, DNS2. Они нужны для следующего шага.

Шаг 2: Настройка

# WAN — переключить с DHCP на static теми же значениями
uci set network.wan.proto='static'
uci set network.wan.ipaddr='<WAN_IP_FROM_DHCP>'
uci set network.wan.netmask='<WAN_NETMASK_FROM_DHCP>'
uci set network.wan.gateway='<WAN_GATEWAY_FROM_DHCP>'
uci -q delete network.wan.dns
uci add_list network.wan.dns='<DNS1>'
uci add_list network.wan.dns='<DNS2>'

# LAN
uci set network.lan.ipaddr='192.168.78.11'
uci set network.lan.netmask='255.255.255.192'

# DHCP: пул 32 адреса начиная с .20
uci set dhcp.lan.start='20'
uci set dhcp.lan.limit='32'

# Маршрут в «сеть 2» (обычно 172.20.20.0/24 — уточни по топологии)
uci add network route
uci set network.@route[-1].interface='lan'
uci set network.@route[-1].target='<NETWORK_2_IP>'
uci set network.@route[-1].netmask='<NETWORK_2_NETMASK>'
uci set network.@route[-1].gateway='192.168.78.12'

# Имя хоста и время
uci set system.@system[0].hostname='rtr01'
uci set system.@system[0].zonename='Europe/Moscow'
uci set system.@system[0].timezone='MSK-3'

# Применить
uci commit network
uci commit dhcp
uci commit system

/etc/init.d/network restart
/etc/init.d/dnsmasq restart
/etc/init.d/system restart

# Пароль root
passwd

Проверка

ip route
ping -c 3 192.168.78.12

🌐 Маршрутизатор rtr02 (OpenWrt)

Задание: Подключение к rtr01 со статическим IP 192.168.78.12. Получать динамический IP из сети 172.20.20.0/24. Имя хоста — rtr02. Московское время. Пароль root — Linux$kills24.

Шаг 1: Посмотреть интерфейсы

uci show network
ip -br addr

Шаг 2: Настройка

# Интерфейс к rtr01 — статический
uci set network.wan.proto='static'
uci set network.wan.ipaddr='192.168.78.12'
uci set network.wan.netmask='255.255.255.192'
uci set network.wan.gateway='192.168.78.11'

# Второй интерфейс (в сеть 172.20.20.0/24) — DHCP
uci set network.lan.proto='dhcp'

# Имя хоста и время
uci set system.@system[0].hostname='rtr02'
uci set system.@system[0].zonename='Europe/Moscow'
uci set system.@system[0].timezone='MSK-3'

uci commit network
uci commit system

/etc/init.d/network restart
/etc/init.d/system restart

# Пароль root
passwd

Проверка

ip route
ping -c 3 192.168.78.11
ping -c 3 172.20.20.12

Если нет связи — проверь: 1) маршрут на rtr01, 2) NAT на rtr02, 3) реальную подсеть wks02


💿 Установка Simply Linux

wks01

Задание: Папка /srv/ на отдельном разделе ≥ 1 Гб. Пароль root — Linux$kills24. Создать пользователей с теми же именами что были в Windows.

  • При разметке диска создать отдельный раздел /srv размером не менее 1 Гб
  • Пароль root: Linux$kills24
  • Создать пользователей из Windows (имена взяты из dir C:\Users)

wks02

Задание: Папка /home/ на отдельном разделе ≥ 2 Гб. Пароль root — Linux$kills24. Создать пользователей с теми же именами, обязательно jshevchenko.

  • При разметке диска создать отдельный раздел /home размером не менее 2 Гб
  • Пароль root: Linux$kills24
  • Создать пользователей из Windows, обязательно создать jshevchenko

🖥️ Настройка wks01

База

Задание: Задать имя хоста wks01. Настроить московское время с синхронизацией после перезагрузки. Установить необходимые пакеты. Создать пользователей с паролем Linux$kills24, добавить в группу users.

su -
hostnamectl set-hostname wks01
timedatectl set-timezone Europe/Moscow
timedatectl set-ntp true

apt-get update
apt-get install -y sudo openssh-server openssh-clients nginx openssl nfs-server nfs-clients nftables

# Создать группу users
groupadd -f users

# Если пользователи уже созданы при установке — просто добавить в группу
usermod -aG users <USER1>
usermod -aG users <USER2>

# Если пользователей нет — создать
useradd -m -G users <USER1>
passwd <USER1>          # Linux$kills24

useradd -m -G users <USER2>
passwd <USER2>          # Linux$kills24

passwd root             # Linux$kills24

Перенос файлов

Задание: Перенести документы из Windows в домашний каталог пользователя. Перенести картинки в /srv/nfs/pictures. Владелец /srv/nfs/ — пользователь, которому принадлежали файлы в Windows. Группа users должна иметь доступ на чтение ко всему содержимому /srv/nfs.

# Найти флешку
lsblk -f
mkdir -p /mnt/usb
mount /dev/sdX1 /mnt/usb         # заменить sdX1 на реальное устройство

# Создать нужные каталоги
mkdir -p /srv/nfs/pictures
mkdir -p /srv/webserv

# Перенести документы в домашний каталог владельца
cp -a /mnt/usb/backup-wks01/<OWNER>/Documents/. /home/<OWNER>/

# Перенести картинки в /srv/nfs/pictures
cp -a /mnt/usb/backup-wks01/<OWNER>/Pictures/.  /srv/nfs/pictures/

# Задать владельца и права для группы users
chown -R <OWNER>:users /srv/nfs
chmod -R g+rwX /srv/nfs
find /srv/nfs -type d -exec chmod g+s {} \;

⚠️ <OWNER> — имя пользователя Windows, из чьей папки взяты файлы

sudo без пароля для группы users

Задание: Настроить sudo так, чтобы пользователи из группы users могли выполнять команды с sudo без ввода пароля.

printf '%%users ALL=(ALL) NOPASSWD: ALL\n' > /etc/sudoers.d/users-nopasswd
chmod 440 /etc/sudoers.d/users-nopasswd

SSH

Задание: SSH должен запускаться при загрузке и работать на порту 2222. Разрешить подключение только пользователям группы users. Обеспечить возможность подключаться по SSH к wks02.

# Порт 2222
grep -q '^Port ' /etc/ssh/sshd_config \
  && sed -i 's/^Port .*/Port 2222/' /etc/ssh/sshd_config \
  || echo 'Port 2222' >> /etc/ssh/sshd_config

# Разрешить только группу users
grep -q '^AllowGroups ' /etc/ssh/sshd_config \
  && sed -i 's/^AllowGroups .*/AllowGroups users/' /etc/ssh/sshd_config \
  || echo 'AllowGroups users' >> /etc/ssh/sshd_config

systemctl enable --now sshd
systemctl restart sshd

SSH-клиент (openssh-clients) уже установлен выше — подключение к wks02 доступно командой ssh <USER>@<WKS02_IP>

NFS

Задание: Настроить NFS так, чтобы /srv/nfs и всё её содержимое было доступно для записи для всех устройств подсети 192.168.0.0/16. Служба NFS должна стартовать при загрузке.

printf '/srv/nfs 192.168.0.0/16(rw,sync,no_subtree_check)\n' > /etc/exports
systemctl enable --now nfs-server
exportfs -rav

Если NFS монтируется, но нельзя писать:

chmod -R 0777 /srv/nfs

Планировщик задач (cron)

Задание: Настроить crontab так, чтобы от имени root 1 раз в 10 минут в файл /var/log/time.log записывалось текущее время.

(crontab -l 2>/dev/null; echo '*/10 * * * * date >> /var/log/time.log') | crontab -
systemctl enable --now crond

Nginx + сайт

Задание: Установить nginx, запускать при загрузке. Создать сайт на 80 и 443 портах (самоподписанный сертификат). Рабочий каталог — /srv/webserv/. Главная страница: «Hello! It's Linux Skills».

# Создать страницу сайта
cat > /srv/webserv/index.html <<'EOF'
Hello! It's Linux Skills
EOF

# Создать самоподписанный сертификат
mkdir -p /etc/nginx/ssl
openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
  -keyout /etc/nginx/ssl/self.key \
  -out    /etc/nginx/ssl/self.crt \
  -subj '/C=RU/ST=Moscow/L=Moscow/O=LinuxSkills/CN=wks01'

# Конфиг nginx
cat > /etc/nginx/conf.d/linuxskills.conf <<'EOF'
server {
    listen 80 default_server;
    server_name _;
    root /srv/webserv;
    index index.html;
}

server {
    listen 443 ssl default_server;
    server_name _;
    root /srv/webserv;
    index index.html;
    ssl_certificate     /etc/nginx/ssl/self.crt;
    ssl_certificate_key /etc/nginx/ssl/self.key;
}
EOF

nginx -t
systemctl enable --now nginx
systemctl restart nginx

Если папки conf.d нет — вставить тот же server-блок в подключаемый include из nginx.conf

/etc/hosts

Задание: Обеспечить связь между wks01 и wks02 по имени хоста.

# Узнать IP wks02 заранее (через DHCP-таблицу rtr01 или ip addr на wks02)
printf '<WKS02_IP> wks02\n' >> /etc/hosts

Firewall на wks01

Задание: Настроить firewall так, чтобы подключения по SSH и NFS принимались только от wks02.

⚠️ Делать в последнюю очередь — когда уже известен IP wks02!

cat > /root/wks01-firewall.nft <<'EOF'
flush ruleset

table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;
    iif lo accept
    ct state established,related accept
    ip protocol icmp accept
    tcp dport {80,443} accept
    ip saddr <WKS02_IP> tcp dport 2222 accept
    ip saddr <WKS02_IP> tcp dport 2049 accept
  }

  chain forward {
    type filter hook forward priority 0; policy drop;
  }

  chain output {
    type filter hook output priority 0; policy accept;
  }
}
EOF

nft -f /root/wks01-firewall.nft

# Автозапуск при перезагрузке
(crontab -l 2>/dev/null; echo '@reboot /usr/sbin/nft -f /root/wks01-firewall.nft') | crontab -

🖥️ Настройка wks02

База

Задание: Задать имя хоста wks02. Московское время с синхронизацией. Установить пакеты. Создать пользователей с паролем Linux$kills24, добавить в группу users. Пароль root — Linux$kills24.

su -
hostnamectl set-hostname wks02
timedatectl set-timezone Europe/Moscow
timedatectl set-ntp true

apt-get update
apt-get install -y firefox xfce4-clipman-plugin openssh-server openssh-clients nfs-clients yt-dlp

groupadd -f users
usermod -aG users jshevchenko
passwd root             # Linux$kills24
passwd jshevchenko      # Linux$kills24

systemctl enable --now sshd

Автологин jshevchenko

Задание: При загрузке компьютера пользователь jshevchenko должен автоматически без ввода пароля попадать в графическую среду.

mkdir -p /etc/lightdm/lightdm.conf.d
cat > /etc/lightdm/lightdm.conf.d/50-autologin.conf <<'EOF'
[Seat:*]
autologin-user=jshevchenko
autologin-user-timeout=0
EOF

Перенос файлов

Задание: Перенести из Windows документы и картинки в домашнюю папку jshevchenko. Сделать то же изображение фоновым, что было в Windows.

lsblk -f
mkdir -p /mnt/usb
mount /dev/sdX1 /mnt/usb         # заменить sdX1 на реальное устройство

cp -a /mnt/usb/backup-wks02/jshevchenko/Documents/. /home/jshevchenko/
cp -a /mnt/usb/backup-wks02/jshevchenko/Pictures/.  /home/jshevchenko/Pictures/
cp -a /mnt/usb/backup-wks02/wallpaper/.             /home/jshevchenko/Pictures/

chown -R jshevchenko:users /home/jshevchenko

Обои, блокировка экрана, Clipman — GUI

Задание: Установить обои те же что были в Windows. Отключить блокировку экрана при простое. Менеджер буфера обмена: хранить 100 элементов с сохранением при выключении.

Войти под jshevchenko (автологин уже настроен) и:

  1. Обои: Настройки → Рабочий стол → выбрать файл из ~/Pictures/ (перенесённый с Windows)
  2. Блокировка: Настройки → Хранитель экрана → отключить
  3. Clipman:
    • Правый клик на панели → Добавить элементы панели → найти Clipman и добавить
    • Правый клик на иконке Clipman → Параметры → поставить 100 элементов → включить Сохранять историю при выключении

NFS

Задание: Создать каталог nfs в домашней папке jshevchenko. Смонтировать в него NFS-папку с wks01. После перезагрузки монтирование должно восстанавливаться.

mkdir -p /home/jshevchenko/nfs

# Добавить в fstab для автомонтирования
printf '<WKS01_IP>:/srv/nfs /home/jshevchenko/nfs nfs4 rw,_netdev,defaults 0 0\n' >> /etc/fstab

mount -a

SSH-ключ для входа на wks01 без пароля

Задание: Пользователь jshevchenko должен подключаться по SSH к wks01 без ввода пароля (по ключу).

# Создать ключ
sudo -u jshevchenko mkdir -p /home/jshevchenko/.ssh
sudo -u jshevchenko ssh-keygen -t ed25519 -N '' -f /home/jshevchenko/.ssh/id_ed25519

# Скопировать публичный ключ на wks01
# <USER_ON_WKS01> — пользователь из группы users на wks01
sudo -u jshevchenko ssh-copy-id -p 2222 <USER_ON_WKS01>@<WKS01_IP>

Если ssh-copy-id недоступен:

cat /home/jshevchenko/.ssh/id_ed25519.pub | \
  ssh -p 2222 <USER_ON_WKS01>@<WKS01_IP> \
  'umask 077; mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys'

/etc/hosts

printf '<WKS01_IP> wks01\n' >> /etc/hosts

Firefox

Задание: Установить Mozilla Firefox. Поиск по умолчанию — Яндекс. Установить дополнение AdBlock Plus.

Firefox уже установлен (apt-get install -y firefox). Настроить вручную:

  1. Настройки → Поиск → выбрать Яндекс как поисковик по умолчанию
  2. Открыть https://addons.mozilla.org → найти AdBlock Plus → установить

Если в репозитории есть пакет firefox-adblock_plus:

apt-get install -y firefox-adblock_plus

Скачать видео на рабочий стол

Задание: Скачать ролик https://www.youtube.com/watch?v=1fJ5_5U-0yw и положить на рабочий стол.

DESKTOP_DIR=$(sudo -u jshevchenko xdg-user-dir DESKTOP)
sudo -u jshevchenko yt-dlp \
  -o "$DESKTOP_DIR/linuxskills-video.%(ext)s" \
  'https://www.youtube.com/watch?v=1fJ5_5U-0yw'

✅ Проверка всего

rtr01

ip route
ping -c 3 192.168.78.12
ping -c 3 172.20.20.12   # через маршрут в сеть 2

wks01

hostnamectl
timedatectl
ss -tulpn | grep -E '2222|80|443|2049'
exportfs -v
curl http://localhost
curl -k https://localhost
crontab -l
sudo -n true && echo "sudo OK"
nft list ruleset

wks02

hostnamectl
timedatectl
mount | grep nfs
ssh -p 2222 <USER_ON_WKS01>@<WKS01_IP>   # должен войти без пароля

Проверить глазами на wks02:

  • jshevchenko логинится автоматически
  • Обои из Windows установлены
  • Экран не блокируется
  • Clipman хранит 100 элементов с сохранением истории
  • Firefox: поиск Яндекс, AdBlock Plus включён
  • Видео лежит на рабочем столе

🪤 Ловушки

Проблема Решение
Одна флешка Используй Ventoy — на неё влезает и ISO, и backup
rtr01: сначала снять DHCP Записать IP/маску/шлюз/DNS — они нужны для static
SSH не пускает пользователя Проверь что он в группе users — AllowGroups users режет всех вне группы
NFS не монтируется Проверь маршрут rtr01 → firewall wks01 → права /srv/nfs
SSH-ключ не работает Порт 2222, группа users, проверь ~/.ssh/authorized_keys
Сеть 2 не 172.20.20.0/24 Смотри топологию стенда — подставь реальную подсеть в маршрут rtr01
Firewall заблокировал себя Делай firewall последним, когда уже знаешь IP wks02
Категория: ALT Linux