Admin Future
239 subscribers
50 photos
1 video
4 files
87 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
Чеклист (macOS: базовая защита)

1️⃣ FileVault включён
2️⃣ Gatekeeper = App Store + identified devs
3️⃣ SIP (System Integrity Protection) активен
4️⃣ Firewall включён
5️⃣ Автообновления ON

🍏 Не только для дизайнеров — админить тоже надо.
#macos #чеклисты #security
Как быстро создать файл любого размера для тестов? (Win/Lin/Mac)

Классическая задача: нужно протестировать работу мониторинга, скрипта очистки или уведомлений о заканчивающемся месте на диске. Для этого нужен «мусорный» файл большого размера, но создавать его копированием реальных данных — долго и неудобно.

Вот как сгенерировать такой файл мгновенно в любой ОС.

🐧 Linux: fallocate
Современный и самый быстрый способ. Файл создаётся моментально, так как место под него просто резервируется (pre-allocated), а не заполняется нулями.

▪️ Команда:

Bash

# Создать файл размером 10 гигабайт
fallocate -l 10G large_file.tmp

-l — задаёт размер. Можно использовать K, M, G, T (кило-, мега-, гига-, терабайты).

Классическая альтернатива — dd, но он работает медленнее, так как реально пишет нули на диск:

dd if=/dev/zero of=large_file.tmp bs=1G count=10

⊞ Windows: fsutil
В Windows для этого есть встроенная утилита fsutil. Она работает по тому же принципу, что и fallocate, — мгновенно создаёт пустой файл заданного размера.

▪️ Команда (запускать в CMD или PowerShell от имени администратора):

PowerShell

# Создать файл размером 5 гигабайт (размер в байтах)
fsutil file createnew C:\temp\large_file.tmp 5368709120

Важно: размер указывается в байтах.
Лайфхак для PowerShell, чтобы не считать нули:

PowerShell

# Создать файл на 5 ГБ
fsutil file createnew C:\temp\large_file.tmp (5 * 1GB)


macOS: mkfile
В macOS (и других BSD-системах) есть своя специальная утилита — mkfile.

▪️ Команда:

Bash

# Создать файл размером 2 гигабайта
mkfile 2g large_file.tmp

Суффиксы k, m, g для размеров также поддерживаются.

📌 Почему fallocate и fsutil лучше?

Эти утилиты не тратят время и ресурсы диска на запись данных. Они просто сообщают файловой системе: «Зарезервируй здесь 10 ГБ». Поэтому файл любого, даже самого гигантского, размера появляется мгновенно. Идеально для быстрых тестов.

Теперь у вас под рукой есть инструмент для каждой системы, чтобы проверить, сработают ли ваши алерты, когда место действительно начнёт заканчиваться.

#команды #linux #windows #macos #testing #sysadmin
macOS: macOS глазами Linux-админа

Многие админы воспринимают macOS как «чисто пользовательскую» систему. На деле это полноценный Unix, а значит — большинство навыков из Linux работают здесь «из коробки».

▪️ Архитектура
Под капотом macOS: Darwin + BSD + ядро XNU. Это тот же Unix-мир, только в графической обёртке.

▪️ Отличия от Linux

Домашние директории в /Users, а не в /home.

По умолчанию shell — zsh (но можно вернуть bash).

Управление системой через launchctl, diskutil, defaults.

▪️ Зачем это важно
Если вы админ и привыкли к Linux, то macOS не придётся «переучивать». Большинство привычных команд работают, а специфические утилиты быстро осваиваются.

🧠 Для админа: если вы поддерживаете команду с Mac-устройствами — изучите эти особенности. Они экономят часы на настройке и интеграции.

#macOS #Unix #LinuxAdmins #SysAdmin
macOS: Профессиональные диалоги в скриптах с swiftDialog

Когда вы автоматизируете настройку Mac для нового сотрудника с помощью MDM и скриптов, как сообщить ему о процессе? Чёрное окно терминала пугает. Простое уведомление — неинформативно.

swiftDialog — это утилита, которая позволяет выводить красивые, настраиваемые диалоговые окна из любого скрипта (bash, Python). Это поднимает вашу автоматизацию на новый уровень.

Пример: Показываем пользователю этапы настройки его нового Mac.

Установка (в скрипте через brew):

Bash

