Linux: user & group management

  • userldel – delete user, delete user home directory (user -r)
  • chage / passwd – managing password aging
    • chage -l user10  – lists password aging attributes for user
      • # chage -l user10
        Last password change : May 24, 2021
        Password expires : never
        Password inactive : never
        Account expires : never
        Minimum number of days between password change : 0
        Maximum number of days between password change : 99999
        Number of days of warning before password expires : 7
    • chage -E 2024-12-31 user10  – deactivate user user10 at 2024-12-31
    • chage -d 0 user60 – force to change the password at next login (аналог sudo passwd -e weril)
    • passwd -n 7 -x 15 -w 3 user5 – configures password aging for user5 with mindays (–n) set to 7, maxdays (–x) to 16, and warndays (–w) to 3 using the passwd
    • The chage command changes the number of days between password changes and the date of the last password change.


Читать дальше

Linux: Docker, conrainerd, container security (hardening)

Basics
  • Container security – три основных риска/угрозы/проблемы
    • плохая конфигурация
    • проблемы runtime
    • цепочки поставок
  • Применение bestpractice до/после

  • На основе dockerfile создается docker image, который используется для создания containers
Docker builds images automatically by reading the instructions from a Dockerfile which is a text file that contains all commands, in order, needed to build a given image.


Читать дальше

Linux: top

Командный режим
top -icbn1
 
Интерактивный режим

Заходим в top, нажимаем

“1” – показывает загрузку по ядрам.

“s” – изменяем интервал обновления/сбора статистики (напр.  уменьшаем c 3 секунд до 0.1).

“M” – сортировка процессов по утилизации RAM

“P” – сортировка процессов по утилизации CPU (processor)

“k” – возможность отправить KILL PID (kill -15 / SIGTERM) находясь в TOP

“t” – показываем в виде статус бара

%Cpu0 : 6.2/12.5 19[||||||||||||||||||| ]
%Cpu1 : 11.8/11.8 24[|||||||||||||||||||||||| ]
%Cpu2 : 13.3/20.0 33[||||||||||||||||||||||||||||||||| ]
%Cpu3 : 25.0/18.8 44[|||||||||||||||||||||||||||||||||||||||||||| ]
 
Поэкранный вывод

top –b – вывод каждые три секунды всего top’a.

Читать дальше

