Команды linux
Просмотр web:
curl -s http://example.com | lynx -stdin -dump
lynx 192.168.56.105 --dump| less
curl -s http://example.com | html2text -utf8
при не срабатывании tab в ubuntu:
1. установить - sudo apt install bash-completion
2. запустить скрипт - source /etc/profile.d/bash_completion.sh
LC_ALL=C - это комбинация, которая меняет язык/локаль для одной команды. Например чтобы вывести справку в оригинале.
<какая то команда> | column -t - выравнивает вывод команды по столбцам.
/etc/machine-id - рандомное 16иричное число определяющее индивидуальное id машины.
pgrep <имя процесса> - выдает ID процесса
sudo smartctl -a /dev/sda - вывод данных диска sdd (похоже на fdisk -l)
systemd-nspawn - это утилита из пакета systemd для создания легковесных контейнеров (неполной виртуализации). Она позволяет запускать команды или целые ОС в изолированном окружении на уровне процессов, сети и файловой системы.
neofetch, screenfetch - утилита которая выводит в терминал информацию о системе рядом с красочным ASCII-логотипом дистрибутива
wc - утилита возвращает количество срок, слов и символов в указанном тексте(вывод из файла или другой утилиты).
uniq -[опция] [имя файла] - удаляет повторяющиеся строки. -c количество повторений. -d дублируемые строки. -u в единственном экземпляре.
>[имя файла], touch [имя файла] - создается пустой файл.
alias - выводит список alias текущего пользователя
apropos [искомый текст] - ищет искомый текст во всех man справочниках установленных в системе.
file - определяет тип файла: текстовый файл, директория, программа, скрипт
type - показывает является ли указанное ИМЯ: Встроенной командой оболочки (shell builtin), Внешней программой/исполняемым файлом, Алиасом , псевдонимом, Функцией, Зарезервированным словом.
chmod - управлением правами доступа к файлам и папкам.
chown - изменение владельца или группы для файла или директории.
hash - выводит список команд которые попали в хэш таблице. Хэш таблица создается в начале сессии в нее заносятся внешние выполняймые команды такие как: ls, chmod и другие.
help - выводит список внутренних команд bash.f
w - показывает кто сейчас находится в системе и что они делают.
whatis - краткая справка по команде.
reset - перезагружает терминал сбрасывает его настройки на настройки по умолчанию.(используется при "сломанном терминале")
trans - построчный перевод текста (устанавливается пакет translate-shell)
less - построчный или постраничный просмотр текстовых файлов. (пример less -Ip "[текст для поиска]" [путь к файлу] - регистра независимый поиск в тексте)
locate [имя или часть имени] - Команда locate используется в Linux для быстрого поиска файлов и директорий по их имени. После установки locate необходимо обновить базу данных (sudo updatedb).
sudo updatedb - Обновить базу данных вручную ( используется если команда locate не может найти недавно созданный файл.)
fc [номер команды в истории(history)] - открывает текстовый редактор с введенной командой. Можно ввести несколько команд в текстовый редакторе чтобы они выполнились.
sort - сортирует полученный текст по алфавиту(по умолчанию).
; - ожидание выполнения команды с левой стороны. (пример: find [имя файла]; pwd)
source [имя файла скрипта] - скрипт выполняется в текущей оболочке bash что добавляет все переменные в текущею оболочку.
. [имя файла скрипта] - аналог предыдущей команда.
evn - выводит список всех переменных.
export [имя переменной] - Добавляет или обновляет переменную в текущею оболочку.
lspci - список устройств подключенных к шине PCI. (-v более подробно)
lsusb - информация о всех usb концентраторах и usb устройствах. (-v более подробно)
lscpu - информация о процессоре.
nl [параметр] [имя файла] - нумерация строк в файле.(-s[указать разделитель между цифрой и текстом строки], w[число]-указать отступ по нумерации строк).
cat [один или список файлов через пробел] - выводит содержимое файлов на экран. (cat >[имя файла] -выводится текст с начало на экран потом в текстовый файл ctrl+d команда прерывается в файл записывается набранный текст.)
tac [один или список файлов через пробел] - выводит текст файла с последней до первой строки. т.е. порядок строк наоборот.
less [имя файла ] - просмотр в построчном режиме. ПРИ нажатии (v) переход в текстовый редактор по умолчанию.
cut -[параметр] [имя файла] - вырезает часть текста, используется для вывода столбцов. Параметр -с1-9 - вырезает символы 1го по 9ый. Параметр -d ',' -f 2 - выводит 2й столбец с разделителем (,).
tr [символ 1] [символ 2] - замена символа 1 на символ 2 по всему тексту. Также меняет диапазоны символа a-z на A-Z или a-z,A-Z на 0-1.
rev [строка] - переворачивает строку. (И последние станут первыми)
diff -[параметр] [имя файла1] [имя файла2] - построчно сравнивает файл 1 и 2 и если находит различия выводит сообщение.
cmp -[параметр] [имя файла1] [имя файла2] - побайтное сравнение 2х файлов. с параметром s возвращает 0 - одинаковые 1 - разные 2 - ошибка.
banner [текст баннера] - выводит большими буквами 5ть раз больше шрифта текст баннера.
cksum [путь/к/файл] - выводит контрольную сумму по CRC алгоритму.
md5sum [путь/к/файл] - выводит контрольную сумму по md5 алгоритму.
ln [путь/к/файл] [путь/к/ссылке] - создает жесткую ссылку.
ln -s [путь/к/файл] [путь/к/ссылке] - создает символическую ссылку.
yes [текст сообщения] - выводит текст сообщения пока команда не будет прервана. Если сообщение не задано выводит (y).
recode -[параметр] - преобразует файлы из одного формата в другой.
paste [имя файла] [имя файла] - построчно объединяет два файла. -d '|' - указывает явный разделитель.
shuf [имя файла] - перемешивает строки в случайном порядке.
pwgen [опция] - генерирует строку со случайным набором букв и цифр.
cat /etc/*release (или /etc/*rel*) - информация о системе (alt linux Это /etc/os-release)
runlevel - текущий уровень выполнения Linux.(обычно от 2-5. 5 стандарт где все разрешено)
stat [имя файла] - выводит подробные метаданные о файлах или файловых системах.
----------------------------------------------------------Для проксирования пакетов в командной оболочке
export http_proxy="http://user:password@ip-address:port" - ввести параметры своего прокси в нужные места. Все команды которые обращаются в интернет в оболочке должны использовать данный прокси.
export https_proxy="http://user:password@ip-address:port" - проксирование по https протоколу
Настройка по умолчанию команды запускаются при старте системы
в файл ~/.bashrc
добавить:
export http_proxy="http://user:password@ip-address:port"
export https_proxy="http://user:password@ip-address:port"
export ftp_proxy="http://user:password@ip-address:port"
export no_proxy="localhost,127.0.0.1,::1"
-----------------------------------------------------------
-----------------------------------------------------------Проверка DNS
host [имя домена] - проверка домена на преобразования в ip адрес
dig [имя домена] - просмотр А записей у DNS домена.
getnet -(узнать подробней ка работает.)
------------------------------------------------------------------------------------------ssh
ssh-keygen -t [тип шифрования](пример: ed25519) - создание ключей шифрования
ssh-copy-id -p [номер порта] -i [имя файла(пить к ключу шифрования)] [имя пользователя]@IP устройства] - скопировать открытый ключ шифрования на устройство.
/etc/ssh/sshd_config - для отказа входа root установить параметр: PermitRootLogin no.
- отключение входа по логину паролю: PasswordAuthentication no.
- отключить "интерактивную" аутентификацию по паролю: KbdInteractiveAuthentication no.
- оставить root-доступ, но только по ключу: PermitRootLogin prohibit-password
- не разрешать root вход: PermitRootLogin no.
ssh [имя пользователя]@[имя или IP системы] "[bash команда]" - удаленное выполнение команд через ssh команда с параметрами берется в кавычки.
ssh -X [имя пользователя]@[имя или IP системы] "[bash графическая команда]" - если параметр( X11Forwarding yes ) в /etc/ssh/sshd_config включен то через ssh можно запустить графическое приложение.
ssh -X [имя пользователя]@[имя или IP системы] - если включено ( X11Forwarding yes ) в /etc/ssh/sshd_config можно запускать графические программы на удаленной системе.
ssh -p [номер порта] [имя пользователя]@[имя или IP системы] - подключение по определенному порту.
------------------удаленное копирование
недостатки: потеря атрибутов, потеря символических ссылок.
scp [имя файла(что копируем)] [имя пользователя]@[имя или IP системы]:[имя файла(куда копируем)] - удаленное копирование. Копируется из настольной системы в подключаемую систему.
пример:
scp /home/sa/file*.txt sa@172.17.47.20:~/testcopy
scp [имя пользователя]@[имя или IP системы]:[имя файла(что копируем)] [имя файла(куда копируем)] - удаленное копирование. Копируется из удаленной системы в настольную систему.
пример:
scp sa@172.17.47.20:~/testcopy /home/sa/newtestcopy
scp -P [номер порта] [имя каталога(что копируем)] [имя пользователя]@[имя или IP системы]:[имя каталога(куда копируем)] - P заглавная при указании порта.
scp -r [имя каталога(что копируем)] [имя пользователя]@[имя или IP системы]:[имя каталога(куда копируем)] - рекурсивное копирование всего каталога на удаленный ПК.
пример:
scp -r /home/sa/dir sa@172.17.47.20:~/testcopy
scp -r [имя пользователя]@[имя или IP системы]:[имя каталога(куда копируем)] [имя каталога(что копируем)] - рекурсивное копирование всего каталога на свой пк с удаленного.
пример:
scp -r sa@172.17.47.20:~/testcopy /home/sa/dir
------------------------------------------------------------------------------------------ssh
-------------------------------------------------------------rsync
rsync -avl [имя пользователя]@[имя или IP системы]:[имя файла(что копируем)] [имя файла(куда копируем)] - добавочное копирование. a - рекурсивное архивирование. v - подробно . l - копировать символические ссылки.
-- delete - параметр добавляется если надо синхронизировать удаленные объекты из копируемого каталога с каталогом куда производится копирование. т.е. если в копируемом каталоге удалят какие-то файлы то при копировании они удалятся и в резервной копии.
-------------------------------------------------------------rsync
-------------------------------------------------------------sftp
sftp [имя пользователя]@[имя или IP системы] - интерактивный режим загрузки выгрузки файлов. ввести help для вывода списка команд.
-------------------------------------------------------------sftp
------------------------------------------------------------------------------------------Переменные окружения
EDITOR или VISUAL - текстовый редактор по умолчанию.
HISTTIMEFORMAT="%Y-%m-%d %T " - отвечает за формат вывода команд в history. (При таком формате выводится дата и время ввода команда).
# hostname - имя пк
spike.example.com
# dnsdomainname - имя домена к которому принадлежит устройство.
example.com
$0 - содержит имя или путь, которым была вызвана текущая оболочка или скрипт. -bash - значит login shell (оболочка входа)
$- - показывает активные настройки (опции) оболочки в виде строки из символов. bhimBHs -вариант вывода каждый символ имеет значение(i - интерактивный режим).
------------------------------------------------------------------------------------------Псевдо графический браузер
lynx - браузер
links - браузер
------------------------------------------------------------------------------------------Буфер обмена
xclip - команда буфера обмена. -o вставка содержимого буфера.
echo "text" | xclip - передача в буфер.
xclip -o > text.file - вставка в файл.
------------------------------------------------------------------------------------------Сочетание клавиш в терменале
ctrl+r - поиск в истории команд.
ctrl+u - удаление текста командной строки с лева от курсора.
ctrl+k - удаление текста командной строки с права от курсора.
ctrl+a - перемещает курсор к началу команды.
ctrl+e - перемещает курсор к концу команды.
ctrl+[стрелки в левл в право] - перемещение курсора к пробелам с строке.
ПроСмотр в реальном времени:
при вводе less -f [имя файла] - необходимо на нажать shift+f что бы просматривать в реальном времени добавление в файл.
------------------------------------------------------------------------------------------Конвейеры команда
[команда a]&&[команда b] - команда (b) выполняется только после того как выполнится команда (a).
[команда a]&&[команда b]&&[команда c] & - Команды выполняются в фоновом режиме. Если одна из них не срабатывает то команда в фоне прекращает свою работу.
[команда a]||[команда b] - команда (b) выполняется если команда (a) не выполнилась.
[команда a];[команда b] - команды (a,b) выполняются последовательно не зависимо друг от друга.
echo $? - выводит значение переменной ? которая хранит результат выполнения предыдущей команды. 0 - выполнена успешно. 1 - не выполнено.
[команда a]$([команда b]) - вывод команды (b) является аргументом для команды (a). Если команда (b) выводится список то команда (a) должно уметь принимать список в качестве аргумента.
[команда a] <([команда b]) <([команда c]) - команды b и с. Выводят аргументы для команды a. <([команда ]) - данная конструкция создает файловый дескриптор для чтения.
Она позволяет передать вывод одной команды другой команде так, будто этот вывод — обычный текстовый файл.
<(команда) — создает временный «виртуальный файл» (обычно в /dev/fd/...), который содержит результат выполнения.
([команда])> данная конструкция создает файловый дескриптор для записи.
пример: diff <(ls -a /home/sa) <(sudo ls -a /home/user) - сравнение содержимого 2х каталогов пользователей.
------------------------------------Утилита xargs
устанавливается с пакетом: sudo apt-get install findutils
[команда для входных значений] | xargs [команда принимающая входные значения]
пример: ls | xargs cat
------------------------------------------------------------------------------------------Перенаправление результатов команд
ls -l > /dev/pts/[номер терминала] - перенаправляет вывод команды на указанный терминал.
ls -l fjkdshfkjhkdsjhfkj 2>&1 1> /dev/null | grep fj - 2>&1 - перенаправляет вывод ошибок(туда же куда направлен 1й поток) в поток стандартного вывода 1> /dev/null - стандартный поток отправляет в /dev/null
tee - выводит данные и на экран и в файл.(пример: ls / | tee [имя файла])
&> - направляет как 1 (стандартный вывод) так и 2 (вывод ошибок) в одно место.
cat > [имя файла] << EOF - открывает поток ввода в [имя файла] окончанием ввода считается нажатие ctrl+D.
{} - применение фигурных скобок при работе с файлами. Работает как символьный массив {1, qwe, 23} или {3-15}. Пример: touch {1..3} создает файлы: 1, 2, 3 .
touch addfile{1, qwe, 23} создает файлы: addfile1, addfileqwe, addfile23.
sudo bash -c '[команда(ы)]' - запуск команд от имени администратора. (используется когда sudo [команда] не сработает)
пример: sudo bash -c 'echo "New log file" > /var/log/custom.log'
-------------------------------------------------------------------------------------------seq
Выводит заданную последовательность чисел.
seq 5 - выведи последовательность чисел от 1 да 5.
seq 3 8 - выводит последовательность от 3х до 8ми.
seq 1 3 12 - выводит последовательность с шагом 3 от 1го до 12
seq -s " " 5 - меняет разделитель на пробел.
seq -w 8 12 - уравнивает вывод добавляя 0 в начало: 08, 09.
seq -f "Число %03g" 1 2 - задает формат вывода "Число 001". %g - обозначает вывод числа.
-------------------------------------------------------------------------------------------Sed
sed -n 1p [Имя файла] - выводит первую строку в файле
sed -n -e 1p -e 5p [Имя файла] - выводит первую и пятую строку в файле
sed -n -e '3,10p' [Имя файла] - выводит диапазон 3-10 строки
sed -n 3,10p [Имя файла] - выводит диапазон 3-10 строки
sed -n -e '3,10!p' [Имя файла] - выводит все строки кроме 3-10 строк.
sed -n '5,$p' [Имя файла] - выводит все строки с 5й до конца файла(знак $ - означает конец строки)
sed -n -e '3p;10p;23p' [Имя файла] - выводит указанные строки 3, 10, 23.
sed 1d [Имя файла] - удаляет 1ю строку.
sed '1,7d' [Имя файла] - удаляет c 1ю по 7ю строку.
sed 's/[искомый текст]/[заменяющий текст]/' [имя файла] - меняет [искомый текст] на [заменяющий текст] из указанного файла результат выводится на экран. [искомый текст] - могут использоваться регулярные выражения. Разделитель можно использовать любой не обязательно / .
sed 's/rw/рв/' [имя файла] - меняет только первое совпадение в строке wr на рв результат выводится.
sed 's=rw=рв=' [имя файла] - работает также как предыдущий вариант.
sed 's/rw/рв/g' [имя файла] - меняет все найденные совпадения wr на рв результат выводится.
-------------------------------------------------------------------------------------------nohut
nohup [команда] & - запускает процесс который работает после выхода из консоли или ssh. Процесс работает в фоновом режиме. (Вывод команда печатается в nohup.out)
пример: nohup ping ya.ru & - рузультаты ping выводится в nohup.out
-------------------------------------------------------------------------------------------Именованный канал (pipe)
mkfifo [имя канала] - создает именованный канал в виде файла.
------------------------------------------------------------------------------------------vim
В командной строке ввести vimtutor - помощник в освоении vim/
В командной строке ввести vimtutor ru - помощник в освоении vim/ru
:! [команда которую необходимо выполнить] - выводит результаты команды в консоль не изменяет текст.(просто чтоб посмотреть)
:r! [команда которую необходимо выполнить] - выводит результаты команды в текст где установлен курсор
:.! [команда которую необходимо выполнить] - выводит результаты команды заменяя текущую строку
:! bash - открывает новый сеанс bash. Чтоб выйти ввести exit или ctrl+D.
:term - открывает в половину терминала окно bach. Для перехода между окнами Ctrl+W + W. Для выхода из терминала exit.(остается только vim)
:vert term - вертикальное разделение.
Если term не работает вероятно не установлена полная версия для до установки необходимо поставить vim-enhanced:
sudo apt-get install vim-enhanced
:Ex - открывает проводник в текущем окне.
:Sex - открывает проводник, разделив окно горизонтально.
:Vex - открывает проводник, разделив окно вертикально.
:e . - открывает проводник для текущей рабочей директории.
------------------------------------------------------------------------------------------tmux
Программа для разделения терминала по горизонтальным и вертикальным сегментам.--------префикс по умолчанию Ctrl+b--------
tmux new -s [имя сессии] - открывает tmux c определенным именем сессии.
ctrl+B +d - закрывает сессию с возможностью дальнейшего входа.
tmux ls - выводит список закрытых сессий. Цифрами обозначаются сессии без имени(если tmux был запущен без параметров).
tmux attach -t [имя сессии или ее номер] - подключится к уже запущенной но закрытой сессии.
tmux new-session ; split-window -h(или v) - открывает новую сессию tmux разделенную на 2а окна -h делит окно с верху вниз -v с лева на право.
ctrl+B (нажать через shift)+" - разделяет окно с верху вниз
ctrl+B (нажать через shift)+% - разделяет окно с лева на право
Переход между окнами:
ctrl+B (пауза) стрелками вверх, вниз, лево, право.
tmux set -g mouse on - включает мышь для переключений между окнами и изменения размера.
tmux split-window -h(или v) - в существующее окно tmux делит на два окна -v и -h соответственно.
Создать конфиг .tmux.conf в домашнем каталоге. Вставляем строки:
set -g mouse on - включает мышь для переключений между окнами и изменения размера.
unbind C-b - отключает префикс на Ctrl+b
set-option -g prefix C-a - включает префикс на Ctrl+a (заменить на любую другую букву [a-z])
bind C-a send-prefix
set -s set-clipboard on -Синхронизация с системным буфером.(ДЛЯ КОПИРОВАНИЯ ТЕКСТА если подключение через ssh клиент необходимо зажать shift чтоб настройки tmux игнорировались)!!!!
tmux source-file ~/.tmux.conf - После изменения конфигурации перезагрузить tmux.
tmux kill-session - полностью выключить сессию.
------------------------------------------------------------------------------------------Proc
man proc
/proc/ - все процессы.
/proc/meminfo - информация о оперативной памяти.
________________________________________________________________Скрипты
Запуск скрипта (или любого другова приложения) от имени root:
сделать запись в файл /etc/sudoers следующего вида: имя_пользователя ALL=(ALL) NOPASSWD: /путь/к/скрипту.sh
запускаем скрипт: sudo /путь/к/скрипту.sh
------------------------удаление подстроки
${[имя переменной]%[разделитель][удаляя часть текста]} - удаляет часть текста после разделителя.[удалая част текста] - можно подставить * - все символы после разделителя , ? - один любой символ, [a4-] - перечисление нескольких символов если присутствует один из них он удаляется.
Пример: ${perem%.txt} - удаляет txt
${perem%.*} - удаляет все после точки.
${perem%.[fl][io][ln][eb]} - удаляет 4и символа если они присутствуют в указанных диапазонах.
${perem%-.*} - удаляется все после разделителя (-.).
${perem%%.*} - удалит все да последнего разделителя найденной точки.
${[имя переменной]#[удаляя часть текста][разделитель]} - удаляет часть текста перед разделителем.
Пример: ${perem#*.} - удаляет весь текст перед точкой.
Количество знаков # или % регулирует глубину поиска разделителей. Так например ## считается максимальным удаление и ищет самый последний разделитель в тексте.
------------------------замена подстроки
${[имя переменной]/[что заменить ][на что заменить]} - меняет текст изменяемой части на текст изменяющий. Изменяемая часть ищется с начала. Количество / определяет глубину заменяемых частей текста // значит максимальная глубина меняет все заменяемые части.
пример: ${perem/plus/minus} - переменной perem plus изменяется на minus
${perem//plus/minus} - все плюсы меняются на minus
-----------------------количество символов в строке
${#[имя переменной]} - выводит количество символов в строке.
--------------------------script
script [параметр] [имя файла] - записывает все что происходит в bash используется для логирования. Также используется для составления простых скриптов.
________________________________________________________________Пользователи
id - возвращает id пользователя, id группы, в каких группа состоит.
groups [имя пользователя] - выводит список групп в которых состаит пользователь.
who - показывает какие пользователи сейчас на худятся в системе
w - показывает какие пользователи сейчас на худятся в системе. Так же выводит строки из команды top отображается: время запуска, время работы, общие число пользователей, нагрузка на сервер.
adduser -[параметр] [имя пользователя] - создать пользователя. Использовать для более полного создания пользователя.
adduser -i [uid] [имя пользователя] - создается учетная запись с уже существующим UID пользователя.
useradd -[параметр] [имя пользователя] - более простой вариант создать пользователя. Опускаются многие параметры в том числе не создается домашний каталог. Чтобы каталог создался необходимо ввести -m (useradd -m [имя пользователя]). Для добавления пароле необходимо ввести passwd [имя пользователя].
После ввода команды производится ряд действий:
считывается файл /etc/login.defs проверяются настройки по умолчанию.
из папки /etc/skel копируются файлы в каталог созданного пользователя
useradd -D - выводит настройки по умолчанию.
Считывает файлы /etc/login.defs и /etc/default/useradd, чтобы найти значения по умолчанию для использования при создании учетных записей.
Копирует все файлы, находящиеся в каталоге /etc/skel, в новый домашний каталог.
passwd [имя пользователя] - задать пароль для пользователя.
usermod -[параметр] [значение параметра] [имя пользователя] - изменяет параметры учетной записи пользователя.
usermod -aG [список груп] [имя пользователя] - добавляет пользователя в указанные группы.
userdel -[параметр] [имя пользователя] - удаляет пользователя из файла passwd. Параметр -r удаляет каталог пользователя.
________________________________________________________________Группы
newgrp [имя группы] - устанавливает временно основную группу пользователя (пользователь должен состоять в этой группе). При замены группы все созданные файлы будут принадлежать данной группе. Также временно можно разрешить пользователю сменить групп на ту в которой он не состоит. Для этого от имени root необходимо задать пароль на группу введя: gpasswd [имя группы].
После чего пользователь может временно стать членом этой группы введя newgrp [имя группы] затем ввести пароль.
groupadd [имя группы] - создать группу
groupmod [параметр] [имя группы] - различные модификации над группами.
________________________________________________________________Поиск файлов
locate [имя или часть имени] - Команда locate используется в Linux для быстрого поиска файлов и директорий по их имени. После установки locate необходимо обновить базу данных (sudo updatedb).
find / -xdev -iname '*passwd*' - поиск файлов -xdev запрещает поиск в файловых системах, отличных от выбранной. Не заходит в директории, которые являются точками монтирования других разделов или устройств (например, /boot, /home, /mnt/usb).
find /etc -iname '*passwd*' - поиск файлов похожих на '*passwd*' и регистр не учитывается.
find /etc/ -mmin -10 - поиск всех файлов которые были изменены менее 10ти минут назад.
find /bin /usr/bin /sbin /usr/sbin -ctime -3 - поиск файлов метаданные которых были изменены за последние 3и дня.
find /var/ftp /var/www -atime +300 - поиск файлов которые не менялись более 300 дней.
find / -user [имя пользователя] -ls - выдает список файлов принадлежащих указанному пользователю.
find / -uid [uid пользователя] -ls - выдает список файлов принадлежащих указанному пользователю по uid.
find / -nouser -ls - выдает список файлов принадлежащих не каким пользователям(пользователи которые отсутствуют в системе).
find /var/allusers/ -user [имя пользователя] -not -group [имя группы] -ls - поиск фалов принадлежащих пользователю но не принадлежащих группе.
find /var/allusers/ -user joe -and -size +1M -ls - поиск файлов принадлежащих пользователю и размером больше 1M.
find [ параметры ] -exec команда {} ; - поиск и выполнение команды над этими файлами. {} - это найденный файл командой find.
sudo find /etc/ -group root -exec du -h {} ;
find /путь/к/каталогу -type f -perm -o=x - поиск файлов имеющих параметр запуска для остальных пользователей.
find [ параметры ] -ok команда {} ; - поиск и выполнение команды над этими файлами с подтверждением для каждого файла.
sudo find /etc/ -group root -exec du -h {} ;
find /var/allusers/ -user joe -ok mv {} /tmp/joe/ ; - ищет все файлы пользователя joe и перемещает их в каталок /tmp/joe с подтверждение выполнения перемещения.
grep -i desktop /etc/services - поиск строк со словом desktop без учета регистра
grep -rli peerdns /usr/share/doc/ - рекурсивный поиск в каталоге с выводом имен файлов при обнаружении текста в данных файлах.
________________________________________________________________Права доступа к файлу
chmod [опция]-или+[список прав] [имя файла] - установка базовых прав доступа. Припер: chmod a+x /home/my/script/* - устанавливает для всех файлов право на исполнение.
-R - опция для рекурсивного присваивания прав.
Бит Set user ID 4 u + s - Любой пользователь, запуская этот файл, выполняет его с правами владельца. (В некоторых Linux игнорируется из соображений безопасности)
Бит Set group ID 2 g + s - Для каталога : Включается наследование группы. Все новые файлы и подпапки, созданные внутри этой директории, будут автоматически принадлежать той же группе, что и сама директория (а не основной группе пользователя, который их создал).
- Для файлов : Программа запускается с правами группы-владельца этого файла, а не группы пользователя, который её запустил.
Бит Sticky bit 1 o + t - Для каталогов (основное применение): Запрет на удаление чужих файлов: Пользователь может удалять или переименовывать внутри этой папки только те файлы, владельцем которых он является.
umask - настройка прав доступа по умолчанию.
chwon [имя владельца]:[группа владельца] [имя файла] - смена владельца и или группы владельца файла каталога.
---------------------------------------Capabilities
Capabilities — это механизм, который позволяет делегировать привилегии root-процесса точечно, без выдачи полного root-доступа. Вместо бинарного «root / не root» процесс может получить отдельные права (например, возможность слушать порт 80 или изменять системное время).
getcap — показывает, какие capabilities установлены у файла.
setcap — устанавливает capabilities их.
-----------------------------------------(get, set)fattr (Set Extended Attributes) Расширенные атрибуты файлов.
Эта команда управляет расширенными атрибутами (xattr). Это произвольные пары «имя=значение», которые можно прикрепить к файлу.
setfattr [опция] [префикс].[значение] [ключ действия] [аргумент для ключа] [путь/к/файлу] - устанавливает расширенный атрибут.
пример:
setfattr -n user.comment -v "важный файл" myfile.txt
getfattr [опция] [префикс].[значение] [имя файла] - выводит расширенный атрибут( если указать только имя выведит все атрибуты)
пример:
getfattr -n user.comment myfile.txt
Каждое имя атрибута должно начинаться с одного из следующих префиксов:
user. (Пользовательские)
Доступ: Доступны обычным пользователям. Чтобы установить такой атрибут, нужно иметь права на запись в файл.
Для чего: Хранение любых метаданных приложений (например, user.comment, user.checksum, user.mime_type).
security. (Безопасность)
Доступ: Обычно управляются модулями безопасности (LSM), такими как SELinux.
Для чего: Хранение контекстов безопасности (например, security.selinux) или меток целостности.
system. (Системные)
Доступ: Используются ядром Linux.
Для чего: Хранение списков контроля доступа (ACL) — например, system.posix_acl_access, или возможностей файлов (Capabilities).
trusted. (Доверенные)
Доступ: Видимы и изменяемы только процессами с правами CAP_SYS_ADMIN (обычно это root).
Для чего: Хранение системных данных, которые должны быть скрыты от обычных пользователей даже при наличии прав на чтение файла.
-----------------------------------------chattr (Change Attributes)
Это команда для управления низкоуровневыми атрибутами файловой системы (традиционно ext2/ext3/ext4).
chattr [опция] [путь/к/файлу] - установка атрибута файла опция с + устанавливает атрибут опция - убирает атрибут = установить указанные атрибуты удалив все остальные.
ключи:
a - Append-only: файл можно открыть только для до записи. Существующие данные нельзя изменять или удалять.
i - Immutable: файл абсолютно неизменяем. Его нельзя удалить, переименовать, изменить или создать на него ссылку даже пользователю root.
A - No atime updates: при доступе к файлу не обновляется время последнего обращения (atime), что снижает нагрузку на диск.
c - Compressed: ядро прозрачно сжимает файл на диске при записи и распаковывает при чтении.
C - No Copy on Write: отключает механизм «копирования при записи» (актуально для btrfs).
d - No dump: программа dump будет игнорировать этот файл при создании резервных копий.
e - Extent format: указывает, что файл использует экстенты для управления блоками на диске (обычно устанавливается автоматически в ext4).
j - Data journaling: все данные файла сначала пишутся в журнал файловой системы, а затем в основной блок (только для ext3/ext4).
s - Secure deletion: при удалении файла его блоки на диске перезаписываются нулями, чтобы данные нельзя было восстановить.
S - Synchronous updates: изменения записываются на диск немедленно (аналог вызова sync).
u - Undeletable: при удалении содержимое файла сохраняется, что теоретически позволяет его восстановить.
lsattr [имя файла] - выводит список атрибутов (если без имени выводит список с атрибутами всех объектов в текущем каталоге).
-----------------------------------------ACL
sudo apt install acl - установка acl
sudo setfacl -m u:[имя пользователя]:[права на файл] [имя файла] - установка прав acl для пользователя.
sudo setfacl -m g:[имя группы]:[права на файл] [имя файла] - установка прав acl для группы.
sudo setfacl -m o:[права на файл] [имя файла] - установка прав acl для остальных пользователей и групп не присутствующих в acl.
sudo setfacl -m d:[ключ метки прав(u,g,o)]:[имя в зависимости от ключа]:[права(rwx)] [имя каталога] - присваивает права доступа acl полмолчания. Все созданные объекты в этом каталоге будут наследовать эти права. Если в правах будет установлено право на выполнение (x) то оно будет удалено при создании фала.
getfacl [имя файла] - выводит список прав acl.
Если в поле mask установлены права меньше чем в acl то появляется надпись effective:[действующие права] эти права являются реально работающими. Чтобы исправить mask необходимо поменять данные права у владельца файла с помощью chmod.
Авто монтирование acl в fstab:
в столбце <options> добавить acl. Пример: defaults,acl
Просмотреть смонтирован ли acl:
tune2fs -l /dev/mapper/имя устройства | grep "mount options"
ll /dev/mapper/ - посмотреть какие устройства смонтированные каталоги
Установка параметров acl на устройство:
tune2fs -o acl /dev/[имя устройства]
Монтирование acl вручную:
mount -o acl /dev/[имя устройства] /[точка монтирования].
________________________________________________________________Метасимволы для пакетной обработке
* - любое количество любых символов.
? - один любой символ.
[ ] - люблой символ из диапазона(пример: [0-7], [a-d], [snd], [3 6 8] )
________________________________________________________________Справочная информация
cat /etc/services - выводи список служб с портами по умолчанию.
cat /proc/devices - выводи типы устройств с его мажорным номером драйвера. Мажорный номер используется в определении типа устройства в каталоге /dev.
________________________________________________________________Grep
-v "[символы]" - ключь позволяет не отображать указанные символы
-v "^$" - не выводит пустые строки. "^$" - ^-начало строки $-конец строки
-A [число строк] - выводит число строк после найденного значения (если несколько совпадений выводит для каждого)
-B [число строк] - выводит число строк перед найденным значением (если несколько совпадений выводит для каждого)
-i - игнорирует регистр.
________________________________________________________________Установка удаление программ
sudo dpkg-query -L [имя пакета] - выводит список файлов и каталогов которые были установлены указанным пакетом.
sudo dpkg -l [имя пакета] - выводит список файлов и каталогов которые были установлены указанным пакетом.
------------------------------------------------------------------------------------------deb
apt -менеджер пакетов
apt download [имя пакета] - скачать deb пакет.
apt-cache search [слово для поиска] - поиск пакетов по указанному слову.
dpkg -i [имя пакета].deb - Установка и обновление пакета из файла
dpkg -r [имя пакета] - Удаление пакета (-P удаляет и конфиги программы)
dpkg -l - Список всех установленных пакетов.
dpkg -s [имя пакета] - Информация о пакете
dpkg -L [имя пакета] - Список файлов в пакете
dpkg -S [имя пакета] - Найти пакет по файлу
dpkg -c [имя пакета].deb - Просмотр состава файла deb пакетов.
------------------------------------------------------------------------------------------rpm
yum [имя пакета] - менеджер пакетов
dnf [имя пакета] - продвинутый менеджер пакетов
dnf search [искомый текст] - поиск по тексту в имени пакета.
dnf provides [название команды] - поиск пакета в котором есть данная команда.
dnf list [опция или имя пакета] - список пакетов. (installed - установленных; available - доступных)
dnf deplist [имя пакета] - выводит список зависимостей.
dnf reinstall [ имя пакета] - переустановка пакета.
dnf remove [имя пакета] - удаление пакета.
dnf history [опция если надо] - история установок.
dnf grouplist - список групп пакетов.
dnf groupinstall [имя группы пакетов] - установка группы пакетов.
dnf groupremove [имя группы пакетов] - удаление группы пакетов.
dnf clean [Опция(all,packages или metadata)]
dnf check - проверка целостности базы rpm.
prm --rebuilddb - пересобрать базу rpm.
dnf download [имя пакета] - загрузка rpm пакета без установки.
rpm -q [имя пакета] - информация о пакете (или rpm -iq )
rpm -qa [имя пакета] - поиск пакета в репозитории.
rpm -i [полный путь до пакета или полное имя (как zsh-5.5.1-6.el8.x86_64.rpm)] - установка rpm пакета.
rpm -v [имя пакета] - проверка пакета на повреждение изменение не конфигурационных файлов.
rpm -i --replacepkgs [имя пакета] - переустановка испорченного поврежденного пакета.
rpm -Uhv [полный путь до пакета] - обновление rpm пакета.
rpm -e [имя пакета] - удаление пакета.
rpm -ql [имя пакета] - список файлов.
rpm -qf [имя файла] - выводит пакет к которому принадлежит файл.
rpm -qd [имя пакета] - документация пакета.
rpm -qc [имя пакета] - список конфигурационных файлов.
rpm -q --requires [имя пакета] - список требований к пакету (библиотеки, команды, другие пакеты).
rpm -q --provides [имя пакета] - какую версию программного обеспечения предоставляет.
rpm -q --scripts [имя пакета] - какие сценарии запускаются до и после установки или удаления RPM.
rpm -q --changelog [имя пакета] - какие изменения были внесены в пакет RPM пакета.
rpm -q zsh --queryformat "The package is %{NAME} and the release is %{RELEASE}n" - запрос определенных тего и вывод в свободной форме. rpm --querytags | less - выводит список тегов.
________________________________________________________________Процессы
man proc - мануал по каталогу proc.
/proc/version - Содержит версию ядра
/proc/cmdline - Список параметров, переданных ядру при загрузке
/proc/cpuinfo - Информация о процессоре
/proc/meminfo - Информация об использовании оперативной памяти (почти то же, что и команда free)
/proc/devices - Список устройств
/proc/filesystems - Файловые системы, которые поддерживаются вашей системой
/proc/mounts - Список под монтированных файловых систем
/proc/modules - Список загруженных модулей
/proc/swaps - Список разделов и файлов подкачки, которые активны в данный момент
cat /proc/interrupts — показывает прерывания;
cat /proc/net/dev — показывает сетевые интерфейсы и статистику по ним;
cat /proc/meminfo - информация о загрузки памяти.
cat /proc/cpuinfo - информация о процессоре.
/proc/kcore - вся память системы.
/proc - каталог со всеми процессами в системе. Номер папки это PID процесса.
/proc/[PID]/exe - ссылка на файл запуска данного процесса.
/proc/[PID]/fd - файловый дескриптор. Отображает потоки вывода данного процесса.
lsof - Отображает процесс использующий файл.
top - мониторинг системы
htop - мониторинг системы
kill -[номер опции] [pid процесса] - различные способы завершения процесса или перечитать конфигурационный файл если -1.
killall -[опция] [названия процесса] - завершение работы процесса или процессов по имени.
nice -n [приоритет] [имя запускаемого процесса] - запускает процесс с указанным приоритетом
renice -n [приоритет] [pid] - изменяет приоритет указанного pid процесса.
ctrl+Z - приостановить команду отправить в фоновый режим.
[команда] & - переводит процесс в фоновый режим.
jobs - выводит список процессов в фоновом режиме. ( добавить -l для отображения id процесса)
fg %1 - выводит процесс из фонового режима на передний план.
bg - выводит приостановленное задание в фоновый режим.
bg %[номер процесса в фоне] - запуск процесса в фоновом режиме.
kill %[номер процесса в фоне] - завершения процесса в фоновом режиме.
ps - выводит список процессов с различными параметрами.
ps -efH - вывод всех процессов ключь f - показывает дерево процессов.
ps -eo pid,user,group,gid,vsz,rss,comm --sort=-vsz | head - выводит список процессов отсортированных по параметру vsz(памяти зарезервировано). За счет команды head выводится первые 10ть процессов.
ps xawf -eo pid,user,cgroup,args (список процессов со столбцом cgroup который позволяет определить родительскую группу дочернего процесса)
pstree [pid процесса] - выводит дерево процессов.
atop - мониторинг системы.
systemctl start atop - запуск службы для логирования системы в /var/log/atop_[дата]
atopsar -G -r /var/log/atop/atop_[дата] - просмотр мониторинга с интервалом по умолчанию в 10мин.
Ограничение ресурсов для процессов и пользователей. cgroups (доп. сведения в инт.)
fuser -va [номер порта/протокол] (22/tcp - пример) - выводит PID и владельца
fuser -va [путькфайлу] - выводит PID, пользователя, доступ, команда
sudo fuser -k -TERM -m [путькфайлу] - завершает все процессы использующие файл.
_________________________________________________________________Просмотр нагрузки на систему
top - просмотр загрузки системы.
htop - просмотр загрузки системы.
iotop - просмотр загрузки дискового ввода-вывода(io - input output).
iostat - мониторинг производительности (io) дисков и процессора.
free - ввывод данных о загрузки памяти.(Обратить внимание свободная память не только в столбце free но и buff/cacha)
cat /proc/meminfo - информация о загрузки памяти.
_________________________________________________________________Сеть
echo ”1" > /proc/sys/net/ipv4/ip_forward - разрешить маршрутизацию.(действует до перезагрузки)
для постоянного включения добавить в файл:
/etc/sysctl.conf
строчьку: net.ipv4.ip_forward=1
sudo iptables -t nat -S -таблица проброса портов
sudo iptables -L -n -v
sudo iptables -t nat -L PREROUTING -n - просмотр PREROUTING
sudo iptables -L FORWARD -n - просмотр FORWARD
netstat -tnlp - отображает список портов который слушается по tcp протоколу.
netstat -rn - вывод таблицы маршрутов.
iperf3 - проверка пропускной способности сети между двумя ПК. (Работает на порту: 5201 )
ipref3 -c [ip-адресс]
rout - просмотреть и изменить таблицу маршрутизации;
ifup [имя интерфейса] - включить интерфейс.
ip link set [имя интерфейса] up - включить интерфейс.
ifdown [имя интерфейса] - отключить интерфейс.
ifconfig [имя интерфейса] promisc - включает режим для снифинга сети.
ip r - показывает подсети для всех интерфейсов и список шлюзов(маршрут по умолчанию).
ip a add [ip] dev [имя устройства (сетевой интерфейс)] - добавление ip на сетевое интерфейс.
ip route add default via <IP-адрес шлюза> dev <интерфейс> - добавление маршрута по умолчанию на сетевой интерфейс.
ip link delete [имя устройства (сетевой интерфейс)] - удалить сетевой интерфейс.
sudo ip link set eth0 [up или down] - включить отключить интерфейс.
sudo ip addr add 192.168.1.10/24 dev eth0 - добавление ip адреса.
sudo ip addr del 192.168.1.10/24 dev eth0 - удаление ip адреса.
ip -s link show - статистика по пакетам
ip -s a - статистика по пакетам с нумерацией сетей
sudo cat /proc/net/dev — показывает сетевые интерфейсы и статистику по ним;
iftop - программа для просмотра сетевого трафика.
nload - просмотр загрузки сетевого трафика.
iptraf-ng - псевдо графически утилита для отслеживания трафика.
---------------------wi-fi
sudo iwconfig - просмотреть информацию обо всех беспроводных интерфейсах.
iwlist scan - выводит список беспроводных сети;
_________________________________________________________________SYSTEMD
----------------Инициализация---------------------------
/etc/inittab - классический файл инициализации системы ().
runlevel - текущий уровень выполнения Linux.(обычно от 2-5. 5 стандарт где все н разрешено)
для смены уровня выполнения:
0 Завершение работы
1 или S Однопользовательский режим
2 Многопользовательский режим без поддержки сети
3 Многопользовательский режим без поддержки сети
4 Пользовательский уровень
5 Многопользовательский режим с поддержкой сети и графической оболочки
6 Перезагрузка компьютера
sudo init [номер уровня] - изменит уровень выполнения на указанный.
sudo telinit [номер уровня] - изменит уровень выполнения на указанный.
/etc/rc.d/rc#.d - где # - выбранный уровень выполнения.(перечень каталогов со списком приложений для запуска на определенный уровень выполнения). В каталогах скрипты начинающиеся на K немедленно останавливают процесс, те же которые начинаются на S запускают процесс.
----------------Инициализация---------------------------
Существует 12 типов юнитов systemd:
automount;
device;
mount;
path;
service;
snapshot;
socket;
target;
timer;
wap;
slice;
cope.
Расположение конфигурационных файлов: /lib/systemd/system и /etc/systemd/system.
systemctl list-unit-files --type=target - для вывода списка иен файлов конфигураций --type=target - можно установить любой другой(service). Также отображаются статусы статус static (служба включена по умолчанию ) включен по умолчанию и не может быть отключен даже суперпользователем.
systemctl show --property "Wants" multi-user.target | fmt -10 | sed 's/Wants=//g' | sort - вертикальная сортировка.
systemd-cgtop - команда отображает группы процессов и отображает количество ресурсов используемые ими.
ps xawf -eo pid,user,cgroup,args (список процессов со столбцом cgroup который позволяет определить родительскую группу дочернего процесса)
systgemd systemctl:
systemctl kill [иям_службы или юнита]crond.service - завершает все дочерние процессы в том числе. сигнал SIGTERM
systemctl kill -s SIGKILL [иям_службы или юнита]crond.service
systemctl kill -s HUP --kill-who=main crond.service - заставляет перечитать файл конфигурации.
systemctl list-dependencies multi-user.target --all -Рекурсивно перечислить все зависимости, нужно добавить флаг all
systemctl list-dependencies nginx.service --reverse - Показать обратные зависимости (юниты, зависящие от юнита)
systemctl list-units -t target --all - Просмотр списка модулей с типом таргет:
systemctl status - Просмотр статуса системы:
systemctl --full edit <имя_юнита> -Редактирование юнита
systemctl --force --full edit <имя_юнита> -Cоздание юнита
systemctl - Активные юниты
systemctl show --property "Wants" multi-user.target - список юнитов которых активизирует целевой юнит (multi-user.target).
Анализируем загрузку групп сервисов
systemd-cgtop
Проверить вхождение в группы
systemd-cgls /init.scope
Анализируем скорость загрузки Linux
systemd -analyze время загрузки операционной системы:
systemd-analyze time -большие задержки загрузки:
systemd-analyze blame | head -n 10
# systemd-analyze plot > boot_analysis.svg -графическая карта анализа загрузки Linux:
sudo dnf install systemd-bootchart - установка bootchart для анализа загрузки системы.
sudo systemctl enable systemd-bootchart - включить bootchart перезапустить систему сгенерируемое изображение лежит в /run/log/*.svg
_________________________________________________________________ДИСКИ
Список драйверов файловых систем, загруженных в данный момент
Создаём с помощью команды sudo dd if=/dev/zero of=/disk.img count=2000 bs=1M status=progress файл размером 2Gb.
cat /proc/filesystems
chroot [раздел, содержащий корневую файловую систему] - перезапишет начальный загрузчик.
fdisk -l - просмотр дисков работа с диском.
cfdisk [путь до диска (/dev/sda)] - просмотр дисков работа с диском.
lsblk - Показывает древовидную структуру всех блочных устройств.(просмотр всех дисков в системе)
blkid - UUID список дисков
tune2fs - настройка файловой системы без переформатирования. -l просмотр супер блока.
extundelete - это бесплатный инструмент с открытым исходным кодом, предназначенный для восстановления удаленных файлов именно с ext3 и ext4
ls -l /dev/disk/by-uuid/ - список UUID(идентификаторов дисков) дисков в системе.
badblocks -v [полное имя диска] - Программа badblocks позволяет проверить жесткий диск на наличие сбойных блоков.
-----------------------------------------------------LVM
pvs - просмотр lvm разделов
pvcreate [ полный путь до раздела (пример: /dev/sdb1)] - создание lvm раздела
vgcreate [ имя группы ] [перечисление разделов (пример: /dev/sda1 /dev/sdb1 можно указать один раздел)] - создание lvm группы
vgextend [имя группы которую надо расширить] [полный путь до раздела которым будет расширятся группа (/dev/sdc1)] - увеличение размера lvm группы.
lvs - просмотр логических томов.
lvcreate [имя группы] -n [имя логического тома] -L [размер тома (пример 10G)] - создание логического тома
lvcreate [имя группы] -n [имя логического тома] -l 100%FREE - создает логический том на все свободное место раздела (-l 100%FREE).
lvextend [полный путь до тома lvm (пример: /dev/mapper/[имя группы]-[имя тома] или /dev/dm-[цифра])] -L +[указать размер (пример: +10G)] - увеличение размера тома (можно добавить -r чтобы не выполнять команду resize2fs) (-l +100%FREE) - для увеличения размера на все свободное пространство.
resize2fs [полный путь до тома lvm (пример: /dev/mapper/[имя группы]-[имя тома] или /dev/dm-[цифра])] - указывает системе новый размер диска lvm.
vgs - просмотр lvm групп
ls -l /dev/mapper/[символьная ссылка состоящая из [имя группы][имя логического тома]] -> ../dm-[номер] - просмотр адресов lvm на символьные ссылки.
-------------------------------------------------------LVM
lvm тома назначаются из /dev/mepper
fsck - используется для проверки и исправления ошибок файловых систем.
cfdisk — псевдографическая утилита
mkfs - создание файловой системы.
sudo mkfs.ext4 /dev/sdb1 (форматирует раздел /dev/sdb1 в файловую систему ext4)
sudo mkfs -t [Имя файловой системы] /dev/sdb1 (форматирует раздел /dev/sdb1 в файловую систему кототая указана в параметре.)
fsch - проверка на ошибки.
Для временного монтирования используется команда:
sudo mount /dev/устройство точка_монтирования(/mnt/какойто каталог - необходимо создать зарание)
Для размонтирования используется один из вариантов:
sudo umount /dev/устройство_moма
sudo umount точка_монтирования
sudo umount -l /mnt/mpoint - принудительное демонтированные устройства.
ЕСЛИ ПОЯВЛЯЕТСЯ СООБЩЕНИЕ umount: (полный путь к каталогу): target is busy. необходимо посмотреть какие процессы, пользователи используют данный каталог.
sudo lsof (полный путь к каталогу) - покажет какие процессы, пользователи используют каталог
sudo fuser -vm (полный путь к каталогу) - покажет какие процессы, пользователи используют каталог
sudo fuser -km (полный путь к каталогу) - завершить все процессы которые используют данный коталог.
-----------swap раздел подкачьки----------------------
mkswap [путь до раздела или файла] - создание swap раздела (может быть как раздел диска так и указанный файл).
swapon - включение swap.
swapoff - отключение swap.
-----------Авто монтирование fstab------------------
для определения UUID
lsblk -f - показать все диски с UUID
Далее добавить запись по шаблону:
Шаблон: UUID=(UUID_диска)) (точка_монтирования) (тип_фс) (опции) (dump) (pass)
Пример: UUID=a1b2c3d4-1234-5678-90ab-cdef12345678 /mnt/mydisk ext4 defaults 0 2
sudo mount -a - смонтировать все файловые системы которые настроены в /etc/fstab (не сработало разобратся)
После перезагрузки файловая система автоматически будет смонтирована.
-----------Монтирование через Unit в Systemd------------------
sudo systemctl edit --full --force mnt-data.mount - создает службу для монтирования раздела
[Unit]
Description=Mount Data Disk (Описание юнита авто монтирования)
[Mount]
What=/dev/sdc (что | указывается раздел который будет монтироваться имя устройства (имя файла устройства, метка, UUID))
Where=/mnt/UnitMount (где | куда будет смонтировать указанный раздел)
Type=ext4 (указывается тип файловой системы)
Option=defaults,noexec (различные параметры монтирования . noexec - нельзя запускать файлы)
[Install]
WantedBy=multi-user.target
----------------Авто монтирование-------------------
Возможно использовать только на уже смонтированные каталоги
sudo systemctl edit --full --force mnt-data.automount - команда для создания юнита
[Unit]
Description=Automount Data Disk
[Automount]
Where=/mnt/data
TimeoutIdleSec=300 # простой, потом отключение
[Install]
WantedBy=multi-user.target
----------------Утилиты-----------------------------------
tune2fs - настройка параметров файловой системы
sudo tune2fs -l /dev/sdb1 - покажет информацию из супер блока файловой системы
du - показывает размеры папок
du -s /var - только размер указанного каталога
du -ha /var - отчет по папкам и файлам
du -csh /var - Показать только итоговую сумму
lsblk - информация о блочных устройствах(дисках, памяти)
lsblk -f - показывает UUID
ncdu - псевдо графическая утилита для просмотра занятого пространства
df - показывает используемое дисковое пространство
df -h
df -i - показывает iноды
debugfs - отладчик файловой системы
dumpe2fs - делает дамп информации которая хранится на томе.
dump - делает дамп.
sudo dump -0uf /backup/backup.dump /dev/sdb1 # Создать полный бэкап
sudo dump -1uf /backup/backup-level1.dump /dev/sdb1 # Инкрементальный бэкап (уровень 1)
sudo restore -rf /backup/backup.dump - восстанавливает бэкуп.
e2fsck - проверка целостности структуры ФС
resize2fs - изменение размеров ФС
e4defrag - дефрагментация ФС ext4
e2image - сохранения метаданных ФС в файл
-------------------------------------------------------------dd (осторожно вводить)
dd if=[имя файла] of=[имя файла] [опции] - по секторное копирование файла.
bs= - размер блока (block size) (4K, 4M )
count= - количество блоков для копирования
skip= - пропустить N блоков во входном файле
seek= - пропустить N блоков в выходном файле
status=progress - показывать прогресс.
Копировать файл: dd if=[имя файла] of=[имя файла]
Создать образ всего диска: sudo dd if=/dev/sda of=backup_disk.img bs=4M
Прямое клонирование: sudo dd if=/dev/sda of=/dev/sdb bs=4M status=progress
Создать пустой файл размером 100 МБ: dd if=/dev/zero of=testfile bs=1M count=100
Создать образ раздела и сжать его: dd if=/dev/sda1 bs=4M | gzip > backup.img.gz
Пропустить первые 100 блоков и скопировать следующие 50 dd if=bigfile.bin of=part.bin bs=512 skip=100 count=50
Записать данные с определённого смещения (seek — смещение в блоках) dd if=data.bin of=/dev/sda seek=2048 bs=512
Уничтожение всех данных раздела жесткого диска dd if=/dev/zero of=/dev/sdb2 bs=1M
-------------------------------------------------------------dd
___________________________________________________________________Архивирование
tar --totals --create --verbose --file arh.tar /etc - создание архива без сжатия
tar --totals -cvf arh1.tar /etc - создание архива без сжатия (сокращенная форма)
tar --totals -cjvf arh.tar.bz /etc - создание архива с сжатием bzip2
tar --totals -czvf arh.tar.gz /etc - создание архива с сжатием gzip
tar --totals -cJvf arh.tar.xz /etc - создание архива с сжатием XZ
dd if=/dev/sdb of=sdb.img status=progress - клонирование дисков( if=источник — файл-источник of=цель — файл-назначение bs=размер_блока — размер блока данных count=число — количество локов данных status=progress выполнения статуса)
rsync <ключи> <источьник> <приемник> - Синхронизации файла на локальном компьютере
rsync -zvh file /tmp/backups/
rsync -avz /home/sergiy/tmp/ root@192.168.56.102:/home/ - Синхронизация с удаленным сервером. Копируем по протоколу ssh
rsync -avz /home/sergiy/tmp/ rsync://192.168.56.102:/share - Использовать ранее созданный сервер rsync, нужно указать это явно
rsync -avzhe "ssh -p 22" root@192.168.56.102:/root/install.log /tmp/ - Синхронизация с удаленным сервером. Копируем по протоколу ssh с явным указыванием порта.
dump -0auL -f /mnt/udisk/backup.dump /dev/sda1 - резервное копирование С помощью команды dump делается полная резервная копия (флаг -0) устройства /dev/sda1 в файл /mnt/udisk/backup.dump;
Логи для dump : /etc/dumpdates
-L сигнализирует, что перед началом нужно сделать снимок данного раздела;
-а означает «auto-size», т.е. будет заполнено всё свободное место на носителе;
-u указывает сохранить служебную информацию в файл /etc/dumpdates, чтобы использовать при создании следующих резервных копий.
restore -i -f /dev/sda1 - Для восстановления файлов из дампа в диалоговом режиме используйте команду(из каталога /mnt/udisk/):
______________________________________________________________________Планировщики заданий
zeit - графический планировщик
atd - Служба предназначена для выполнения команд в заданное время.
at <время> <дата>
at 12:15 PM today
at 12:15 tomorrow
at now +1 minute
at 11:10
at> echo "Test"
at> <EOT> # Нажатие Ctrl+D
echo "echo Test" | at 12:15 tomorrow
echo "cp test /tmp" | at 12:15
atq - Список задач текущего пользователя
at -f <filename> -m <time>. - Скрипт может находится в любой папке, но лучше в папке указанной в переменной $PATH
atrm <номер> - Удаление задачи из очереди
batch - Запуск задачи во время простоя компьютера. Задача выполнится когда средняя загрузка будет меньше 0.8.
/etc/at.allow и /etc/at.deny - позволяют ограничить доступ к командам at и batch.
--------------------------сrontab--------------------------------
crontab -e - создания задания
/etc/cron.d
/etc/cron.hourly - каждый час;
/etc/cron.daily - каждый день;
/etc/cron.weekly - каждую неделю;
/etc/cron.monthly - каждый месяц.
@reboot — при загрузке, только один раз;
@yearly, @annually — раз год;
@monthly — раз в месяц;
@weekly — раз в неделю;
@daily, @midnight — каждый день;
@hourly — каждый час.
crontab -l - Просмотр задач
5 0 * * * echo "Выполняется каждый день в 0:5"
15 14 1 * * echo "Выполняется в 1 числа каждого числа в 14:15"
0 22 * * 1-5 echo "Рабочий день закончен" | mail -s "Уже 22:00" john
23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д."
5 4 * * sun echo "Выполняется в 4:05 в воскресенье"
0 0 1 1 * echo "С новым годом!"
15 10,13 * * 1,4 echo "Выполняется в понедельник и четверг в 10:15 и 13:15"
0-59 * * * * echo "Выполняется ежеминутно"
* * * * * echo "Это тоже ежеминутно"
0-59/2 * * * * echo "Выполняется по чётным минутам"
1-59/2 * * * * echo "Выполняется по нечётным минутам"
*/5 * * * * echo "Прошло пять минут"
@hourly echo "Ежечасно, т. е. аналог 0 * * * *"
@weekly echo "Еженедельно, т. е. аналог 0 0 * * 0"
crontab -l - Вывод расписания текущего пользователя —
crontab -r - Удаление расписания текущего пользователя —
/var/spool/cron/<имя пользователя> - Расписания заданий для каждого пользователя свои. Они хранятся в данном каталоге.
/etc/cron.allow и /etc/cron.deny - позволяют ограничить возможность использования планировщика cron
---------------------------------------anacron---------------------
Асинхронный или анахроничный cron, позволяет запускать запланированные
задания только на ежедневной основе. Доступен только root. Задания запускаются
интервалами. Если задание не выполнилось, оно будет выполнено после загрузки.
Файл конфигурации - /etc/anacrontab
___________________________________________________________Ядро
uname -a - вывод рабочего ядра
lsmod — посмотреть загруженные модули
modinfo — информация о модуле
insmod — загрузить модуль
rmmod — удалить модуль
модули ядра заканчиваются на .ko
modprobe - отключение подключение модулей ядра.
/dev файловая система для устройств
/proc кроме информации о каждом запущенном процессе, добавлена всевозможную информацию о состоянии работающего дра.
/sys информация, не относящаяся к процессу, которая попала в дерево /proc, дублируется в /sys.
sysctl - утилита для просмотра и изменения параметров ядра во время выполнения.
sysctl -a
/proc/sys/ - каталог с настройками ядра и другими параметрами системы. Изменения значений в этом каталоге сразу вступают в силу без перезагрузки системы.
--------------------------------systemd-udevd-----------------------------------
udev — это менеджер устройств для ядра Linux.
udevadm - Программа используемая для отладки и диагностики.
/dev/null — представляет собой что-то типа «мусорной корзины». Чтение /dev/null возвращает символы end-of-file — конец файла
/dev/zero — чтение устройства возвращает � символы. Поэтому /dev/zero обычно используется для создания пустых файлов.
/dev/random и /dev/urandom — создают «случайные» данные.
udevadm - инструмент управления udev
info — отображение информации об устройстве
trigger — используется для воспроизведения событий
settle — отслеживает очередь событий udev
control — изменение состояние демона
monitor — события ядра и события udev
test — моделирование поведения правил
test-builtin — запустить встроенную команду
wait — ожидание реакции устройства
lock — тестовая блокировка устройств
sudo udevadm info -n sda - поиск информации по заданному устройству.
lspci -vv <опции> — информация о pci устройствах
lsusb <опции> — Подключенные устройства USB
lsusb.py <опции> — Подключенные устройства USB
usb-devices — Подробная информация об USB устройствах
lsscsi <опции> — Смотрим подключенные жесткие диски
lscpu <опции> — Информация о процессоре
lsmem — Для просмотра информации о используемой памяти
lshw <опции> — Утилита выводит подробную информацию по устройствам
dmidecode – Разнообразная информация о железе
inxi — Скрипт, позволяющий получить информации о системе
hwinfo — Утилита выводит информацию об устройствах
HardInfo — Графическая утилита
---------------------------------------------------------------- каталог sys
__________________________________________________________Аудит_журналирование
auditctl - служба аудита
/etc/audit/auditd.conf - конфиг
sudo cat /var/log/audit/audit.log - лог файл
/etc/audit/audit.rules - список правил аудита
-----------------------------------------------autrace-------------------------
autrace - Аудит событий которые вызваны процессами
ausearch - Поиск событий в лог файле
sudo auserch -a номер_события - Поиска событий по номерам событий:
sudo ausearch -sc ptrace -i - Поиска событий по именам системных вызовов:
sudo ausearch -ui 2010 - Поиска событий по идентификаторам пользователей:
sudo ausearch -x /usr/bin/nmap - Поиска событий по именам исполняемых файлов:
sudo ausearch -tm pts/0 - Поиска событий по имени терминала:
sudo ausearch -tm cron - Поиска событий по именам демонов:
sudo aureport - статистика по событиям
sudo aureport -au - аутентификация пользователей
sudo aureport -x - исполняемые файлы
sudo aureport -l -вход в систему
mate-system-log - Графическая программа просмотра логов
/var/log/afick - информация о целостности системы
/var/log/boot.log - логи загрузки
-----------------------------------------Rsyslog----------------------------
Rsyslog - сервис управления логами
/etc/rsyslog.conf
-----------------------------------------logrotate--------------------------
Утилита Logrotate автоматически обрабатывает журналы
/etc/logrotate.conf
/etc/logrotate.d - Папка для дополнительных настроек
Некоторые параметры управления и обработки журналов.
rotate — сколько старых логов нужно хранить;
create — создать пустой лог файл после перемещения старого;
dateext — добавляет дату ротации перед заголовком старого лога;
delaycompress — не сжимать последний и предпоследний журнал;
maxage — выполнять ротацию, если журналы старше, чем указано;
missingok — не выдавать ошибки, если лог файла не существует;
olddir — перемещать старые логи в отдельную папку;
postrotate/endscript — выполнить команды после ротации;
size — размер лога, когда он будет перемещен;
logrotate -d /etc/logrotate.d/bootlog - Проверка конфигурации ротации.
---------------------------------systemd-journald----------------------------
systemd-journald — демон (служба), который собирает записи журнала из всей системы.
/etc/systemd/journald.conf
systemctl restart systemd-journald - перезагрузка.
sudo journalctl -eu NetworkManager<название службы> - просмотр логов определенной службы.
sudo journalctl -f - отслеживать события в реальном времени.
sudo journalctl --unit nginx - журнал юнита
sudo journalctl --disk-usage - Вывести общий размер лог файлов на диске
journalctl _PID=1234 - Просмотр логов процесса с PID 1234:
journalctl _UID=1010 - Просмотр логов процессов, запущенных от пользователя с UID 1010
--------------------------------dmesg-------------------------------------------
dmesg — сообщения ядра Линукс
/var/log/dmesg
-C, --clear — очистить буфер сообщений ядра;
-H, --human — включить вывод, удобный для человека;
-k, --kernel — отображать только сообщения ядра;
-u, --userspace — сообщения от программ пространства пользователя;
-w, --follow — после вывода всех сообщений ждать новых;
-x, --decode — выводить категорию и уровень журналирования.
---------------------------------sysstat sar
Журналирования и мониторинг устройств системы.
установить sysstat
sudo apt-get install sysstat
sudo systemclt enable sysstat
sudo systemctl start sysstat
sar -u | less - загрузка процессора.
sar -d | less - загрузка диска.
sar -n DEV 5 2 - выдает информацию каждые 5ть секунд 2а тика. Информация о нагрузке на сеть -n DEV.
_________________________________________________ssh
ssh user69@200.200.200.1 - подключение
ssh -T dima@localchost <<EOF - Можно просто получить результат выполнения команд
копирование:
scp $filename user@targethost:remote_path - С локального хоста на удаленный хост:
scp user@remote.host:file.txt ~/MyDocs - С удаленного хоста на локальную машину.
/etc/ssh/ - конфиги ssh ssh_config - конфиг клиента sshd_config - конфиг сервера.
Запуск командна удаленном хосте:
ssh myhost.example.com ls > outfile - Создает outfile на локальном хосте.
ssh myhost.example.com "ls > outfile" - Создает outfile на удаленном хосте.
_________________________________________________SELinux
sestatus - статус SELINUX
seinfo – утилита получения информации о политике SELinux /sys/fs/selinux/policy (необходимо установить sudo dnf install setools-console)
/etc/selinux/config - конфиг selinux
setenforce 0 - переовд в режим permissive (все разрешено включено только логирование)
ls -Z - отображает контекст SELinux
getfattr -m . -d <имя файла коталога> - отображает вне ядерные атрибуты безопасности SELinux
ps -Z - отбражает контекст безопасности процессов.
sudo chcon -v <устанавливаемый контекст> <имя файла папки> - изменение контекста
getsebool -a -Просмотр действующих правил (boolean) SELinux:
semanage boolean -l - То же самое с кратким описанием правила:
semanage port -l - Просмотр известных SELinux портов
setsebool <boolean> <value> - Включение / отключение правила:
sudo semanage fcontext -C -l
sudo sealert -a /var/log/audit/audit.lo - поиск событий безопасности.
_________________________________________________Tcp Wrappers
контроля доступа к сетевым сервисам на уровне приложений.(устаревштй)
/etc/hosts.allow - файл настройки разрешений.
/etc/hosts.diny - файл настройки запретов.