Многие не знают, что в PHP есть встроенный веб-сервер. Он отлично подходит для тестов, разовых задач или работы с локальными утилитами - без необходимости устанавливать и настраивать Apache или Nginx.
Предположим, вам нужно быстро подключиться к базе через phpMyAdmin, но поднимать полноценный веб-сервер не хочется. Все просто:
apt install php php-mysqli
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz
tar xzvf phpMyAdmin-5.2.1-all-languages.tar.gz
cd phpMyAdmin-5.2.1-all-languages
php -S 172.27.50.130:8080
Если конфигурация еще не создана - перейдите в /setup/, настройте подключение к серверу баз данных и сохраняйте конфиг. Если все уже настроено - сразу входите в интерфейс.
Когда работа закончена, просто остановите сервер (Ctrl+C). Все HTTP-запросы будут видны прямо в консоли - удобно для отладки.
#PHP #phpMyAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2
Часто путаетесь в modify и change? Я - тоже. Поэтому сделал небольшую шпаргалку по выводу stat и значению каждой метки.
stat file.txt
Пример вывода:
File: file.txt
Size: 3 Blocks: 8 IO Block: 4096 regular file
Device: fe00h/65024d Inode: 657571 Links: 1
Access: 2025-08-22 00:31:39.446518364 +0300
Modify: 2025-08-22 00:30:55.460753550 +0300
Change: 2025-08-22 00:30:55.460753550 +0300
Birth: 2025-08-22 00:30:45.778142819 +0300
noatime - метка не обновляется вовсе;relatime (по умолчанию) - обновляется, если: прошло более 24 часов с последнего доступа; atime < mtime или ctime.Проверьте сами:
cat file.txt
stat file.txt # atime обновится
cat file.txt
stat file.txt # atime НЕ обновится, если прошло меньше 24ч
chmod 644 file.txt
# изменится только ctime, mtime останется прежним
На слух change и modify кажутся синонимами, но это совершенно разные вещи в контексте файловой системы. mtime - это про СОДЕРЖИМОЕ, ctime - про ОБОЛОЧКУ (метаданные).
# Найти файлы, измененные по содержимому за последние 2 дня
find . -mtime -2
# Найти файлы с измененными правами/владельцем за последние 2 дня
find . -ctime -2
Полезная привычка - точно понимать, какой таймштамп используется в вашей задаче: доступ, изменение содержимого или метаданных.
#linux #files
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🔥1
Хотите добавить второй фактор авторизации в linux, но без заморочек с внешними порталами и веб-интерфейсами? Все можно сделать прямо в терминале с помощью PAM и TOTP. Покажу, как настроить двухфакторную авторизацию через google authenticator или oathtool.
sudo apt install libpam-google-authenticator # на debian/ubuntu
sudo yum install google-authenticator # на RHEL/centOS
google-authenticator
Вы получите:
sudo nano /etc/pam.d/sshd
Добавляем в начало:
auth required pam_google_authenticator.so
Также нужно разрешить использование PAM в sshd_config:
sudo nano /etc/ssh/sshd_config
Убедитесь, что указано:
ChallengeResponseAuthentication yes
UsePAM yes
Перезапускаем SSH:
sudo systemctl restart sshd
Теперь при входе по SSH будет запрашиваться TOTP-код.
Устанавливаем:
sudo apt install oathtool
Пример генерации кода (вставьте свой секретный ключ в base32):
oathtool --totp -b 'JBSWY3DPEHPK3PXP'
Можно сделать shell-функцию:
totp() {
oathtool --totp -b "$1"
}
И использовать:
totp JBSWY3DPEHPK3PXP
#linux #2FA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2
Если вдруг понадобилось зайти в терминал через веб или дать кому-то временный доступ - есть простой и удобный способ:
ttyd.
wget https://github.com/tsl0922/ttyd/releases/download/1.7.3/ttyd.i686
mv ttyd.i686 /usr/local/bin/ttyd
chmod +x /usr/local/bin/ttyd
ttyd bash
В консоли появится порт (по умолчанию - 7681). Переходим в браузере: http://<IP_сервера>:7681 - и вы в консоли.
ttyd top # Мониторинг системы
ttyd mc # Midnight Commander в браузере
ttyd htop # Более наглядный top
Утилита идеальна для быстрой отладки, демонстрации или временного доступа без SSH-настройки. Например, можно повесить top в read-only режиме для удаленного мониторинга.
#linux #ttyd
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤1
Если нужен легкий и быстрый способ настроить локальный DNS-сервер для офиса, дома или тестовой среды - обратите внимание на
dnsmasq. Это компактная и мощная утилита, которая может:
sudo apt install dnsmasq
/etc/dnsmasq.conf. Пример минимальной настройки:
# Основной DNS, к которому будут проксироваться внешние запросы
server=8.8.8.8
# Зона для кастомных записей
domain-needed
bogus-priv
no-resolv
# Свое доменное имя
domain=local
# Файл с кастомными DNS-записями
addn-hosts=/etc/dnsmasq.hosts
Создаем файл кастомных записей:
sudo nano /etc/dnsmasq.hosts
Пример содержимого:
192.168.1.100 web.local
192.168.1.101 db.local
sudo systemctl restart dnsmasq
Убедитесь, что он включен при старте:
sudo systemctl enable dnsmasq
dig @127.0.0.1 web.local +short
Ответ должен быть
192.168.1.100Чтобы система использовала ваш dnsmasq:
sudo nano /etc/resolv.conf
И указать:
nameserver 127.0.0.1
/etc/NetworkManager/conf.d/#DNS #dnsmasq
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5
На одном из почтовых серверов попросили поднять лимит на размер вложений - якобы 10 МБ им не хватает. Но ведь по умолчанию стоит лимит на размер письма в 20 МБ, что является универсальным значением. Раздавать «безлимит» на вложения плохое дело - это быстро раздувает почтовую базу, особенно когда сотрудники начинают слать друг другу презентации и макеты по 100 раз на день.
Ограничение в конфигурации - это размер всего письма, а не только вложения. И тут важно помнить, что вложения передаются в письме в кодированном виде, а значит, занимают больше места.
В электронной почте чаще всего используются два метода кодирования, описанные в стандарте MIME:
Base64 - самый распространенный, увеличивает размер вложения примерно в 1,3 раза;
Quoted-printable - встречается реже, но может раздувать файл до 3 раз.
Mime-Version: 1.0
Content-Type: application/pdf; name="file.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="file.pdf"
Здесь PDF-файл закодирован и представлен в виде ASCII-символов.
Если в конфиге указано ограничение на размер письма в 20 МБ, это не значит, что пользователь сможет отправить вложение на 20 МБ. Реально «пролезет» меньше, иногда заметно меньше - из-за особенностей кодирования.
#email #MIME
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤1
fio - один из самых популярных инструментов для тестирования производительности дисков. Он гибко настраивается и позволяет моделировать реальные нагрузки: от последовательного чтения до случайной записи мелких блоков.
apt install fio# debian/ubuntu
yum install fio# centOS
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --runtime=60 --group_reporting
--rw=read - режим чтения
--bs=1M - размер блока (1 МБ)
--size=1G - объем данных
--numjobs=1 - количество потоков
--runtime=60 - время теста в секундах
--group_reporting - агрегированный вывод результатов
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --runtime=60 --group_reporting
--rw=randwrite - случайная запись
--bs=4k - размер блока (типично для БД)
--numjobs=4 - 4 параллельных потока
fio --name=mixed --rw=randrw --rwmixread=70 --bs=8k --size=2G --numjobs=2 --runtime=60 --group_reporting
--rw=randrw - чтение/запись
--rwmixread=70 - 70% чтения, 30% записи
#linux #fio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13🔥1
В большинстве современных дистрибутивов linux системные логи ведет systemd-journald - в бинарном формате, а не в виде привычных текстовых файлов syslog. Эти логи со временем могут занимать гигабайты места, поэтому за ними нужно следить.
journalctl --disk-usage
По умолчанию файлы хранятся в
/var/log/journal./etc/systemd/journald.conf:
[Journal]
SystemMaxUse=1024M # общий лимит размера логов
SystemMaxFileSize=50M # максимальный размер одного файла
После изменения конфигурации перезапустите journald:
systemctl restart systemd-journald.service
По умолчанию journald может занимать до 10% объема раздела, но не более 4 ГБ. На практике чаще встречается именно лимит в 4 ГБ.
journalctl --vacuum-size=1024M
По сроку хранения:
journalctl --vacuum-time=7d
Обе команды можно добавить в cron, чтобы чистка выполнялась автоматически.
systemctl edit ssh
Добавляем:
[Service]
LogNamespace=ssh
Создаём конфиг
/etc/systemd/journald@ssh.conf:
[Journal]
SystemMaxUse=20M
Перезапускаем службу:
systemctl restart ssh
Просмотр её логов:
journalctl --namespace ssh
#linux #journald
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Слабые пароли - одна из важных и актуальных тем. В linux можно усилить требования к паролям через PAM и модуль libpwquality, чтобы пользователи не ставили что-то вроде qwerty123.
yum install libpwquality #centOS
apt install libpam-pwquality #ubuntu/debian
/etc/security/pwquality.conf
Пример строгих настроек:
minlen = 12
minclass = 3
maxrepeat = 2
maxsequence = 3
dictcheck = 1
minlen - минимальная длина пароля
minclass - количество обязательных классов символов (строчные, заглавные, цифры, спецсимволы)
maxrepeat - максимум одинаковых символов подряд
maxsequence - длина допустимой последовательности (abc, 123 и т.д.)
dictcheck - проверка на словарные пароли
/etc/pam.d/common-password # debian/ ubuntu
/etc/pam.d/system-auth # centOS
Находим строку с
pam_pwquality.so и добавляем параметры:
password requisite pam_pwquality.so retry=3 enforce_for_root
retry=3 - количество попыток ввода
enforce_for_root - применить правила даже для root
passwd user
Если пароль не соответствует правилам, PAM выдаст сообщение с указанием, что именно не так.
#security #password
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда в столовой проходишь мимо бухгалтера, которому обещал настроить принтер (да как у тебя вообще совести хватает пойти на обед, когда я не могу ничего распечатать)
#юмор
🧑💻 NetworkAdmin
#юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
😁16❤1
Желаю вам, чтобы Ваша зп росла быстрее, чем количество тасок. И пусть в жизни, как в коде, всегда находится правильный алгоритм!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍5🫡1
Systemd умеет не только собирать и хранить логи, но и отдавать их по HTTP. Для этого есть служба
systemd-journal-gatewayd, которая позволяет просматривать журнал прямо в браузере. Настраивается все буквально в пару шагов (пример для debian).
apt install systemd-journal-remote
Запускаем службу:
systemctl start systemd-journal-gatewayd.service
По умолчанию используется порт 19531.
http://10.25.1.55:19531/browse
Только логи текущей загрузки:
http://10.25.1.55:19531/entries?boot
В интерфейсе удобно переключаться между сервисами через выпадающий список.
curl --silent -H 'Accept: application/json' \
'http://10.25.1.55:19531/entries?UNIT=ssh.service'
systemd-journal-gatewayd умеет работать не только с локальным журналом, но и с логами, собранными с других серверов. Для этого можно указать директорию с журналами:
systemd-journal-gatewayd -D /path/to/logs
#systemd #logs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
WinRE - это встроенная среда восстановления для windows, которая запускается при проблемах с загрузкой системы или вручную через установочный носитель/средства восстановления. Обычно ее используют для диагностики и восстановления, но среду можно адаптировать под собственные задачи.
reagentc /info
Если среда отключена, включаем ее:
reagentc /enable
Winre.wim (обычно на скрытом разделе Recovery или в C:\Recovery\WindowsRE). Создаем рабочую директорию и монтируем образ:
mkdir C:\WinRE_Mount
dism /mount-image /imagefile:C:\Recovery\WindowsRE\Winre.wim /index:1 /mountdir:C:\WinRE_Mount
Внутри смонтированного образа можно:
dism /image:C:\WinRE_Mount /add-driver /driver:C:\Drivers\ /recurse
dism /image:C:\WinRE_Mount /add-package /packagepath:C:\Updates\update.cab
После внесенных изменений сохраняем:
dism /unmount-image /mountdir:C:\WinRE_Mount /commit
#windows #winRE
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1
В linux каждый файл или каталог хранится в виде структуры данных, называемой inode (index node). Inode содержит метаданные: права доступа, владельца, временные метки и ссылки на блоки с данными.
Даже если у вас много свободного места на диске, но закончились inodes - новые файлы создать не получится. Чаще всего такая ситуация возникает на серверах, где генерируются миллионы мелких файлов (логи, временные данные, кеши).
df -i
В столбцах будет видно общее количество inode, сколько уже занято и сколько осталось.
Inode создаются при форматировании файловой системы. Параметры задаются утилитой mkfs (для ext4 - mkfs.ext4). Например, создаем файловую систему с фиксированным количеством inode:
mkfs.ext4 -N 2000000 /dev/sdb1
Здесь -N задает количество inode. По умолчанию mkfs.ext4 рассчитывает их исходя из соотношения «один inode на 16К дискового пространства». Если ожидается много мелких файлов, можно увеличить плотность inode:
mkfs.ext4 -i 4096 /dev/sdb1
(один inode на каждые 4К).
Чтобы не допустить, что один пользователь «забьет» диск миллионами файлов, используют квоты. Включаем поддержку квот в /etc/fstab:
/dev/sdb1 /home ext4 defaults,usrquota,grpquota 0 2
Перемонтируем файловую систему:
mount -o remount /home
Создаем файлы для квот и включаем их:
quotacheck -cum /home
quotaon /home
Ограничиваем inode для пользователя:
edquota -u username
В открывшемся редакторе можно задать soft/hard limit для количества файлов (inodes).
#filesystem #inodes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1
Если существует риск кражи носителей с данными, стоит задуматься о шифровании. На linux это проще всего реализовать через LUKS, который позволяет зашифровать раздел и работать с ним как с обычным блочным устройством.
apt install cryptsetup # debian
cryptsetup luksFormat /dev/sdb1
cryptsetup luksOpen /dev/sdb1 lukscrypt
После этого появится устройство /dev/mapper/lukscrypt.
mkfs.ext4 /dev/mapper/lukscrypt
mkdir /mnt/crypt
mount /dev/mapper/lukscrypt /mnt/crypt
Теперь раздел доступен в системе, а при следующем подключении для расшифровки нужно будет выполнить
cryptsetup luksOpen и ввести пароль.#LUKS #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Иногда команды в linux выдают данные так, что разобраться в них сложно: все идет сплошным текстом, столбцы "пляшут". В таких случаях выручает утилита
column, которая форматирует вывод в аккуратные таблицы.По умолчанию разделителем считается пробел, но при необходимости можно указать свой символ.
mount | column -t
Сразу видно, где какая файловая система и куда она примонтирована - читается намного удобнее.
/etc/passwd разделен двоеточиями. Сделаем его аккуратной таблицей:
column -s ":" -t /etc/passwd
Теперь строки легко обрабатывать, например, через awk. Выведем только имена пользователей:
column -s ":" -t /etc/passwd | awk '{print $1}'
Каждое имя - в отдельной строке. Отличный способ быстро собрать список, массив или передать данные.
#linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2
tmpfs - это файловая система, которая хранит данные в оперативной памяти (RAM). Она монтируется как обычный каталог и доступна для приложений прозрачно, но при этом все записи идут не на диск, а в память.
Зачем это может быть полезно:📍 Ускорение работы - операции чтения/записи из RAM значительно быстрее, чем даже на NVMe SSD.📍 Снижение износа SSD - временные файлы не пишутся на диск, что уменьшает количество циклов записи.📍 Автоматическая очистка - содержимое tmpfs исчезает при перезагрузке.
Примеры использования tmpfs
/tmp по умолчанию монтируется как tmpfs. Если нет - можно добавить в /etc/fstab:
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
npm/yarn cache или /var/cache/pacman) в tmpfs.
tmpfs /var/cache tmpfs defaults,noatime,size=2G 0 0
build/ в RAM:
mount -t tmpfs -o size=4G tmpfs ./build
Ограничение по размеру
Размер tmpfs можно задавать вручную (size=1G), иначе по умолчанию он занимает до половины ОЗУ.
#linux #SSD
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤1