Дистрибутив для новичка
1 2 3 4 |
Дистрибутив ubuntu https://ubuntu.com/download/desktop Порядок соответствует изучению Linux для новичков https://www.youtube.com/watch?v=fAHpGshMCgQ&list=PLg5SS_4L6LYuE4z-3BgLYGkZrs-cF4Tep&index=1 - Видео |
0. Знакомство с терминалом
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Клавиша TAB на клавиатуре наш главный помощник! man - помощь man man - помощь по man man -k man - ищем где в помощи слово man man ls - вывести помощь по ls man -a crontab - Последовательно отображает все разделы справочника man, в которых упоминается crontab man -k crontab - Эквивалент команды apropos --- 1 Выполняемые программы или команды для командной оболочки 2 Обращение к операционной системе (функции, предоставляемые ядром) 3 Обращение к библиотеке (внутренние функции программных библиотек) 4 Специальные файлы (обычно можно найти в /dev) 5 Форматы файлов и условные обозначения типа /etc/passwd 6 Игры 7 Прочее (включая макро пакеты и условные обозначения), например man(7), groff(7) 8 Команды по администрированию системы (обычно только для root) 9 Программы ядра [нетипичные] --- man 5 crontab - Отображает части раздела 5 справочника man, в которых упоминается crontab info - помощь uptime - сколько работает система lscpu - информация о cpu whatis - показать что делает команда whereis - показывает где файл which ls - вывести полный путь до файла ls locate - показывает где файл ls - показать что в этой директории ls -la -R / - показать все на компьютере Ctrl + Z - заморозить выполнение процесса Ctlrl + C - прервать выполнения fg - продолжить выполнения процесса после использования ctrl+z bg - продолжить выполнения процесса после использования ctrl+z jobs - посмотреть задания в bg ps - показать процессы |
1. Перемещение по каталогам / по файловой системе
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Работа с каталогами: . - текущий каталог .. - каталог на уровень выше ~ - домашний каталог pwd - показать текущею директорию cd - смена директорий cd / - перейти в корень cd ~ - сменить текущий каталог на домашний cd - без параметров также сменит текущий каталог на домашний cd .. - перейти на каталог выше cd ../.. - перейти на два каталога выше ls - вывести листинг содержимого текущей директории ls - показать содержимое каталога ls -al - покажет все файлы, ссылки, размер, скрытые файлы ls -F - листинг текущей директории с добавлением к именам символов, обозначающих тип объекта ls -l - листинг текущей директории с подробностями по каждому объекту ( права доступа, владелец, группа, дата, размер ) ls -a - кроме обычных объектов, вывести в листинге, скрытые файлы и директории, текущего каталога ls /tmp | pr -T5 -W$COLUMNS - листинг директории /tmp в 5 колонок ls *[0-9]* - вывести в листинг файлов и директорий текущего каталога, содержащие в имени цифровые символы ls -lSr - показать файлы с сортировкой по размеру |
2. Чтение файлов \ Создание директорий \ Создание файлов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
cat name_file.txt - вывод файла name_file.txt на экран cat - напечатает содержимое указанного файла на терминал. more name_file.txt - открыть файл namme_file.txt для просмотра less name_file.txt - открыть файл name_file.txt для просмотра touch - если файл/директория существует то будет изменено время создания - если файла нет, то он будет создан touch name_file1.txt - создать файл с именем name_file1.txt touch -t 0712250000 fileditest - поменять дату файла fileditest touch lol{1,2,3}.txt - создать пустые файлы lol1.txt lol2.txt lol3.txt mkdir dir3 - создать директорию mkdir -p dir1/dir2/dir3 - создать директорию dir3 если dir1 и dir2 не существовало, будут созданы cp file1.txt file2.txt - скопировать file1.txt в file2.txt cp -R dir1 dir2 - скопировать cp file1 file2 - копирование файла в файл cp file1 file2 dir - скопировать файлы в директорию cp (x*~x[3-5]) newdir - скопировать все файлы вида x* кроме x3 по x5 cp *(^m0) newdir - скопировать файлы модифицированные не сегодня rmdir dir4 - удалить пустую директорию rm file2.txt - удалить файл file2.txt rm -rf dri3 - удалить директорию со всеми файлами mv file111.txt file222.txt - переместить и переименовать файл \ каталог split -b 1M filemy - разбить filemy на части размером 1 Мб с помощью опции -b split -n 3 filemy - разрезание filemy на три части df — утилита, которая показывает свободное место на дисках df -h — отображает слайсы, и свободное\занятое место df -i — показывает количество занятых инодов |
3. Линки
1 2 3 4 5 6 7 8 9 10 11 12 13 |
жесткие ссылки - это различные имена одного и того же файла. при удалении всех ссылок удаляется сам файл мягкие ссылки или симлинки не имеют собственных прав и указывают на владельца удаляются ссылки с помощью команды rm создаются ссылки с помощью команды ln ln /что /на_что - без параметра s создастся жесткая ссылка. жесткие ссылки ограничены одной файловой системой ln -s /что "название линка" - нужно быть в той папке куда нужно сделать линк (мягкая ссылка) ln -s /var/usr/re ~/re - создаст симлинк на файл /var/usr/re и поместит его в домашний каталог ln -s /2/e/txt /name - создаст симлинк ln -s /путь/что /куда/как_назвать_симлинк - последний параметр отвечает за название симлинка |
4. Команды find
1 2 3 4 5 6 7 8 9 10 11 12 |
find / -name '*.html' - искать файлы закачивающиеся на .html find / -user vasya - поиск файлов принадлежащие пользователю vasya find / -name filedir - найти все директории и файлы принадлежащие пользователю vasya. Поиск будет производиться, начиная с корневой директории (/) find /etc -type d | sort - ищет все каталоги, находящиеся в /etc/ и вывод сортируется по имени find /usr/bin -type f -atime +20 - найти директории и файлы с именем filedir. Поиск будет производиться, начиная с корневой директории (/) find /usr/bin -type f -mtime -10 - найти все файлы в директории /usr/bin, время последнего обращения к которым более 20 дней find /var/backup/www -name "*.tar.gz" -mtime +30 |xargs /bin/rm -f {}; - найти все файлы старше 30 дней и удалить find /var/backup/www -name "*.tar.gz" -mtime +30 -delete - найти все файлы старше 30 дней и удалить find / -xdev -name \*.rpm - найти все файлы в директории /usr/bin, которые были созданы или модифицированы в течении последних 10 дней find . -maxdepth 1 -name *.jpg -print -exec convert - искать директории и файлы, имена которых оканчиваются на ".rpm", но игнорируя съёмные накопители, cdrom, usb и т.п. find /path/to/dir -name \*.c - Найти в текущей директории все файлы с расширением jpg и выполнить для каждого команду convert ( Imagemagick ) find / -name *.rpm -exec chmod 755 '{}' \; - найти все директории и файлы, имена которых оканчиваются на ".с". Поиск будет производиться, начиная с директории /path/to/dir |
5. Команды wc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
wc - подсчёт в файле строк, слов и символов wc - выводит количество строк, слов и символов в указанном файле или во входном потоке (из пайпа). Введите man wc чтобы узнать, как настроить вывод программы. wc -l filename - посчитать количество строк в файле cat my.txt | wc -l так мы узнаем сколько там всего строк (если нужно) cat file.txt | wc -l - посчитать число строк cat file.txt | wc -w - посчитать число слов grep 192.198.1.1 /var/log/httpd/access-log | wc -l - отображает количество записей конкретного IP-адреса в файле журнала Apache wc /var/log/dmesg - отображает счетчики для одного файла wc /var/log/*.log - отображает отдельные значения для каждого файла и общие для всех файлов netstat -na | grep ":порт\ " | wc -l - подсчет количества коннектов на определенный порт netstat -na | grep ":порт\ " | grep SYN_RCVD | wc -l - подсчет числа «полуоткрытых» TCP-соединений dpkg -l| wc -l - показать количество установленных пакетов sysctl -a | wc -l - показать количество строк |
6. Команды sort
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
sort file - вывести отсортированное содержимое файла sort -n file - вывести отсортированное содержимое файла по номерам sort file1 file2 - вывести отсортированное содержимое двух файлов sort file1 file2 | uniq - вывести отсортированное содержимое двух файлов исключая повторные значения sort file1 file2 | uniq -u -вывести уникальные значения из отсортированного содержимого двух файлов sort file1 file2 | uniq -d - вывести только повторяющиеся значения из отсортированного содержимого двух файлов sort - выведет содержимое файла, указанного в командной строке, в алфавитном порядке Естественно, sort также может принимать ввод из пайпа. Наберите man sort чтобы ознакомиться с опциями команды, которые управляют вариантами сортировки. du -ks * | sort -n -r - Сортировать по размеру (kbytes) du -s /usr/share/* | sort -n - показать размер всех каталогов внутри каталога /usr/share/ и отсортировать по размеру (размер в Кб) ps auwx | sort -r -k 4.4 - Следующая команда сортирует процессы по уровню использования памяти. Параметр к используется для указания поля, используемого для сортировки. Запись 4,4 показывает, что именно четвертое поле (и только оно) является ключевым. lsmod | sort -k 2,2n - команда отображает загруженные модули ядра в порядке увеличения их размера. Параметр n указывает команде sort на необходимость интерпретировать второе поле как номер, а не как строку. cat /etc/passwd | cut -d ":" -f 1,3,6 | sort >> /home/pi/p.txt - вытащить из файла /etc/passwd содержимое столбиков 1,3,6 , выполнить сортировку и записать результат в файл /home/pi/p.txt |
7. Команды cut
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
cut - показать содержимое вырезав символы cut - используется для извлечения из входного файла или потока, полей разделенных указанным символом. (попробуйте echo 'abc def ghi jkl' | cut -d ' ' -f2,2 ) echo 'abc def ghi jkl' | cut -d ' ' -f2,2 cut -c 1,4,7 name.txt - показать содержимое вырезав символы cut - показать содержимое вырезав символы cut -c 1,4,7 name.txt - показать содержимое вырезав символы cut -d ">" -f 3 filename.txt - прочитает файл, найдет делитель d, на экран показывает третий столбик cat /etc/passwd | cut -f 1,3,6 -d ':' - показать содержимое 1,3,6 столбика вырезав 2,4,5 разделенные символом ':' cat /etc/passwd | cut -d ":" -f 1,3,6 >> /home/pi/p.txt - записать содержимое столбиков 1,3,6 в файл /home/pi/p.txt cat /etc/passwd | cut -d ":" -f 1,3,6 | sort >> /home/pi/p.txt - вытащить из файла /etc/passwd содержимое столбиков 1,3,6 , выполнить сортировку и записать результат в файл /home/pi/p.txt |
8. Регулярные выражения
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
точка . - любой один символ ? - любой один символ * - любое кол-во символов а* - a, ab, abc и aecjejich ^ - начало строки $ - конец строки ^а - Любое «а», находящееся в начале строки *а$ - Любое «а», находящееся в конце строки а.с - Трехсимвольные строки, начинающиеся с «а» и заканчивающиеся на «с» [] - диапазон [^a] - прикол в таких скобках с "^" все что угодно только не "a" [^0-9] [^[:alnun:]] [bcf]at - bat, cat или fat [a-d]at - aat, bat, cat, dat, но не Aat, Bat и т. д. [A-D]at - Aat, Bat, Cat и Dat, но не aat, bat и т. д. 1[3-5]7 - 137,147 и 157 [0-9] [[:digit:]] \d \D [a-z] [A-Z] [a-zA-Z0-9] [[:alnun:]] \w \W [[:space:]] \s \S [A-Z] - большие буквы [0-9] - цифры [a-z] - мелкие буквы [A-Za-z] www\.[a-z]*\.com d{n,m} - квантификатор {} - последовательность touch {6,7,8}.txt - последовательно создаст файлы 6.txt, 7.txt, 8.txt grep -E '[0-9]{1,3}' \tHello - Символ табуляции, предшествующий слову hello \[tT][xX][Tt] - .txt, .TXT, .TxT или другие сочетания на основе изменения регистра \n - новая строка \r - символ возврата Мата символ * Некоторые мета символы сами по себе не соответствуют ничему, но изменяют значение предыдущего символа. Один из таких символов, это * (звездочка), который используется для сопоставления нулевому или большему числу повторений предшествующего символа. Заметьте, это значит, что * имеет другое значение в регулярках, нежели в глоббинге. Вот несколько примеров, и обратите особое внимание на те случаи где сопоставление регулярных выражений отличается от glob-подстановок: ab*c совпадает с «abbbbc», но не с «abqc» (в случае glob-подстановки, обе строчки будут удовлетворять шаблону. Вы уже поняли почему?) ab*c совпадает с «abc», но не с «abbqbbc» (опять же, при glob-подстановке, шаблон сопоставим с обоими строчками) ab*c совпадает с «ac», но не с «cba» (в случае глоббинга, ни «ac», ни «cba» не удовлетворяют шаблону) b[cq]*e совпадает с «bqe» и с «be» (glob-подстановке удовлетворяет «bqe», но не «be») b[cq]*e совпадает с «bccqqe», но не с «bccc» (при глоббинге шаблон точно так же совпадет с первым, но не со вторым) b[cq]*e совпадает с «bqqcce», но не с «cqe» (так же и при glob-подстановке) b[cq]*e удовлетворяет «bbbeee» (но не в случае глоббинга) .* сопоставим с любой строкой (glob-подстановке удовлетворяют только строки начинающиеся с ".") foo.* совпадет с любой подстрокой начинающийся с «foo» (в случае glob-подстановки этот шаблон будет совпадать со строками, начинающимися с четырех символов «foo.») Итак, повторим для закрепления: строчка «ac» подходит под регулярное выражение «ab*c» потому, что звездочка также позволяет повторение предшествующего выражения (b) ноль раз. И опять, ценно отметить для себя, что мета символ * в регулярках интерпретируется совершенно иначе, нежели символ * в glob-подстановках. Начало и конец строки Последние мета символы, что мы детально рассмотрим, это ^ и $, которые используются для сопоставления началу и концу строки, соответственно. Воспользовавшись ^ в начале вашего regex, вы «прикрепите» ваш шаблон к началу строки. В следующем примере, мы используем регулярное выражение ^#, которое удовлетворяет любой строке начинающийся с символа #: $ grep ^# /etc/fstab # /etc/fstab: static file system information. Полно строчные регулярки ^ и $ можно комбинировать, для сопоставлений со всей строкой целиком. Например, нижеследующая регулярка будет соответствовать строкам начинающимся с символа #, а заканчивающимся символом ".", при произвольном количестве символов между ними: $ grep '^#.*\.$' /etc/fstab # /etc/fstab: static file system information. В примере выше мы заключили наше регулярное выражение в одиночные кавычки, чтобы предотвратить интерпретирование символа $ командной оболочкой. Без одиночных кавычек $ исчез бы из нашей регулярки еще даже до того, как grep мог его увидеть. |
8.1 grep
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
!!! Используйте grep -E тогда можно будет использовать нормально регулярные выражения grep "что" "Где" - искать что в файле grep -i "что" "Где" - искать что во всех файла и каталогах игнорируя регистр grep -E "что" "Где" - искать что в файле, использовать нормально регулярные выражения grep -Er "что" * - искать что во всех файлах и каталогах grep -Eri "что" "Где" - искать что во всех файла и каталогах игнорируя регистр grep -Eriv "что" "Где" - показать все файлы где нет что grep -E "[192]+\.[0-9]+\.[0-9]+\.[0-9]" ifconfig | grep -E "[192]+\.[0-9]+\.[0-9]+\.[0-9]" ip a s | grep -E "inet [192]+\.[168]" ip a s | grep -E "[192]+\.[0-9]+\.[0-9]+\.[0-9]" ifconfig | grep -E "[192]+\.[0-9]+\.[0-9]+\.[0-9]" ip a s | grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" ifconfig | grep -E "(^|[[:space:]])[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}($|[[:space:]])" grep -E "[A-Za-z\.]@[A-Za-z]" x.txt grep -i linux ./* - искать linux во всех файла и каталогах игнорируя регистр grep -i linux * - искать linux во всех файла и каталогах игнорируя регистр grep francois myfile.txt - показывает строки, содержащие слово francois из файла myfile.txt grep 404 /var/log/httpd/access_log - показывает строки, содержащие число 404 из /var/log/httpd/access_log grep -Rl Virtual Host /etc/httpd/conf* - показывает строки Virtual Host grep -v 200 /var/log/httpd/access_log* - отображает строки, не содержащие число 200 grep [0-9] /var/log/messages - отобрать и вывести строки содержащие цифровые символы из файла /var/log/messages grep ^Aug /var/log/messages - отобрать и вывести строки, начинающиеся с сочетания символов "Aug", из файла /var/log/messages grep Aug /var/log/messages - отобрать и вывести строки, содержащие сочетание символов "Aug" из файла /var/log/messages grep Aug -R /var/log/* - отобрать и вывести строки, содержащие сочетание символов "Aug", из всех файлов, расположенных в директории /var/log и ниже dmesg | less - показать все устройства переправив вывод в less dmesg | grep -i pci - команда выводит список всех устройств PCI dmesg | grep -i isa - команда выводит список всех устройств ISA dmesg | grep -i memory - показать память dmesg | grep -i scsi - команда выводит список всех устройств scsi dmesg | grep -i usb - команда выводит список всех устройств usb dmesg | grep -i tty - консоль\терминал\ввод dmesg | grep -i cpu - процессор ps auwx | grep init - показывает строки init из выхода ps ps auwx | grep "\[*\]" - показывает команды, заключенные в скобки dmesg | grep "[ ]ata\|^ata" - показывает информацию об устройстве ядра ata getsebool -a | grep ssh - показать правила ssh getsebool -a | grep httpd - показать правила httpd tcpdump -i eth0 -s 0 -A port 80 | grep GET - (-s 0 весь пакет, -A для ASCII) tcpdump |grep -v ssh - поиск пакетов исключая пакеты ssh ls -l /dev | grep -E 'sd|hd' - показать все где есть символ sd или hd |
9. Пере направление ввода и вывода \ stdout \ stdin \ stderr \ Pipe
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
Пере направление потока ввода/вывода Pipe, пайпы, пере направление конвейер - (пайп) - (shift)+(обратная косая черта) = | | - пайп пере направление вывода ; - пайп пере направление вывода () - скобки служат для группирования команд & - говорит о том что команда выполнится в фоне ls /etc | grep abc - смотрим содержимое каталога etc, перенаправляем вывод в grep и получаем файлы в которых есть символ abc cd /etc ; cat passwd - перейти в etc и выполнить cat passwd (sleep 30; echo tttt)& - все что в скобки отправляем в фоновый режим и через 30 сек выводим tttt ps > myfile перенаправит вывод в myfile.txt ( уничтожит текущие содержание файла) ps | less перенаправит вывод в просмотрщик(пейджер) less ps >> myfil.txt если файл есть то допишет в конец файла < - взять входные данные из следующего фала fromdos < from.txt > unix.txt - из fromdos возьмет данные из from.txt и запишет в unix.txt :> filename.txt - дятел, создать пустой файл filename.txt > filename.txt - создать пустой файл filename.txt echo 123 > file.txt - записать 123 в файл file.txt (важно файл будет перезаписан и будет 123) file.txt < echo 123 - записать 123 в файл file.txt (важно файл будет перезаписан и будет 123) echo 222 >> file.txt - дописать в конец файла file.txt 222 file.txt << echo 222 -дописать в конец файла file.txt 222 2> - stderr - ошибки, информация 1> - stdout - вывод (экран) 0> - stdin - ввод (клавиатура) &> - stderr and stdout - ошибки и вывод echo $? Пример с ping: ------------- ip=1.1.1.1 ping -c1 -w1 $ip >/dev/null 2>&1 && echo OK ------------- grep user /etc/* 2> /dev/null - ищем слово user в каталоге /etc/ , поток ошибок перенаправляем в /dev/null grep user /etc/* > good.txt 2> bad.txt - ищем слово user в каталоге /etc/ , поток без ошибок запишем good.txt, поток ошибок перенаправляем в bad.txt grep user /etc/* > good.txt 2> bad.txt - ищем слово user в каталоге /etc/ , поток без ошибок запишем good.txt, поток ошибок перенаправляем в bad.txt grep user /etc/* &> result.txt - ищем слово user в каталоге /etc/ , поток вывода и ошибок запишем result.txt ls -laR / > good.txt 2> bad.txt - показываем содержимое каталога / , поток без ошибок запишем good.txt, поток ошибок перенаправляем в bad.txt ls -laR / &> result.txt - показываем содержимое каталога / , поток вывода и ошибок запишем result.txt |
10. Архивирование \ Сжатие
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
tar cf куда_ИМЯ_будущего_архива.tar что_архивируем tar cvf name.tar myfolder c - create v - verbose - показывать что делает tar f - file ( параметр f всегда должен быть последним ) tar tf my.tar - проверить архив t - test f- file tar xvf my.tar - распаковать содержимое в текущем каталоге x - extract v - vrbose f - file gzip / bzip2 / xz - команды для компрессии файла gzip my.tar - запаковать файл my.tar (файл уменьшится, добавится расширение gz) gzip -9 file1 - поместить файл file1 в архив gzip с максимальной степенью сжатия gunzip my.tar.gz - распаковать файл my.tar.gz bzip2 my.tar - запаковать файл my.tar (файл уменьшится, добавится расширение bz2) bunzip2 my.tar.bz2 - распаковать файл my.tar.bz2 xz my.tar - запаковать файл my.tar (файл уменьшится, добавится расширение xz) unxz my.tar.xz - распаковать файл my.tar.xz tar cvzf mygzip.tar.gz folder1 - создать архив каталога folder1 использовать сжатие gzip tar cvzf mygzip.gz folder1 - создать архив каталога folder1 использовать сжатие gzip хорошим тоном считается писать расширение так tar.gz c - create v - verbose z - сжатие gz f - file (имя файла) tar cvjf myfile.tar.bz2 folder1 - создать архив каталога folder1 использовать сжатие bz2 tar cjf myfile.tar.bz2 folder1 - создать архив каталога folder1 использовать сжатие bz2 c - create v - verbose j - сжатие bz2 f - file (имя файла) tar cvJf myfile.tar.bz2 folder1 - создать архив каталога folder1 использовать сжатие xz tar cJf myfile.tar.bz2 folder1 - создать архив каталога folder1 использовать сжатие xz c - create v - verbose J - сжатие xz f - file (имя файла) tar cvzpf /home/Backup-etc`date +%y_%m_%d`.tgz /etc 2>/home/error.log - создание архива каталога с временной меткой tar -cvf archive.tar file1 file2 dir1 - создать tar архив archive.tar, упаковав в него файлы file1, file2 и директорию dir1 tar -cvf archive.tar file - упаковать в tar-архив archive.tar, файл file tar -cvzf archive.tar.gz dir1 - создать tar архив и сжать его с помощью программы gzip tar -cvjf archive.tar.bz2 dir1 - создать архив и сжать его с помощью bzip2 ( ключ -j работает не во всех *nix системах ) tar -tf archive.tar - вывести содержимое tar архива tar tfv viruses-2010-05-18.tar.bz2 1>zxcvirus.txt - просмотр архива и запись в файл описания tar -xvzf archive.tar.gz - разжать tar архив gz и распаковать его tar -xvjf archive.tar.bz2 - разжать архив bz и распаковать его ( ключ -j работает не во всех *nix системах ) tar -xvf archive.tar - распаковать tar архив в текущей директории ( в принципе указывать метод сжатия не обязательно, tar сам разберется) tar -xvf archive.tar -C /tmp - распаковать архив в /tmp rar rar a file1.rar file1 file2 dir1 - создать rar архив file1.rar, архивировать файлы: file1, file2 и директорию: dir1 rar a file1.rar test_file - упаковать в rar архив file1.rar файл test_file rar x file.rar - разархивировать rar архив file.rar unrar x file1.rar - распаковать rar-архив zip zip file1.zip file1 - создать сжатый zip-архив zip -r file1.zip file1 file2 dir1 - запаковать в архив несколько файлов и/или директорий unzip file1.zip - разжать и распаковать zip-архив |
11. Процессы \ память \ логи
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
top / htop У утилиты top есть параметры, которые облегают жизнь, их мы набираем в top’e когда он запущен: u — и имя пользователя, например u mysql покажет процессы запущенные от пользователя mysql o — используем для сортировки, возможные параметры — pri, size, res, cpu, time, threads m — переключение между режимами отображения нагрузки и ввода-вывода k — завершить процесс, ввод pid процесса r — изменить приоритет процесса, вводим pid процесса n — отображать статистику по определённому процесс a — показывает абсолютные запущенных процессов top -n 3 - запускает top на 3 сек SHIFT+P - отфильтровать по потреблению процессора SHIFT+M -отфильтровать по потреблению памяти q - выход free - показать количество памяти в байтах free -h - показать количество памяти для людей ps - процессы у текущего пользователя u - user a - all x - execute ps -u user - показать процессы у пользователя ps -aux - самая популярная команда /var/log - в этом каталог сохраняются все логи dmesg - лог ядра linux, хранится в оперативной памяти |
lsof
1 2 3 4 5 |
lsof - показывает информацию от откртых сокетах, файлах и сетевых соединениях. lsof -i -n - показывает открытые интернет-соединения lsof -i -n |grep ESTABLISHED - показывает открытые, и установленные сетевые соединения lsof -i -n | grep -i established lsof -i -n | grep -i list |
11.2 Маленький бенчмарк
1 |
wget -qO- bench.sh | bash |
12. Варианты редактирования файлов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
https://b14esh.com/category/nix/vim vi - мощный редактор vim - мощный редактор --------------------- :e **/filename.c редактировать файл (с поиском по имени) :w [fname] записать изменения :wa сохранить изменения во всех файлах :q выйти из редактора :q! выйти из редактора, не сохраняя изменения hjkl перемещение в разные стороны i режим вставки I добавление в начало строки a режим добавления A добавление в конец строки o добавить строку сразу за текущей O добавить строку перед текущей R писать поверх имеющегося текста u, :u[ndo] отмена предыдущего действия (undo) CTR-R, :red[o] отмена отмены предыдущего действия (redo) dd вырезать (удалить) строку cc удалить и начать редактирование yy копировать строку p вставить из буфера обмена <n>d удалить n+1 строку <n>y скопировать n+1 строку ESC перейти в режим просмотра DEL удалить следующий символ :<n> перейти на строку #n % перейти к парной скобке :color <name> выбор цветовой схемы. цветовые схемы: /usr/local/share/vim/vim72/colors/*.vim :pwd текущий каталог :cd [path] перейти в другой каталог :!команда выполнить команду - man, git, и так далее стрелочками вверх и вниз можно авто дополнять команды и искать по истории / поиск, кнопка n далее :<n> перейти на строку #n v + hjkl выделение текста SHIFT + v выделить строку CTRL + v выделение прямоугольника y копировать d удалить p вставить u к нижнему регистру Shift+U к верхнему регистру 172,200d удалить с 172 строки по 200 1,10d удалить с 1 строки по 10 --------------------- pico - простой редактор nano - простой редактор ^ - имеется ввиду Control Ctrl+W - поиск Ctrl+K - вырезать строку Cctrl+U - вставить строку Ctrl+X - выход |
13. типы аккаунтов и виды файлов (ubuntu)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
standart - обычный пользователь administrator - имеет привилегии sudo root - встроенная учетная запись /home - каталог пользователей /home/vasya - каталог пользователя vasya /root - каталог пользователя root /etc/passwd - файл с параметрами настроек пользователей /etc/group - файл групп /etc/shadow - файл с паролями https://b14esh.com/kali/linux-passwords.html как взаимодействуют три файла — passwd, groups и shadow. Файл passwd каждого пользователя содержит строку, построенную по следующему образцу: # Строка в /etc/passwd user_name:x:1000:1000:user_info user_name:/home/user_name:/bin/bash Здесь user_name — это логин; 1000 — идентификационный номер пользователя; 1000 — идентификационный номер основной группы; user_info — полное имя (для электронной переписки, новостей и т. д.); /home/user_name — домашний каталог пользователя; /bin/bash — используемая им оболочка. Идентификатор группы — это уникальный номер, важный для управления правами доступа к файлам. Соответствующая строка в /etc/shadow с информацией о пароле выглядит следующим образом: # Строка в /etc/shadow user_name:$6$9dk0$...:13479:0:99999:7::: имя_пользователя:зашифрованный_пароль:дата_создания_пароля:кол-во_дней_для_смены_пароля:когда_нужно_сменить_пароль:через_сколько_дней_сменить_пароль:когда_пароль_будет_просрочен: Последовательность символов после user_name: — это зашифрованный пароль. Если не задать эту последовательность, то в систему можно будет входить, не указывая пароль. Если определить вместо нее символ * или !, то вход в систему будет запрещен. Номер GID из /etc/passwd должен соответствовать группе из /etc/group. Во многих дистрибутивах каждому обычному пользователю соответствует одноименная группа: # Строка в /etc/group user_name:x:1000: sudo:x:27:user1,user2,user3 whoami - посмотреть под какой учетной записью зашли su username - сменить пользователя id - покажет ID групп в которых состоит текущий пользователь id username - покажет ID групп в которых состоит username last - последний логин в систему, кто? who - кто сейчас логин в систему w - кто сейчас логин в систему и кто сейчас что делает |
14. Пользователи и группы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
sudo useradd -m user1 - создать пользователя, создать для него директорию (-m) sudo passwd user1 - установить пароль для пользователя /etc/skel/ - специальный каталог в котором лежат файлы для новых пользователей. Отсюда они копируются в каталог нового пользователя. sudo touch /etc/skel/xxx.txt - например вот так создали файл xxx.txt теперь он будет появляться у всех новых пользователей sudo userdel user1 - удалить пользователя sudo userdel -r user1 - удалить пользователя вместе с каталогом sudo groupadd prog - создать группу prog sudo groupdel prog - удалить группу prog sudo usermod -aG prog user3 - добавить пользователя user3 в группу prog sudo deluser user3 prog - удалить пользователя user3 из группу prog !!! adduser - команда добавления пользователей !!! почему то ей не пользуются |
15. Права доступа и владения файлами
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
ls -l - покажет какие права на файл/каталог и кто владелец ls -lah - покажет какие права на файл/каталог и кто владелец ls -a - покажет какие права на файл/каталог и кто владелец ls -lh - просмотр полномочий на файлы и директории в текущей директории Основные команды для смены владельца: sudo chown user2 filename.txt - сменить владельца для файла filename.txt на user2 sudo chown -R user1 directory1 - назначить рекурсивно владельцем директории directory1 пользователя user1 sudo chgrp group1 file1 - сменить группу-владельца файла file1 на group1 sudo chgrp Также chown может сменить и владельца и группу: !!! разделителем может быть и . и : и еще что то там ... chown user1:group1 file1 - сменить владельца и группу владельца файла file1 sudo chown pi.pi x.txt - сменить владельца и группу на pi для файла x.txt В файловой системе хранится информация о владельце для. каждого файла и каталога. ls -l /usr/bin/wc - покажет ls кто является владельцем файла права на файл его группу размер. list chown user:group /var/www - смена владельца каталога www (вместо : можно использовать . точку ) (change owner) Права доступа хранятся в четырех восьмеричных цифрах, каждая из которых определяет различные права доступа. Специальная информация uid gid stiky-бит,Пользователь,Группа,Остальные ls -l - файл rw- для user чтение+запись r-- для группы user чтение r-- для остальных пользователей чтение 1 кол-во копий файла(линки) user1 пользователь user1 группа 231M размер файла May месяц создания 1 15:21 время test_21398 имя файла ls -l drwxrwxrwx 2 pi pi 4.0K May 1 11:36 folder1 lrwxrwxrwx 1 pi pi 5 May 3 11:08 myl21 -> x.txt -rw-r--r-- 1 user1 user1 231M May 1 15:21 test_21398 Типы файлов (-)файл (d)каталог (c)идентификатор (l)символьные ссылки (b)блочные устройства (p)именованные каналы (s)сокеты Численное представление: Значение | Права | Права 0 | Ничего не разрешено | --- 1 | Нельзя читать и писать, разрешено исполнять | --x 2 | Нельзя читать и исполнять, разрешено писать | -w- 3 | Нельзя читать, разрешено писать и исполнять | -wx 4 | Разрешено читать, нельзя писать и исполнять | r-- 5 | Разрешено читать и исполнять, нельзя писать | r-x 6 | Разрешено читать и писать, нельзя исполнять | rw- 7 | Разрешено все | rwx Опция | Буква| Значение (кто) | u | Пользователь (User) (кто) | g | Группа (Group) (кто) | o | Другие (Other) (кто) | a | Все (All, ``world'') (действие)| + | Добавление прав (действие)| - | Удаление прав (действие)| = | Явная установка прав (права) | r | Чтение (Read) (права) | w | Запись (Write) (права) | x | Выполнение (Execute) (права) | t |Sticky бит (права) | s | SUID или SGID chmod 777 test - изменит права на файл chmod ugo+rwx test можно так: ---------------------------- 1 = t стикибит stiky-бит 4 = s установка id пользователя 2 = S установка id группы 4 = r чтение 2 = w запись 1 = x выполнение ---------------------------- чтение + запись + выполнение 1+2+4=7 rwx chmod 700 test - пользователю дать права на все ( можно так chmod u+rwx test) ---------------------------- чтение и выполнение 4+1=5 r-x chmod 500 test - пользователю дать права на чтение и выполнение ---------------------------- чтение r-- chmod 400 test пользователю дать права на чтение ---------------------------- выполнение --x chmod 1 test пользователю дать права на выполнение ---------------------------- все права для всех rwxrwxrwx chmod 777 test ---------------------------- chmod + rwx test u - владелец user g - группа group o - остальные owner a - все выше перечисленные ---------------------------- chmod 0700 - drwx------ - Владелец может читать, записывать файлы в данный каталог, а также переходить в него. Все остальные пользователи не имеют к нему доступа chmod 0711 - drwx--x--x - Владелец обладает теми же правами. Все остальные могут открывать каталог, но не могут просматривать или изменять файлы в нем chmod go+r - drwxr--r-- chmod 0777 - drwxrwxrwx - Полный доступ chmod a=rwx - drwxrwxrwx - Полный доступ chmod 0000 - Доступ полностью закрыт chmod a-rwx - Доступ полностью закрыт chmod ббб - Открывает права на чтение и изменение файла chmod go-rw - Не позволяет никому, кроме самого владельца, просматривать, вносить изменения или удалять файл chmod 644 - Только владелец может вносить изменения в файл или удалять его, но все могут его просматривать chmod go-rwx directory1 - отобрать у группы и всех остальных все полномочия на директорию directory1. chown user1 file1 - назначить владельцем файла file1 пользователя user1 chmod u+s /bin/binary_file - назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла. chmod u-s /bin/binary_file - снять SUID-бит с файла /bin/binary_file. chmod g+s /home/public - назначить SGID-бит директории /home/public. chmod g-s /home/public - снять SGID-бит с директории /home/public. chmod o+t /home/public - назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам chmod o-t /home/public - снять STIKY-бит с директории /home/public umask umask 0022 - обратная команда chmod 0022 значение по умолчанию umask 0066 - Создает каталоги с правами доступа drwx--x--x и файлы с правами доступа -rw------- umask 0077 - Создает каталоги с правами доступа drwx------ и файлы с правами доступа -rw------- umask 0022 - Создает каталоги с правами доступа drwxr-xr-x и файлы с правами доступа -rw-r--r-- umask 0777 - Создает каталоги с правами доступа d--------- и файлы с правами доступа ---------- ДОП: find / -perm -u+s - найти, начиная от корня, все файлы с выставленным SUID lsattr lsattr /etc/host* - отображает атрибуты /etc/host* lsattr -aR /tmp/ | less - рекурсивно отображает все атрибуты каталога /tmp Дефисы соответствуют 13 атрибутам ext2/ext3, которые могут быть установлены. Ни один из них не является отображаемым по умолчанию: а (только добавление), с (сжатый), d (без дампа), I (постоянный), j (регистрация данных), s (безопасное удаление), t (запрет слияния в конце файла), и (не удаляемый), А (без обновления atime), D (синхронные обновления каталогов), S (синхронные обновления) и Т (верхушка дерева каталогов). chattr +i whatever.iso - с помощью команды chattr вы можете изменять эти атрибуты Стикибит t Есть смысл устанавливать на каталоги. Позволяет только владельцу удалять файлы из каталога. sudo chmod o+t myfolder - добавить стикибит sudo chmod o-t myfolder - удалить стикибит sudo chmod 1777 myfolder - добавить стикибит sudo chmod 0777 myfolder - удалить стикибит |
16. Сетевые команды
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
ifconfig - информация о сетевых устройствах ifconfig -a - покажет все сетевые интерфейсы (неактивные в том числе) ip addr show - информация о сетевых устройствах route - информация о маршрутах sudo route - информация о маршрутах ip route show - информация о маршрутах ping ya.ru - тестирование доступности хоста ya.ru ( ctrl+c прервать) ping -c 4 ya.ru google.com - тестирование доступности хоста ya.ru traceroute ya.ru - покажет через какой маршрут идет пакет до ya.ru host www.microsoft.com - покажет ip DNS и т.д. dig www.microsoft.com - покажет ip DNS и т.д. netstat — показывает активные сетевые соединения. netstat -tpnl - показать tcp port listen namber(номера портов) netstat -w 1 — количество пакетов в настоящее время. netstat -ibt — вывод сетевых интерфейсов с разбивкой по IP адресам, отображает объём трафика, количество ошибок, коллизий netstat -rn — отображает таблицу маршрутизации netstat -a - перечислить все порты netstat -at - перечислить все TCP порты netstat -au - перечислить все UDP порты netstat -l - перечислить все прослушиваемые порты (состоянии LISTEN) netstat -lt - перечислить прослушиваемые TCP порты (состоянии LISTEN) netstat -lu - перечислить прослушиваемые UDP порты (состоянии LISTEN) netstat -lx - перечислить прослушиваемые UNIX сокеты (состоянии LISTEN) netstat -s - показать статистику всех портов netstat -st - показать статистику только TCP портов netstat -su - оказать статистику только UDP портов netstat -p - отображение PID и имени процесса в выводе netstat netstat -an - ключ n отключает разрешение имён в выводе netstat -c - вывод информации netstat непрерывно (как top,htop) netstat -r - таблица маршрутизация ядра netstat -ap | grep ssh - соответствие портов и процессов (ssh) netstat -an | grep ':80' - соответствие портов и процессов (порт 80) netstat -i - показать список сетевых интерфейсов netstat -lnptux -l все открытые порты (LISTEN) -t по протоколу TCP -u по протоколу UDP -x по протоколу UNIX Socket -n без резолва IP/имён -p но с названиями процессов и PID-ами ss - информация о соединениях ss -s - общая информация о соединениях 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 -tulpan - показать все ifconfig - проверка состояния сетевых интерфейсов ifconfig -a - покажет все сетевые интерфейсы (неактивные в том числе) ifconfig eth0 down - отключить сетевой интерфейс eth0 (команда устарела) ifocnfig eth0 up - включить сетевой интерфейс eth0 (команда устарела) ifdown eth0 - отключить сетевой интерфейс ifup eth0 - включить сетевой интерфейс ip - управление сетевыми интерфейсами (замена ifconfig) ip help - помощь по команде ip ip addr help - помощь ip route help - помощь ip tunnel help - помощь ip addr show - получение информации о всех сетевых интерфейсах ip a - получение информации о всех сетевых интерфейсах ip addr show eth0 - отобразит информацию о eth0 sudo apt install open-ssh - установка ssh sudo ewf allow 22 - разрешить порт 22 ssh name_user@name-server - подключится к серверу name-server ipcalc -bmn 192.168.1.100/27 - расчет маски под сети хост-компьютерам с помощью CIDR IP- адреса dhclient eth0 - включить DHCP на сетевом интерфейсе eth0 ethtool eth0 - вывод статистики по сетевому интерфейсу eth0 hostname - вывести имя компьютера host http://www.example.com - преобразовать домен http://www.example.org в ip-адрес и наоборот ifconfig eth0 - вывести настройки сетевой карты eth0 ifconfig eth0 promisc -переключить интерфейс eth0 в promiscuous-режим для сбора ( сниффинг ) сетевых пакетов ifup eth0 - включить сетевой интерфейс eth0 ifdown eth0 - отключить сетевой интерфейс eth0 ifconfig eth0 192.168.1.1 netmask 255.255.255.0 - назначить IP адрес и маску сетевому интерфейсу eth0 ip link show - вывести статус связи всех сетевых интерфейсов iwconfig eth1 - вывести конфигурацию беспроводного сетевого интерфейса eth1 iwlist scan - сканирование и поиск беспроводных сетей и точек доступа mii-tool eth0 - вывести состояние связи сетевого интерфейса eth0 nslookup http://www.example.com - ресольвить ( преобразовать/разрешить ) доменное имя http://www.example.org в ip-адрес и наоборот route -n - показать локальную таблицы маршрутизации (маршруты) route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 - добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1 route add -net 0/0 gw IP_Gateway - назначить ip-адрес шлюза по умолчанию ( default gateway ) route del 0/0 gw IP_gateway - удалить ip-адрес шлюза по умолчанию ( default gateway ) netstat -tup - выводит листинг всех установленных соединений по протоколам TCP и UDP без разрешения имён в ip-адреса а так-же PID'ы и имена процессов, обслуживающих данные соединения netstat -tupl - вывод списка соединений по протоколам TCP и UDP без разрешения имён в ip-адреса а так-же и PID'ы и имена процессов, ожидающих соединений на сетевых портах netstat -rn - вывести таблицу маршрутизации, аналог команды route -n echo "1" > /proc/sys/net/ipv4/ip_forward - разрешить форвардинг ( пересылку ) пакетов tcpdump tcp port 80 - отлавливать и выводить весь трафик на TCP-порт 80 (обычно - HTTP) whois http://www.example.com -вывести информацию о доменном имени из базы данных whois (аналог команды host) ifconfig / route / forward / быстрая настройка сети 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 |
16.1 iptables
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
PACKET IN --->---PREROUTING---[ маршрутизация ]--->----FORWARD---->---POSTROUTING--->--- PACKET OUT - mangle | - mangle - mangle - nat (dst) | - filter - nat (src) | | | | INPUT OUTPUT - mangle - mangle - filter - nat (dst) | - filter | | `---->----[ приложение ]---->----' # 0 ##### 1 ######## 2 # 3 ###### 4 ##### #0 Опция -t задает таблицу. Если опция упущена, то по умолчанию предполагается использование таблицы filter. Если предполагается использование другой таблицы, то это требуется указать явно. #1 Mangle - обычно эта цепочка используется для внесения изменений в заголовок пакета, например для изменения битов TOS и пр. Nat - эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях. Filter - здесь производится фильтрация трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили. #2 Далее, непосредственно за именем таблицы, должна стоять команда. Если спецификатора таблицы нет, то команда всегда должна стоять первой. Команда определяет действие iptables, например: вставить правило, или добавить правило в конец цепочки, или удалить правило и т.п. Список команд: -A имя-цепочки правило (добавить правило в конец цепочки; ключ --set-counters позволяет установить счётчики пакетов и байтов) -I имя-цепочки номер правило (вставить правило в цепочку перед правилом с указанным номером, нумерация с 1; ключ --set-counters позволяет установить счётчики пакетов и байтов) -R имя-цепочки номер правило (заменить; ключ --set-counters позволяет установить счётчики пакетов и байтов) -D имя-цепочки номер (удалить правило с указанным номером, нумерация с 1) -D имя-цепочки правило (удалить правило по текстуальному совпадению) -C имя-цепочки пакет (тестировать прохождение пакета; исходящий адрес, адрес назначения, протокол, интерфейс, порты задаются соответствующими ключами) -L [имя-цепочки] (показать список правил; дополнительные ключи: -v (вывести дополнительную информацию, в частности, счётчики) --exact (показывать счётчики без округления до KB, MB и т.д.) --numeric (показывать адреса и номера портов в виде чисел) --line-numbers (выводить номера правил) -F имя-цепочки (удалить все правила из цепочки) -Z имя-цепочки (обнулить счетчики) -N имя-цепочки (создать цепочку) -X имя-цепочки (удалить пустую цепочку, на которую нет ссылок) -P имя-цепочки действие (изменить действие по умолчанию: ACCEPT, DROP, QUEUE, RETURN) -E старое-имя-цепочки новое-имя-цепочки (переименовать цепочку) #3 Раздел шаблон задает критерии проверки, по которым определяется подпадает ли пакет под действие этого правила или нет. Здесь можно указать самые разные критерии - IP-адрес источника пакета или сети, сетевой интерфейс. IP-адрес места назначения, порт, протокол и т.д. Остальные параметры для фильтации можно посмотреть в справке по утилите iptables(man iptables) #4 И наконец действие указывает, какое действие должно быть выполнено при условии выполнения критериев в правиле. Здесь можно заставить ядро передать пакет в другую цепочку правил, "сбросить" пакет, выдать на источник сообщение об ошибке и т.п. Список некоторых действий: ACCEPT - пропустить пакет; просмотр таблицы завершается DROP - выбросить молча; просмотр завершается не только для текущей цепочки, но и для других таблиц REJECT - выбросить, известив отправителя (--reject-with тип-извещения) iptables -L - вывести список правил iptables -S - вывести список правил iptables -L -n -v - вывести список правил (-n не резолвить IP) (-v Отображение подробной информации) iptables -L -n -v --line-numbers - просмотр правил с номером строки iptables -L INPUT -n -v - просмотра INPUT iptables -L OUTPUT -n -v --line-numbers - просмотра OUTPUT iptables -L INPUT -n --line-numbers - просмотр правил с номером строки в INPUT iptables -L OUTPUT -n --line-numbers - просмотр правил с номером строки в OUTPUT iptables -L OUTPUT -n --line-numbers | less - просмотр правил с номером строки в OUTPUT перенаправив вывод в less iptables -L OUTPUT -n --line-numbers | grep 8.8.8.8 - просмотр правил с номером строки в OUTPUT грепаем 8.8.8.8 iptables -F INPUT - очистка таблицы filter iptables -F OUTPUT - очистка таблицы filter iptables -F FORWARD - очистка таблицы filter iptables -F - Удаление всех правил (flushing) open firewall: iptables -F iptables -X iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p tcp -m tcp --tcp-fl ags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT # Небольшая защита от DoS iptables -A INPUT -p all -m state --state RELATED,ESTABLISHED -j ACCEPT # Разрешаем уже установленные соединения iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT # Разрешаем 22 порт iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT # Разрешаем 80 порт iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 3 -j ACCEPT # Разрешаем некоторые ICMP-сообщения iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 11 -j ACCEPT # Разрешаем некоторые ICMP-сообщения iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 12 -j ACCEPT # Разрешаем некоторые ICMP-сообщения iptables -t nat -A PREROUTING -p tcp --dport 3389 -i eth0 -j DNAT --to 192.168.0.100 # Проброс RDP на сервер терминалов iptables -A FORWARD -i eth0 -d 192.168.0.100 -p tcp --dport 3389 -j ACCEPT # Проброс RDP на сервер терминалов iptables -P INPUT DROP forward: iptables -t nat -A POSTROUTING -o eth1_internet -j SNAT --to-source eth2_local echo "1" > /proc/sys/net/ipv4/ip_forward service iptables stop - Остановка service iptables start - Запуск service iptables restart - Перезагрузка service iptables save - Сохранить правила брандмауэра (CentOS / RHEL / Fedora Linux) iptables-save - Сохранить правила iptables-save > /root/my.active.firewall.rules - Сохранить правила (в других дистрибутивах) |
17. Скачивание файлов wget
1 2 3 4 5 6 7 8 9 |
wget -r -l 10 -k http://example.org/ Скопировать весь сайт целиком wget --user=login --password=password ftp://ftp.example.org/some_file.iso - использование имени пользователя и пароля на FTP/HTTP wget --continue --recursive --level=1 http://www.vereskmed.ru/music/album_1/ - Ну вот для примера простая команда для скачивания всего первого альбома wget ftp://login:password@ftp.example.org/some_file.iso - использование имени пользователя и пароля на FTP/HTTP wget ftp://myftpserver/имя.abc wget -c ftp://myftpserver/имя.abc wget -t 20 --retry-connrefused http://mydownloadserver/имя.iso wget -p -k -E -H http://mysite.com/site.html wget -r -l 4 -p -E -k http://mysite.com |
18. Установка и удаление программ APT (Debian, Ubuntu)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
whereis - поможет в поиске установленных программ, пакетов whereis ssh - найти файлы ssh /etc/apt/sources.list - тут список репозиториев apt-get install --reinstall proga - переустановка программы apt-get remove --purge proga - удаление месте с конфигурациями apt-get check - проверяет состояние зависимостей в системе. apt-get -f install - Попытка привести систему в замкнутый, логичный вид apt-get dist-upgrade - модернизировать систему apt-get update - поиск обновлений apt-get autoclean - удаляет не полностью загруженные или еще не установленные пакеты apt-get clean - удаляет из папки /var/cache/apt/archives все кэшированные пакеты для освобождения места на диске apt-cache show пакет - показывает сводку на указанный пакет apt-cache search <ключевое слово> - выполняет поиск по ключевому слову в базе данных программных пакетов (нечувствителен к регистру). apt-cache stats - выводит статистику по всем установленным пакетам apt-cache depends - выводит взаимозависимости программного пакета (установленного или нет) apt-cache pkgnames - выводит список всех установленных пакетов apt-key adv --keyserver mame_server --recv-keys 12345678 - команда запросит ключ 12345678 с сервера ключей apt-key list - отображает ключи gpg, известные APT apt-config -V - выводит информацию о версиях установленных приложений APT add-apt-repository идентификатор_РРА - добавления репозитория add-apt-repository ppa:tualatrix/ppa - добавления репозитория aptitude install rar unrar p7zip-full - установка rar unrar 7zip aptitude update - обновления индексов репозиториев aptitude safe-upgrade - установки всех доступных обновлений Очистка кэшированных пакетов ---------------------------- apt-get clean find /var/cache/apt/ -name \*.deb ---------------------------- apt-get remove mpt-status убираем ошибку на виртуалке связанную с raid gpg --- gpg --keyserver wwwkeys.us.pgp.net --recv-keys ключ gpg --armor --export ключ | apt-key add - apt-get update --- dpkg ---- dpkg -l - получить список установленных пакетов dpkg -l namepacket - выводит информацию о заданном DEB файле dpkg -L namepacket - покажет все файлы пакета dpkg -i namepacket - установить пакет (-i install) dpkg -r -P namepaket - удалить пакет (-r remove -P purge) dpkg -с <файл DEB> - отображает файлы, установленные с помощью заданного DEB-файла (файл DEB должен быть указан в таком виде: путь к файлу/имя файла) dpkg -p namepacket - отображает информацию о заданном программном пакете dkpg -S namepacket - Показывает пакеты, в которых был найден файл с заданным именем. Результатом выполнения команды может быть путь к файлу или просто его имя. dpkg -x file_DEB /folder - Распаковывает файлы, содержащиеся в DEB-файле, в указанную папку. После завершения операция восстановит права доступа к указанной папке. ---- dpkg-reconfigure — программа для перенастройки установленного любого пакета ---------------- dpkg-reconfigure tzdata - изменить временную зону dpkg-reconfigure exim4-config - перенастроить пакет exim4 dpkg-reconfigure locales - настроить локали (язык) dpkg-reconfigure console-data - настройки раскладки клавиатуры dpkg-reconfigure gdm - выбор DM (display manaager) в ubuntu ---------------- cpio — конвертация пакетов rpm в формат cpio (формат cpio работает во всех linux) ---- rpm2cpio name_packet.rpm > name.cpio ---- |
19. Установка и удаление программ RPM (RedHat, CentOS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
whereis - поможет в поиске установленных программ, пакетов whereis ssh - найти файлы ssh ----------------------------------------- yum update - получить список обновлений yum upgrade - обновить пакеты yum -y install epel-release - добавить репозиторий epel yum provides "*bin/top" - найти пакет, который содержит файл ----------------------------------------- tail /var/log/yum.log - просмотреть лог ----------------------------------------- yum help - отображение команд и опций ----------------------------------------- yum list - список названий пакетов из репозиторий yum list available - список всех доступных пакетов yum list installed - список всех установленных пакетов yum list installed httpd - установлен ли указанный пакет yum list all - список установленных и доступных пакетов yum list kernel - список пакетов, относящихся к ядру ----------------------------------------- yum info httpd - отображение информации о пакете yum deplist httpd - список зависимостей и необходимых пакетов yum provides "*bin/top" - найти пакет, который содержит файл yum search httpd - поиск пакета по имени и описанию ----------------------------------------- yum updateinfo list security - получить информацию о доступных обновлениях безопасности ----------------------------------------- yum grouplist - вывести список групп yum groupinfo "Basic Web Server" - вывести описание и содержимое группы yum groupinstall "Basic Web Server" - установка группы пакетов «Basic Web Server» yum groupremove "Basic Web Server" - удаление группы ----------------------------------------- yum check-update - проверка на доступные обновления ----------------------------------------- yum repolist - список подключенных репозиториев yum repoinfo epel - информация об определенном репозитории yum repo-pkgs epel list - информация о пакетах в указанном репозитории yum repo-pkgs reponame install - установить все пакеты из репозитория yum repo-pkgs reponame remove - удалить пакеты установленные из репозитория ----------------------------------------- yum makecache - создать кэш yum check - проверить локальную базу rpm (поддерживаются параметры dependencies, duplicates, obsoletes, provides) yum history list - просмотр yum истории (вывод списка транзакций) yum history info 9 - просмотр информации определенной транзакции (установленные пакеты, установленные зависимости) ----------------------------------------- yum clean packages - удалить пакеты сохраненные в кэше yum clean all - удалить все пакеты и метаданные ----------------------------------------- yum update - обновить все пакеты yum update-to - обновить до определенной версии ----------------------------------------- yum localinstall httpd.rpm - установить из локальной директории yum install httpd.rpm - установить из локальной директории yum localinstall http://server/repo/httpd.rpm - установить с http ----------------------------------------- yum downgrade - откатиться к предыдущей версии пакета yum reinstall httpd - переустановка пакета (восстановление удаленных файлов) yum autoremove - удаление ненужных более пакетов ----------------------------------------- createrepo - создание локальных репозиториев (createrepo ставится отдельно) yum-cron - установка обновлений по расписанию (yum-cron устанавливается отдельно) ----------------------------------------- yum -y install epel-release - добавление репозитория EPEL ----------------------------------------- rpm -ivh package.rpm - установить пакет с выводом сообщений и прогресс-бара rpm -ivh --nodeps package.rpm - установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей rpm -U package.rpm - обновить пакет без изменений конфигурационных файлов, в случае отсутствия пакета, он будет установлен rpm -F package.rpm - обновить пакет только если он установлен rpm -e package_name.rpm - удалить пакет rpm -qa - отобразить список всех пакетов, установленных в системе rpm -qa | grep httpd - среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени "httpd" rpm -qi package_name - вывести информацию о конкрентном пакете rpm -qg "System Environment/Daemons" - отобразить пакеты входящие в группу пакетов rpm -ql package_name - вывести список файлов, входящих в пакет rpm -qc package_name - вывести список конфигурационных файлов, входящих в пакет rpm -q package_name --whatrequires - вывести список пакетов, необходимых для установки конкретного пакета по зависимостям rpm -q package_name --whatprovides - show capability provided by a rpm package rpm -q package_name --scripts - отобразит скрипты, запускаемые при установке/удалении пакета rpm -q package_name --changelog - вывести историю ревизий пакета rpm -qf /etc/httpd/conf/httpd.conf - проверить какому пакету принадлежит указанный файл. Указывать следует полный путь и имя файла. rpm -qp package.rpm -l - отображает список файлов, входящих в пакет, но ещё не установленных в систему rpm --import /media/cdrom/RPM-GPG-KEY - ипортировать публичный ключ цифровой подписи rpm --checksig package.rpm - проверит подпись пакета rpm -qa gpg-pubkey - проверить целостность установленного содержимого пакета rpm -V package_name - проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменеия пакета rpm -Va - проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью! rpm -Vp package.rpm - проверить пакет, который ещё не установлен в систему rpm2cpio package.rpm | cpio --extract --make-directories *bin* - извлечь из пакета файлы содержащие в своём имени bin rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm - установить пакет, собранный из исходных кодов rpmbuild --rebuild package_name.src.rpm - собрать пакет из исходных кодов |
20. Bash скрипты переменные \ параметры \ запуск программ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
https://www.youtube.com/watch?v=qZjnr66Cys4&list=PLg5SS_4L6LYuE4z-3BgLYGkZrs-cF4Tep&index=19 myscript1.sh ------- #!/bin/bash echo "hellow this message this script" echo "Lets, show files this folder" ls echo "ls /etc/" ls /etc/ #echo "run xterm" #xterm & echo "Done" ------- sudo chmod u+x myscript1.sh - для того чтобы выполнить скрипт нужно дать права на исполнение +x !!! bash myscipt.sh - права то нужны, но если натравить bash то он будет выполнен script2.sh ---------- #!/bin/bash mycomputer="SUPERPC" myOS=`uname -a` echo "This script name is $0" echo "privet $1" echo "Hello $2" num1=50 num2=45 summa=$((num1+num2)) echo "$num1 + $num2 = $summa" myhost=`hostname` mygtw="8.8.8.8" ping -c 4 $myhost ping -c 4 $mygtw echo -n "This is done..." echo "Realy done" ---------- `name_comman` - передать команду - ` это скобка возле кнопки тильда ~ $0 - это зарезервированное значение имя самого файла скрипта $1 - это первый параметр $2 - это второй параметр $3...... - далее параметр bash myscript2.sh - права то нужны, но если натравить bash то он будет выполнен sudo chmod u+x myscript2.sh - для того чтобы выполнить скрипт нужно дать права на исполнение +x bash myscript2.sh vasya kolia script3.sh ---------- #!/bin/bash echo "superping $0" echo "Нужно передать параметры!!" echo "Первый параметр что пингуем ping " echo "Второй что traceroute" echo "Третий что host " echo ">>>>>>>>>>>>>>>>Первый пошол $1" ping -c 4 $1 echo ">>>>>>>>>>>>>>>>Воторй пошол $2" traceroute $2 echo ">>>>>>>>>>>>>>>>Третий пошол $3" host $3 echo ">>>>>>>>>>>>>>>>Done" ---------- |
21. Скрипты bash \ if \ else \ case \ for \ while
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
https://www.youtube.com/watch?v=s6OOqqrdzFI&list=PLg5SS_4L6LYuE4z-3BgLYGkZrs-cF4Tep&index=20 myscript4.sh ------------ #!/bin/bash if [ "$1" == "Vasya" ]; then echo "Privet $1" elif [ "$1" == "Trump" ]; then echo "Hello $1" else echo "Zadarova $1" fi x=$2 echo "Starting CASE selection......." case $x in 1) echo "This is one";; [2-9]) echo "Two-Nine";; "Petya") echo "Privet $x";; *) echo "Parammetr Unknown, sorry!" esac ------------ chmod a+x script4.sh ./myscript4.sh ./myscript4.sh Trump ./myscript4.sh Trump 3 ./myscript4.sh Trump 7777 ./myscript4.sh Trump Petya ./myscript4.sh Vasya Petya ./myscript4.sh 333333333 8888888 myscript5.sh ------------ #!/bin/bash read -p "Enter something Vasya, Trump, Petya, * : " y if [ "$y" == "Vasya" ]; then echo "Privet $y" elif [ "$y" == "Trump" ]; then echo "Hello $y" else echo "Zadarova $y" fi echo "Please enter something" echo "1, 2-9, Petya, *" read x echo "Starting CASE selection......." case $x in 1) echo "This is one";; [2-9]) echo "Two-Nine";; "Petya") echo "Privet $x";; *) echo "Parammetr Unknown, sorry!" esac ------------ chmod a+x myscript5.sh myscript6.sh ------------ #!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]; do echo "Current counter is $COUNTER" COUNTER=$(($COUNTER+1)) # let COUNTER=COUNTER+1 # let COUNTER+=1 done for myfile in ls *.txt; do cat $myfile done for x in {1..10}; do echo "X = $x" done for (( i=1; i<=10; i++)); do echo "Nimber I = $i" done ------------ -lt - меньше chmod a+x myscript6.sh myscript7.sh ------------ summa=0 myFunction() { echo "This is text from function" echo "first parameter is: $1" echo "Second parametr is: $2" summa=$(($1+$2)) } myFunction 50 10 echo "Summa = $summa" ------------ |