Bash
$ echo $SHELL
/etc/skel -каталог темплейт для создания юзеров. Созданные здесь файлы и каталоги будут автоматом копироваться в профиль пользователя.
Псевдонимы команд хранятся в файле .bashrc
Функции можно дописать в файле .bashrc
#Function PRIVET!
function PRIVET(){
echo "Hello!:";
whoami
}
После сохранения файла .bashrc, обновить bash командой
# bash
#PRIVET -вызов нашей функции
Функция принимающая аргументы. Функция принимает аргумент имя пользователя, парсит лог и записывает результат в файл.
function showlog (){
date > $1.txt;
grep $1 /var/log/auth.log | tail -n 5 >> $1.txt;
}
где $1 -первый аргумент функции, $2 -второй и т.д.
Запуск функции:
$ bash
$ showlog user
где showlog -имя функции, user -первый (и единственный в данном примере) аргумент
Переменные
$ env -вывести переменные среды
$ set -вывести все переменные и функции
$ unset -удаление всех переменных
$ export -експортирует переменную в переменную среды
$ PATH -переменная пути к исполняемым файлам
Bash скрипты
Программа test (оператор сравнения) применяется в скриптах. Результат пишет в переменную $?.
Пример:
$ test 5 -gt 2 (5 больше чем 2)
$ echo $?
Результатом является 0 или 1. 0 -false, 1 -true
Пример скрипта:
#!/bin/bash
f=$(ls -la)
f1=`df`
echo -e "You filesystem is:\n $f"
echo -e "COMMAND DF\n\n $f1"
Цикл for
#!/bin/bash
# Выводит последовательность от 2 до 15
for x in `seq 2 15`
do echo $x
#!/bin/bash
# Выводит последовательно имена каталогов в домашней директории
files=`ls ~`
for x in $files
do
echo $x
done
Цикл while
#!/bin/bash
# Выводит последовательность от 1 до 10
x=1
while [ $x -ne 10 ] # -ne -not equal, не равно
do
echo $x
x=$(($x+1))
done
#!/bin/bash
t="type"
# Просит ввести символы пока не будут набраны "linux"
while [ $t != "linux" ]
do
echo "Type something!: "
read t
echo "You type is: $t"
done
Графика X11
Ubuntu server 18.04:
# apt install xorg
CentOS server 7:
# yum install xorg-x11-server-Xorg.x86_64
Запуск:
ubuntu:
$ startx
Логи системы
Journald
Ubuntu 18.04 и Centos 7
Логи хранятся в бинарном виде:
/run/log/journal
/var/log/journal
Настройки ситемного журнала:
/etc/systemd/journald.conf
Для просмотра используется утилита journalctl
$ journalctl -b -показать ситемный журнал от старта системы
$ journalctl --since 13:00 --until 14:00
$ journalctl -u networking.service -вывод событий по юниту
Журнальный демон:
$ sudo service systemd-journald restart
Rsyslog
Конфиг:
/etc/rsyslog.conf (https://youtu.be/LP3lIId7-08?t=184)
Syslog-ng -также утилита логирования
Сети
Ручная настройка сети:
enp0s3 -ethernet network peripheral bus 0 slot 3
Скрипты управления сетью CentOS 7:
cd /etc/sysconfig/network-scripts/
$ sudo systemctl restart network -перезагрузка сети CentOS 7
Удаление сетевой карты:
# ifconfig enp0s3 down
# lsmod -листинг модулей ядра
# rmmod e1000 -удалить драйвер сетевой карты e1000
Ubuntu 18.04
# systemctl restart systemd-networkd -рестарт сети
Маршруты:
$ ip route
$ route
$ sudo route del default gw 10.0.0.1 -удаление маршрута по умолчанию
$ sudo route add default gw 10.0.1.1 netmask 0.0.0.0 dev enp0s3 metric 99 -добавление маршрута по умолчанию
Диагностика сети.
$ host google.com -показывает ip адреса хоста
$ dig google.com -также инфа о хосте
$ netstat -tulpan -популярный вывод о сетевых соединениях
$ netstat -p -вывод инфо о соединении по портам
$ nc -v google.com 80 -установить соединение по порту 80
$ netcat -v google.com 80
$ getent hosts -показать записи в хостах (файле hosts)
Поиск файлов с завышенными правами доступа
$ sudo find / -perm -u+s -поиск файлов с установленным s битом
$ sudo find / -perm -777 -поиск файлов с правами 777
Исследование открытых портов
$ nmap
$ nmap localhost
$ lsof -i
$ sudo lsof -i:8080 -посмотреть через сетевые интерфейсы демоны, которые смотрят слушают порт 8080
$ sudo fuser -v . -что происходит в текущем каталоге
$ sudo fuser 8080/tcp -какой процесс на порту 8080
на выводе увидим ID процесса
$ ps 1432 -1432 ID процесса
Активные пользователи в системе
$ w
$ who -a
$ users
$ last
SSH
$ /home/user/.ssh/known_hosts -хранит отпечаток ключа SSH в профиле пользователя
$ rm known_hosts
$ /etc/ssh/ssh_known_hosts -хранит отпечаток ключа SSH на уровне системы
Проброс через SSH на локальный порт 54321 сервера google.com 216.58.209.46
$ ssh 192.168.56.100 -N -L 54321:216.58.209.46:80
Шифрование файлов с помощью GPG
Создаем пару ключей при помощи утилиты gpg
$ gpg --full-generate-key
В каталоге .gnupg создались ключи. Публичный ключ pubring.kbx, приватные ключи в каталоге private-keys-v1.d
$ gpg --list-key -просмотр ключей
$ gpg --export testuserkey > gpg.public -экпорт ключа в файл gpg.public по комментарию testuserkey в бинарном виде
скопируем gpg.public на другой Linux сервер. На этом сервере проверим наличие ключей командой gpg --list-key. Далее на удаленном сервере, которому передали ключ, импортируем наш скопированный ключ командой
$ gpg --import gpg.public
$ gpg --out cryptfile.secret --recipient 'Petrenko Petro' --encrypt cryptfile.txt -закриптуем наш файл cryptfile.txt в cryptfile.secret
Теперь можем этот файл передавать владельцу приватного ключа для дешифровки
$ gpg --out cryptfile.txt --decrypt cryptfile.secret -декриптуем наш файл cryptfile.secret
По материалам:
https://www.youtube.com/playlist?list=PLmxB7JSpraieH3aScuPs7h77cSEQvPi2A
Основы шифрования SSH:
https://www.wisereport.ru/ssh-encryption-process/
https://www.securitylab.ru/analytics/478912.php
|