Linux: использование rpm/yum/dnf в CentOS (обновление, установка, удаление приложений)

  • Аналог статьи про Ubuntu, Gentoo
  • rpm (redhat package manager) – аналог dpkg (только локальная работа без репо, не устраняет проблемы с зависимостями)
  • yum (yellowdog update manager) – аналог apt-get
  • dnf (dandified yum) – аналог apt, рекомендуется использовать dnf (причем так же как с apt-get yum в актуальных версиях rhel 8 и старше это просто ссылка на dnf), он так же как и apt лучше работает с зависимостями, при этом использует команды на входе и конфигурационные файлы yum в /etc/yum.repos.d/*  


Читать дальше

Демонизация приложений, делаем демон приложения systemd в CentOS (Debian), работа с сервисами (sysvinit, systemctl)

  • systemctl (system control) без запущенных аргументов выдает список сервисов/демонов, запущенных в системе
root@serv:~# systemctl
UNIT LOAD ACTIVE SUB DESCRIPTION 
proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File System Automount Point 
sys-devices-pci0000:00-0000:00:07.1-ata2-host1-target1:0:0-1:0:0:0-block-sr0.device loaded active plugged VMware_Virtual_IDE_CDROM_Drive 
sys-devices-pci0000:00-0000:00:10.0-host2-target2:0:0-2:0:0:0-block-sda-sda1.device loaded active plugged Virtual_disk 1 
sys-devices-pci0000:00-0000:00:10.0-host2-target2:0:0-2:0:0:0-block-sda-sda2.device


Читать дальше

Скрипт на событие логина по SSH

Пришла идея создания скрипта для логгирования события подключения по SSH в таблицу SQL и уведомления о подключении определенных пользователей определенным пользователям:
  • писать всем пользователям о подключении их самих – сами пользователи знают, когда заходят и заход тогда, когда ты это делать не мог – есть повод обеспокоиться
  • админу писать о подключении всех пользователей, имеющих права на sudo
В целом логгирование в linux встроено по умолчанию – утилита last показывает полный лог авторизаций с момента создания файла /var/log/wtmp и продолжительность pts, а в lastlog есть информация о последнем подключении.


Читать дальше

Linux: ядро (kernel), процессы /proc в ОС и работа с ними (proc, ps, lsof, nice, kill, killall, top, lscpu, interrupts, smp irq affinity, isolcpus, taskset, cpuset/cset shield), утилизация процессора (user/system/idle/iowait/softirq)

  • kernel parameters /proc/cmdline (можно редактировать конфигом GRUB)
  • kernel parameters modification /etc/sysctl.conf
  • В Linux все рассматривается как файлы, включая устройства (/dev) и процессы (/proc).
  • Про перевод процессов в background в Linux подробнее в hotkeys (jobs, fg, bg, ctrl+z)
  • Дерево процессов можно посмотреть через pstree, по умолчанию отображаются непользовательские процессы
~$ pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─agetty
├─auditd───{auditd}
├─crond
├─dbus-daemon
├─httpd───10*[httpd]
├─master─┬─pickup
│ └─qmgr
├─mysqld_safe───mysqld───24*[{mysqld}]
├─polkitd───5*[{polkitd}]
├─rsyslogd───{rsyslogd} ├─sshd───sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
  └─wpa_supplicant
~$ pstree -pu
systemd(1)─┬─NetworkManager(464)─┬─{NetworkManager}(466)
│ └─{NetworkManager}(469)
├─agetty(449)
├─auditd(412)───{auditd}(430)
├─crond(446)
├─dbus-daemon(435,dbus)
├─httpd(3474)─┬─httpd(12730,apache)
│ ├─httpd(13772,apache)
│ ├─httpd(13774,apache)
│ ├─httpd(13775,apache)
│ ├─httpd(13853,apache)
│ ├─httpd(13857,apache)
│ ├─httpd(13888,apache)
│ ├─httpd(14286,apache)
│ ├─httpd(14428,apache)
│ └─httpd(15246,apache) ├─master(2232)─┬─pickup(15221,postfix)
│ └─qmgr(2270,postfix)
├─mysqld_safe(952,mysql)───mysqld(1858)─┬─{mysqld}(2200)
│ ├─{mysqld}(2201)
│ ├─{mysqld}(2202)
│ ├─{mysqld}(2204)
│ ├─{mysqld}(2587)
│ ├─{mysqld}(2588)
│ ├─{mysqld}(2589)
│ ├─{mysqld}(2590)
│ ├─{mysqld}(2591)
│ ├─{mysqld}(2593)
│ ├─{mysqld}(2684)
│ ├─{mysqld}(2702)
│ └─{mysqld}(2704)
├─polkitd(475,polkitd)─┬─{polkitd}(567)
│ ├─{polkitd}(568)
│ ├─{polkitd}(569)
  │ ├─{polkitd}(572) ├─rsyslogd(433)───{rsyslogd}(462)
├─sshd(675)───sshd(13643)───sshd(13645,admin)───bash(13646)───pstree(15253)
  ├─systemd-journal(328)
  ├─systemd-logind(439)
  ├─systemd-udevd(349)  └─wpa_supplicant(474)

Процессы запускаются самой системой для функционирования системы, такие процессы называют background/daemon process.

Читать дальше

Использование emerge в Gentoo

Аналог статьи про Ubuntu.

https://wiki.gentoo.org/wiki/Gentoo_Cheat_Sheet – список необходимых команд, все что ниже там есть.

Логи /var/log/emerge.log

Просмотр

Посмотреть все установленные пакеты.

qlist -I (qlist -Iv с версиями)

Смотрим какие версии приложения установлены и какие активны.

$ eselect postgresql list
Available PostgreSQL Slots
 10 * 10.1
Обновление пакетов и ОС

Очень хорошо и подробно описано тут.

Читать дальше

Linux/BSD: популярные дистрибутивы (general, network)

  • Корпоративный сегмент: грубо говоря 45% debian (ubuntu+debian+raspbian), 45% rhel (centos+rhel+fedora), 10% остальные
  • Популярные дистрибутивы могут выбирать не самую продолжительную (отличную от Long term support, LTS) по поддержке сборку Linux Kernel для своей работы (напр. Fedora, Ubuntu) – чтобы как можно раньше находить баги с новыми версиями.


Читать дальше