# Проверяем, установлен ли swiftDialog, и если нет - ставим
if ! command -v dialog &> /dev/null; then
echo "swiftDialog не найден. Устанавливаем..."
/usr/local/bin/brew install swiftDialog
fi

Скрипт для отображения прогресса:

Bash

#!/bin/bash

DIALOG_CMD="/usr/local/bin/dialog"
LOG_FILE="/var/tmp/setup.log"

# Настройки окна
TITLE="Настройка вашего нового Mac"
MESSAGE="Пожалуйста, подождите, мы готовим ваш компьютер к работе. Это может занять 15-20 минут."
ICON="https://corp.example.com/logo.png" # Иконка вашей компании

# Запускаем диалог в фоновом режиме
$DIALOG_CMD --title "$TITLE" --message "$MESSAGE" --icon "$ICON" --progress 5 --commandfile "$LOG_FILE" &

# --- Эмуляция длительных операций ---
echo "progress: 1" > "$LOG_FILE"
echo "listitem: Установка Rosetta 2..." > "$LOG_FILE"
# softwareupdate --install-rosetta --agree-to-license
sleep 5

echo "progress: 2" > "$LOG_FILE"
echo "listitem: Установка Homebrew..." > "$LOG_FILE"
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
sleep 5

echo "progress: 3" > "$LOG_FILE"
echo "listitem: Установка корпоративного ПО (Slack, Zoom)..." > "$LOG_FILE"
# brew install slack zoom
sleep 5

echo "progress: 4" > "$LOG_FILE"
echo "listitem: Настройка параметров безопасности..." > "$LOG_FILE"
# scutil --set HostName "new-mac"
sleep 5

echo "progress: 5" > "$LOG_FILE"
echo "listitem: Завершение настройки. Готово!" > "$LOG_FILE"
sleep 3

# Закрываем диалоговое окно
echo "quit:" > "$LOG_FILE"

exit 0

Что это даёт?

User Experience: Пользователь видит понятный интерфейс, а не пугающие строки кода.

Информативность: В окно можно выводить статус, иконки, этапы выполнения.

Профессионализм: Это показывает высокий уровень зрелоosti IT-процессов в компании.

Админ пишет скрипт. Архитектор думает о том, как этот скрипт взаимодействует с конечным пользователем.

#macos #bash #automation #ux #скрипты
Linux & macOS: Устал читать man? Получай примеры команд за 1 секунду с tldr

Страницы man — это исчерпывающе, но когда тебе срочно нужно запаковать папку в tar или найти файл по размеру, читать трактат на 10 страниц нет времени.

