NetworkAdmin.ru – Telegram
NetworkAdmin.ru
4.75K subscribers
226 photos
25 videos
2 files
499 links
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
👤 Как перенести пользователей между серверами с сохранением UID, групп и паролей

Иногда возникает необходимость перенести локальных пользователей с одного linux-сервера на другой - при миграции, клонировании окружений или настройке тестовой копии. Но важно не просто скопировать имена, а сохранить UID, GID, пароли и групповые принадлежности, чтобы избежать конфликтов и сохранить доступы.

🌟 Что нужно сохранить

/etc/passwd - основная информация о пользователях
/etc/shadow - пароли пользователей
/etc/group - группы
/etc/gshadow - пароли групп (редко)
/home/ - директории пользователей и их данные (если нужно)


1️⃣ Фильтрация нужных пользователей. На проде часто много системных аккаунтов. Чтобы перенести только нужных людей, можно отфильтровать пользователей с UID > 1000 (или 500 - зависит от дистрибутива):


awk -F: '$3 >= 1000 && $3 < 60000 { print $1 }' /etc/passwd


2️⃣ Экспорт записей. Выполните на исходном сервере:


#пользователей
awk -F: '$3 >= 1000 && $3 < 60000' /etc/passwd > users.passwd

#пароли
awk -F: 'NR==FNR{a[$1]; next} $1 in a' users.passwd /etc/shadow > users.shadow

#группы
awk -F: '$3 >= 1000 && $3 < 60000' /etc/group > users.group
awk -F: 'NR==FNR{a[$1]; next} $1 in a' users.passwd /etc/gshadow > users.gshadow


Скопируйте файлы users.passwd, users.shadow, users.group, users.gshadow на новый сервер.

3️⃣ Импорт на новом сервере. На новом сервере:

Сначала делаем резервные копии оригинальных файлов:


cp /etc/passwd /etc/passwd.bak
cp /etc/shadow /etc/shadow.bak
cp /etc/group /etc/group.bak
cp /etc/gshadow /etc/gshadow.bak


Затем добавляем новые записи (убедитесь, что нет конфликтов UID/GID):


cat users.passwd >> /etc/passwd
cat users.shadow >> /etc/shadow
cat users.group >> /etc/group
cat users.gshadow >> /etc/gshadow


4️⃣ Копирование домашней директории


rsync -avz /home/ user@newserver:/home/


Не забудьте про владельцев:


chown -R username:groupname /home/username


Проверка


getent passwd имя_пользователя
id имя_пользователя
su - имя_пользователя


🌟 Если вы переносите пользователей с sudo-доступом, убедитесь, что их записи присутствуют в /etc/sudoers или /etc/sudoers.d/.

#linux #users

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94
📍 Анализ открытых портов и процессов в Linux

Когда сервер начинает вести себя подозрительно - например, появляется неизвестный открытый порт, нестандартный трафик или система тормозит - важно быстро выяснить: что за процесс, что он слушает и какие соединения установлены. Для этого можно использовать связку: ss, lsof и каталог /proc.

1️⃣ ss - быстро и точно о сетевых соединениях. Современная замена netstat, работает быстрее и точнее:


ss -tulnp


Покажет все TCP/UDP-порты, которые слушают процессы:

-tuln - TCP/UDP, слушающие, без разрешения имен
-p - имя процесса и PID

Пример:


LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))


2️⃣ lsof - подробности о дескрипторах и файлах. lsof позволяет заглянуть глубже в то, что именно открыт у процесса:


lsof -i :80


Выведет все процессы, использующие порт 80.


lsof -nP -iTCP -sTCP:LISTEN


Список всех TCP-сервисов, которые слушают порты.

3️⃣ /proc - внутренняя кухня процесса. Для изучения процесса изнутри можно обратиться к /proc/<PID>/fd - тут видны все открытые дескрипторы:


ls -l /proc/1234/fd


Покажет, какие файлы, сокеты и каналы открыт у процесса с PID 1234.

Для конкретного сокета:


ls -l /proc/1234/fd | grep socket


Также можно посмотреть cmdline:


cat /proc/1234/cmdline


4️⃣ Комбинируем все вместе. Узнаем, какой процесс слушает порт:


ss -tulnp | grep :8080


Получаем его PID → проверяем, какие соединения установлены:


lsof -p 1234 -i


Лезем в /proc/1234/ за подробностями:

/fd - дескрипторы
/status - ресурсы и права
/cmdline - команда запуска

#linux #network

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123
Та самая задачка на 5 минут

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁141
This media is not supported in your browser
VIEW IN TELEGRAM
10–11 сентября встречаемся на IT Elements — конференции, сделанной айтишниками для айтишников.

Площадка в третий раз станет точкой притяжения тех, кто реально делает ИТ в России. В этом году в фокусе — критически важные направления отрасли: инфраструктура, сети, кибербезопасность, данные и AI/ML.

Тематические треки:

▪️Инфраструктура: антихрупкость в архитектуре, инфраструктура для ИИ, отечественные решения, защита, стратегии, ключевые платформы (гибридные облака, БД, хранилища), контейнеры и Kubernetes.

▪️Сети: будущее сетей, сервис, ЦОДы для ИИ, VXLAN, балансировка, UC, управление.

▪️Кибербезопасность: киберустойчивость, импортозамещение NGFW, безопасная разработка, управление уязвимостями, мониторинг инцидентов, киберучения.

▪️Данные и ИИ: Data-driven-инфраструктура, миграция на LakeHouse, Big Data, автоматизация разработки, MES-оптимизация, корпоративные GPT-ассистенты и агенты, ESM-системы.

Формат: офлайн в Москве или онлайн.

Участие бесплатное, по предварительной регистрации.
⚙️ Управление оперативной памятью без перезагрузки

Знали ли вы, что в linux можно отключать и включать оперативную память без перезагрузки? Главное условие - отключаемые блоки памяти должны быть свободны.

▪️ Для начала - полезная команда:


lsmem


Она покажет, как ядро видит вашу память - в виде блоков. Например:


RANGE SIZE STATE REMOVABLE BLOCK
0x0000000000000000-0x00000000f7ffffff 3.9G online yes 0-30
0x0000000100000000-0x0000000107ffffff 128M online yes 32


Блоки - по 128M. Всего - 4G.

▪️ Пример: хотим временно отключить 1G памяти:


chmem -d 1G


▪️ Или выборочно - блоки с 22 по 29:


chmem -d -b 22-29


Если память занята, chmem попробует переместить данные и освободить нужные блоки. Это может занять некоторое время.

▪️ Проверяем результат:


lsmem


Теперь 1G памяти offline. Осталась активной - 3G.

▪️ Возвращаем память обратно:


chmem -e 1G


#linux #RAM

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73
👁 Проверка MTU и проблемы с фрагментацией пакетов

MTU (Maximum Transmission Unit) - это максимальный размер пакета, который может быть передан без фрагментации. Неправильно настроенное значение MTU может привести к странным сетевым багам: страницы не грузятся до конца, SSH висит, API-запросы обрываются и т.д.

▪️ Как проверить MTU между двумя узлами?

Один из самых надежных способов - использовать ping с флагом запрета фрагментации (в Linux - -M do):


ping -c 4 -M do -s 1472 8.8.8.8


Почему 1472? 1472 байта данных + 28 байт заголовков (IP + ICMP) = 1500 байт - стандартное MTU для Ethernet.


Если MTU меньше - вы получите ошибку:


Frag needed and DF set


Уменьшайте значение -s по шагам, пока ping не пройдет - это и будет максимальный размер без фрагментации.

▪️ Альтернатива - tracepath:


tracepath 8.8.8.8


Этот инструмент сам определяет, на каком узле в пути начинается фрагментация.

▪️ Настройка MTU:

Постоянная настройка через netplan (Ubuntu):


ethernets:
eth0:
dhcp4: yes
mtu: 1400


Для временного изменения:


ip link set dev eth0 mtu 1400


▪️ Проблемы с фрагментацией чаще всего появляются:

При использовании VPN и туннелей (WireGuard, IPsec, OpenVPN)
В облачных сетях с Jumbo Frames
При неправильно настроенном MSS (Maximum Segment Size)


Для TCP можно использовать iptables для автоматической коррекции MSS:


iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu


#ping #MTU

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Please open Telegram to view this post
VIEW IN TELEGRAM
👎11😁8🤡1
📱 Быстрый запуск PHP-приложений без веб-сервера

Многие не знают, что в PHP есть встроенный веб-сервер. Он отлично подходит для тестов, разовых задач или работы с локальными утилитами - без необходимости устанавливать и настраивать Apache или Nginx.

📍 Пример - запуск phpMyAdmin без веб-сервера

Предположим, вам нужно быстро подключиться к базе через phpMyAdmin, но поднимать полноценный веб-сервер не хочется. Все просто:

1️⃣ Установите PHP и модуль mysqli:


apt install php php-mysqli


2️⃣ Скачайте и распакуйте phpMyAdmin:


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


3️⃣ Запустите встроенный веб-сервер:


cd phpMyAdmin-5.2.1-all-languages
php -S 172.27.50.130:8080


4️⃣ Перейдите в браузере по адресу: http://172.27.50.130:8080

Если конфигурация еще не создана - перейдите в /setup/, настройте подключение к серверу баз данных и сохраняйте конфиг. Если все уже настроено - сразу входите в интерфейс.

Когда работа закончена, просто остановите сервер (Ctrl+C). Все HTTP-запросы будут видны прямо в консоли - удобно для отладки.

#PHP #phpMyAdmin

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112
📎 Понимаем атрибуты файлов в Linux: stat, mtime, ctime, atime, birth

Часто путаетесь в 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


▪️ Разбор полей:

1️⃣ Birth (crtime) - время создания иноды. Показывается не на всех файловых системах. Например, ext4 и xfs поддерживают, но не гарантированно. Это именно момент физического создания файла.

2️⃣ Access (atime) - время последнего доступа к файлу (чтение, просмотр).

⚠️ Влияет параметр монтирования:

noatime - метка не обновляется вовсе;
relatime (по умолчанию) - обновляется, если: прошло более 24 часов с последнего доступа; atime < mtime или ctime.

Проверьте сами:


cat file.txt
stat file.txt # atime обновится
cat file.txt
stat file.txt # atime НЕ обновится, если прошло меньше 24ч


3️⃣ Modify (mtime) - изменение содержимого файла (например, записали новые данные).

4️⃣ Change (ctime) - изменение метаданных файла: прав, владельца, ссылок и т.д. Например:


chmod 644 file.txt
# изменится только ctime, mtime останется прежним


🌟 Частая путаница:

На слух change и modify кажутся синонимами, но это совершенно разные вещи в контексте файловой системы. mtime - это про СОДЕРЖИМОЕ, ctime - про ОБОЛОЧКУ (метаданные).

▪️ Когда это важно? Например, при использовании find:


# Найти файлы, измененные по содержимому за последние 2 дня
find . -mtime -2

# Найти файлы с измененными правами/владельцем за последние 2 дня
find . -ctime -2


Полезная привычка - точно понимать, какой таймштамп используется в вашей задаче: доступ, изменение содержимого или метаданных.

#linux #files

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104🔥1
👤 TOTP-авторизация в Linux: двухфакторка прямо в консоли

Хотите добавить второй фактор авторизации в linux, но без заморочек с внешними порталами и веб-интерфейсами? Все можно сделать прямо в терминале с помощью PAM и TOTP. Покажу, как настроить двухфакторную авторизацию через google authenticator или oathtool.

1️⃣ Установка модуля PAM для TOTP.


sudo apt install libpam-google-authenticator # на debian/ubuntu
sudo yum install google-authenticator # на RHEL/centOS


2️⃣ Генерация секретного ключа для пользователя. Под нужным пользователем запускаем:


google-authenticator


Вы получите:

📍Секретный ключ (его нужно добавить в приложение google authenticator или аналог);
📍URL в формате otpauth://...;
📍Резервные коды на случай потери доступа;

3️⃣ Настройка PAM. Открываем PAM-конфиг sshd:


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-код.

4️⃣ Использование oathtool (альтернатива телефону). Если вы хотите получать коды в консоли, используйте oathtool.

Устанавливаем:


sudo apt install oathtool


Пример генерации кода (вставьте свой секретный ключ в base32):


oathtool --totp -b 'JBSWY3DPEHPK3PXP'


Можно сделать shell-функцию:


totp() {
oathtool --totp -b "$1"
}


И использовать:


totp JBSWY3DPEHPK3PXP


🌟 Полезно знать

📍Конфигурация хранится в ~/.google_authenticator;
📍Двухфакторка включается для каждого пользователя отдельно;
📍Можно задать ограничения - например, разрешить доступ по SSH только с TOTP, но не требовать при входе локально.

#linux #2FA

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
🤓

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17🤔2🤡2
📱 Консоль через браузер за 1 минуту с помощью ttyd

Если вдруг понадобилось зайти в терминал через веб или дать кому-то временный доступ - есть простой и удобный способ: 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


▪️ Запуск. Запускаем веб-терминал с Bash:


ttyd bash


В консоли появится порт (по умолчанию - 7681). Переходим в браузере: http://<IP_сервера>:7681 - и вы в консоли.

▪️ Использование. Вы можете запускать любую CLI-программу:


ttyd top # Мониторинг системы
ttyd mc # Midnight Commander в браузере
ttyd htop # Более наглядный top


▪️ Возможности. Запустите ttyd без параметров, чтобы увидеть все опции:

📍выбор порта и интерфейса (-p, -i);
📍basic-аутентификация (--credential);
📍режим только для чтения (--readonly);
📍автоматическое переподключение и прочее.

Утилита идеальна для быстрой отладки, демонстрации или временного доступа без SSH-настройки. Например, можно повесить top в read-only режиме для удаленного мониторинга.

#linux #ttyd

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141
🌐 Кастомный DNS-сервер на dnsmasq

Если нужен легкий и быстрый способ настроить локальный DNS-сервер для офиса, дома или тестовой среды - обратите внимание на dnsmasq. Это компактная и мощная утилита, которая может:

📍Резолвить домены локально (например, dev.local);
📍Кэшировать DNS-запросы;
📍Делать форвардинг к другим DNS-серверам;
📍Работать как DHCP-сервер (опционально).

▪️ Установка


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


▪️ Проверка. Убедитесь, что DNS отвечает:


dig @127.0.0.1 web.local +short


Ответ должен быть 192.168.1.100

Чтобы система использовала ваш dnsmasq:


sudo nano /etc/resolv.conf


И указать:


nameserver 127.0.0.1


⚠️ NetworkManager может перезаписывать этот файл. В таком случае - настройте его отдельно через /etc/NetworkManager/conf.d/

#DNS #dnsmasq

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍105
🗂️ Почему 20 МБ вложений в почте - это не всегда 20 МБ

На одном из почтовых серверов попросили поднять лимит на размер вложений - якобы 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

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121
✈️ Стресс-тестирование дисков и SSD в Linux

fio - один из самых популярных инструментов для тестирования производительности дисков. Он гибко настраивается и позволяет моделировать реальные нагрузки: от последовательного чтения до случайной записи мелких блоков.

▪️ Установка


apt install fio# debian/ubuntu

yum install fio# centOS


▪️ Пример теста. Последовательное чтение (1 ГБ):


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 параллельных потока


▪️ Комбинированная нагрузка (чтение/запись 70/30)


fio --name=mixed --rw=randrw --rwmixread=70 --bs=8k --size=2G --numjobs=2 --runtime=60 --group_reporting


--rw=randrw - чтение/запись
--rwmixread=70 - 70% чтения, 30% записи


🌟 Важно

📍fio перезаписывает тестируемый участок!!! Поэтому не запускайте его на проде в разделах с важными данными.
📍Для тестирования всего диска без файловой системы используйте /dev/sdX.
📍Запускайте тесты с sudo, чтобы избежать кеширования на уровне ОС.

#linux #fio

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Сразу понятно, что релиз удался

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13🔥1
🧹 Как чистить и ограничивать размер логов journald

В большинстве современных дистрибутивов 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, чтобы чистка выполнялась автоматически.

▪️ Ограничение логов для конкретной службы. Если только один сервис «засоряет» журнал, можно выделить ему отдельное пространство логов. Например, для ssh:


systemctl edit ssh


Добавляем:


[Service]
LogNamespace=ssh


Создаём конфиг /etc/systemd/journald@ssh.conf:


[Journal]
SystemMaxUse=20M


Перезапускаем службу:


systemctl restart ssh


Просмотр её логов:


journalctl --namespace ssh


#linux #journald

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
🔒 Ужесточаем политику паролей в linux с PAM и libpwquality

Слабые пароли - одна из важных и актуальных тем. В 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 - проверка на словарные пароли


▪️ Подключение в PAM. Открываем:


/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

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112
А это главное 😏

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14😁8
This media is not supported in your browser
VIEW IN TELEGRAM
Когда в столовой проходишь мимо бухгалтера, которому обещал настроить принтер (да как у тебя вообще совести хватает пойти на обед, когда я не могу ничего распечатать)

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁161
🔫🔫🔫 день, а это означает, что пора поздравлять вас с днём программиста!

Желаю вам, чтобы Ваша зп росла быстрее, чем количество тасок. И пусть в жизни, как в коде, всегда находится правильный алгоритм! 🔫

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍5🫡1