tldr (Too Long; Didn't Read) — это утилита, которая показывает самые частые примеры использования команд. Никакой "воды", только практика.

Установка:

Bash

# macOS
brew install tldr

# Ubuntu/Debian
sudo apt install tldr

# Другие ОС (через Node.js)
npm install -g tldr

Сравним на примере tar:

man tar: Выдаст вам огромный мануал об истории tar, всех возможных флагах и опциях.

tldr tar: Покажет вам это:

# Создать архив из файлов:
tar -cvf target.tar file1 file2

# Создать gzip-архив:
tar -czvf target.tar.gz file1 file2

# Распаковать архив в текущую директорию:
tar -xvf source.tar

# Распаковать gzip-архив:
tar -xzvf source.tar.gz

# Посмотреть содержимое архива:
tar -tvf source.tar

Ещё пара примеров:
tldr find — покажет, как искать по имени, расширению, размеру.
tldr docker — даст базовые команды для работы с контейнерами и образами.

Взгляд архитектора:
Эффективность инженера измеряется не знанием наизусть всех флагов, а скоростью решения задачи. tldr — это инструмент для оптимизации самого ценного ресурса: вашего времени. Он помогает держать фокус на проблеме, а не на синтаксисе.

#linux #macos #cli #tldr #productivity #команды
👍2
macOS: Воспроизводимая среда с Homebrew. Управляем софтом через Brewfile

Каждый раз, настраивая новый Mac, вы вручную ставите десятки утилит и приложений через brew install ...? Это долго и легко что-то забыть.

Архитектурный подход — описать всё необходимое ПО в одном файле и развернуть среду одной командой. Для Homebrew такой файл называется Brewfile.

Как это работает:

Создаём "снимок" текущей системы:
Если у вас уже настроен Mac, создайте Brewfile из установленных пакетов:

Bash

brew bundle dump

Эта команда создаст в текущей директории файл Brewfile со всем, что у вас установлено.

Создаём Brewfile вручную (рекомендуется):
Создайте текстовый файл с именем Brewfile и опишите в нём всё, что вам нужно. Это даёт чистую и осознанную конфигурацию.

Ruby

# Добавляем сторонний репозиторий (tap)
tap "homebrew/cask-fonts"

# CLI-утилиты (formulae)
brew "git"
brew "htop"
brew "wget"
brew "tldr"

# GUI-приложения (casks)
cask "visual-studio-code"
cask "iterm2"
cask "docker"

# Шрифты для терминала/редактора
cask "font-fira-code-nerd-font"

Разворачиваем на новой машине:
Скопируйте ваш Brewfile на новый Mac (например, через Git) и выполните:

Bash

brew bundle install

Homebrew сам установит всё, что перечислено в файле.

Взгляд архитектора:
Brewfile — это Конфигурация как Код (Configuration as Code) для вашей рабочей станции.

Воспроизводимость: Гарантирует, что на любой вашей машине будет одинаковый набор инструментов.

Версионирование: Храните его в Git. Теперь у вас есть история изменений и резервная копия вашей идеальной среды.

Автоматизация: Ускоряет настройку нового компьютера с нескольких часов до нескольких минут.

#macos #homebrew #automation #iac #гайд
🔥2
Linux & macOS: cat на стероидах. Знакомство с bat
Мы постоянно просматриваем файлы в терминале: скрипты, конфиги, логи. Стандартная утилита cat справляется, но выдаёт просто стену текста. bat — это её современная замена, которая делает то же самое, но красиво и удобно.
bat — это cat с подсветкой синтаксиса, нумерацией строк, интеграцией с Git и автоматическим пейджером.
Ключевые фичи:
Подсветка синтаксиса: Просто напишите bat my_script.py или bat docker-compose.yml, и код будет подсвечен как в вашей любимой IDE.
Интеграция с Git: bat показывает изменения в файле прямо в терминале, отмечая добавленные и изменённые строки.
Автоматический пейджер: Если файл не помещается на один экран, bat автоматически передаст вывод в less, так что вы сразу можете использовать поиск и навигацию.
Отображение непечатаемых символов: Помогает при отладке.
Установка:


# Ubuntu/Debian (может называться batcat)
sudo apt install bat
#
macOS
brew install bat


На Ubuntu/Debian, возможно, придется использовать команду batcat или создать симлинк ln -s /usr/bin/batcat ~/.local/bin/bat.
Взгляд архитектора:
Это не просто про "красивости". Удобное представление информации снижает когнитивную нагрузку. Когда вы можете мгновенно отличить комментарий от переменной в конфиге, вы работаете быстрее и делаете меньше ошибок. bat — маленький инструмент с огромным влиянием на ежедневную продуктивность.
#linux #macos #cli #bat #productivity #команды
Linux & macOS: Ваш Ctrl+R — из прошлого века. Встречайте fzf

Сколько раз в день вы судорожно ищете нужную команду в истории?
history | grep ... — это медленно и неудобно.

fzf (fuzzy finder) — это не просто утилита, это новый способ работы в терминале. Она позволяет мгновенно, в интерактивном режиме, находить что угодно: файлы, команды, процессы.

Как это меняет всё:

Интерактивный Ctrl+R: fzf полностью заменяет стандартный поиск по истории. Вы нажимаете Ctrl+R и получаете удобный интерактивный список, который фильтруется по мере набора.

Убийца процессов: Забудьте ps aux | grep ... и kill <PID>.

Bash
# Интерактивно выбираем процесс (или несколько) и убиваем
ps -ef | fzf -m | awk '{print $2}' | xargs kill -9

Мгновенный поиск файлов: fzf интегрируется с find и ag для молниеносного поиска.

Bash
# Нажмите Alt+C (или Ctrl+T), чтобы найти файл/папку и сразу перейти
fzf

Установка: brew install fzf (macOS) или sudo apt install fzf (Linux).

Взгляд архитектора: Эффективность инженера — это его главный актив. fzf — это инструмент-мультипликатор, который экономит секунды на каждом действии, что складывается в часы к концу недели. Архитектор не просто знает команды, он оптимизирует саму среду работы, убирая любое "трение".

#linux #macos #cli #fzf #productivity #команды #musthave
Fleet Security: Хватит гадать. Используем osquery

У вас 200 машин (Windows, Linux, macOS). Как быстро ответить на эти вопросы:
"На каких серверах запущен sshd не из стандартного /usr/sbin/sshd?"
"На каких машинах macOS не включен FileVault?"
"У каких пользователей Windows в AppData лежат .exe файлы?"
Бегать по машинам или писать 100500 скриптов — это путь админа. osquery — это путь архитектора.

osquery (от Facebook/Meta) — это open-source инструмент, который представляет вашу операционную систему как базу данных, к которой можно делать SQL-запросы.

Примеры запросов:
Найти всех пользователей с bash на Linux-машинах:

SQL
SELECT * FROM users WHERE shell = '/bin/bash';

Найти подозрительные открытые порты (кто слушает не 0.0.0.0 или 127.0.0.1):

SQL
SELECT pid, port, address FROM listening_ports WHERE address NOT IN ('0.0.0.0', '127.0.0.1', '::');

Проверить, включен ли FileVault на macOS:

SQL
SELECT * FROM disk_encryption WHERE encrypted = 0;

Взгляд архитектора: osquery — это основа для непрерывного аудита (Continuous Auditing) и Threat Hunting. Вы больше не "сканируете" хосты, вы "опрашиваете" их в реальном времени. Подключив osquery-агенты к централизованному серверу (fleet-менеджеру), вы получаете полный, актуальный срез безопасности всей вашей инфраструктуры, независимо от ОС.

#linux #macos #windows #security #osquery #sre #architect #гайд
macOS (Security): Аудит LaunchAgents/Daemons на «подозрительные» пути и неподписанные бинарники

Боль: Пользователь жалуется на фантомные процессы. В ~/Library/LaunchAgents лежит «что-то», что перезапускается после удаления.
Реакция админа: «Снесём руками».
Реакция архитектора: «Сначала найдём источник автозапуска и оценим риски.»

Скрипт (Bash). Ищет .plist с исполняемыми из пользовательских/временных директорий, помеченные quarantine или неподписанные бинарники.

#!/usr/bin/env bash
# --- macOS LaunchAgents/Daemons Audit ---
set -euo pipefail

echo "--- Начинаю аудит LaunchAgents/Daemons ---"

dirs=( "$HOME/Library/LaunchAgents" "/Library/LaunchAgents" "/Library/LaunchDaemons" )

for d in "${dirs[@]}"; do
[ -d "$d" ] || continue
while IFS= read -r -d '' plist; do
program=$(/usr/libexec/PlistBuddy -c 'Print :Program' "$plist" 2>/dev/null || true)
if [ -z "${program:-}" ]; then
program=$(/usr/libexec/PlistBuddy -c 'Print :ProgramArguments:0' "$plist" 2>/dev/null || true)
fi

suspicious=""
unsigned=""
quarantine=""

if [ -n "${program:-}" ]; then
dir=$(dirname "$program")
# Подозрительные пути: пользовательские/временные директории
if [[ "$program" =~ ^/Users/ ]] || [[ "$program" =~ ^/tmp/ ]] || [[ "$program" =~ ^/private/tmp/ ]]; then
if [ -w "$dir" ]; then suspicious="user-writable"; fi
fi
# quarantine-атрибут
if [ -f "$program" ] && xattr -p com.apple.quarantine "$program" >/dev/null 2>&1; then
quarantine="quarantined"
fi
# неподписанность
if [ -f "$program" ]; then
if ! codesign -dv "$program" >/dev/null 2>&1; then unsigned="unsigned"; fi
fi
fi

if [ -n "$suspicious$quarantine$unsigned" ]; then
echo "plist: $plist"
echo " Program: ${program:-<none>}"
echo " Flags: $suspicious $quarantine $unsigned"
echo "----------------------------------------"
fi
done < <(find "$d" -name '*.plist' -print0 2>/dev/null)
done

echo "--- Аудит завершен ---"
echo "Рекомендация: бэкапнуть plist и бинарь, затем удалить через launchctl (disable/unload), проверить персистентность."

Взгляд архитектора: Постоянство (persistence) — базовая TTP вредоносов. Мы валидируем автозапуски против критериев доверия пути/подписи/карантина, а не «по чувствам».

#macos #security #incident_response #forensics #bash #скрипты
🔥3