DevOps | Вопросы собесов
5.51K subscribers
33 photos
1.32K links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Как разделять элементы CI и CD в Jenkins?

• CI (Continuous Integration): Включает сборку, тестирование и статический анализ кода. Это выполняется при каждом коммите или пулл-запросе.
• CD (Continuous Deployment/Delivery): Включает развертывание на staging или в продакшн после успешного прохождения всех этапов CI. Для CD используются отдельные пайплайны или этапы в одном пайплайне.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как в docker compose вместо yaml файла использовать json файл?

Docker Compose поддерживает использование JSON-файлов вместо стандартного YAML-файла. Формат JSON полностью совместим с YAML, так как YAML является надмножеством JSON. Для этого достаточно создать JSON-файл с описанием конфигурации контейнеров и передать его с помощью опции -f.

🚩Шаги по использованию

🟠Создайте JSON-файл конфигурации
Файл должен содержать описание сервисов в формате JSON. Например, вместо YAML
version: "3.9"
services:
web:
image: nginx
ports:
- "80:80"


В формате JSON будет так
{
"version": "3.9",
"services": {
"web": {
"image": "nginx",
"ports": ["80:80"]
}
}
}


🟠Запустите Docker Compose с этим файлом
Используйте флаг -f, чтобы указать Docker Compose, какой файл использовать
docker-compose -f docker-compose.json up


🟠Проверка работы
Вы можете проверить статус контейнеров, как обычно:
docker-compose -f docker-compose.json ps


🚩Почему использовать JSON?

🟠Совместимость
JSON часто используется в API, CI/CD-пайплайнах и других инструментах, которые могут генерировать конфигурации автоматически.
🟠Простота обработки
JSON легко парсить программно, что может быть полезно в скриптах и интеграциях.
🟠Стандартизация
Некоторые команды и проекты могут предпочитать JSON как более строгий и распространенный формат.

🚩Пример использования

1⃣Создайте файл docker-compose.json
{
"version": "3.8",
"services": {
"app": {
"image": "python:3.9",
"volumes": ["./app:/app"],
"working_dir": "/app",
"command": "python app.py"
}
}
}


2⃣Запустите
docker-compose -f docker-compose.json up


Ставь 👍 и забирай 📚 Базу знаний
🤔 Везде ли нужен IaC и почему?

Не везде, но:
- Нужен в средах, где важны повторяемость, масштабируемость, DevOps;
- Для одиночных серверов или стартапов IaC может быть избыточен;
- Он экономит время на масштабировании, развёртывании, восстановлении после сбоя


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥2👍1
🤔 Как оптимизировать имедж?

Оптимизация Docker-имеджа (или другого контейнерного имеджа) необходима для уменьшения его размера, ускорения сборки, повышения безопасности и повышения производительности контейнеров.

🟠Используйте минимальную базовую ОС
Почему: Базовый образ сильно влияет на размер. Например, alpine занимает ~5 МБ, в то время как ubuntu или debian могут превышать сотни мегабайт.
Как: Замените базовый образ:
FROM alpine:latest


🟠Удаляйте ненужные файлы
Почему: Временные файлы, кэш или артефакты сборки занимают место.
Как: Добавьте команды для очистки временных данных:
RUN apt-get update && apt-get install -y curl \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*


🟠Используйте многоэтапную сборку (multi-stage builds)
Почему: Стадия сборки может содержать инструменты, которые не нужны в финальном образе.
Как
# Стадия сборки
FROM golang:1.20 as builder
WORKDIR /app
COPY . .
RUN go build -o app .

# Финальный образ
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/app .
CMD ["./app"]


🟠Минимизируйте количество слоёв
Почему: Каждый RUN, COPY, ADD создаёт новый слой. Слишком много слоёв увеличивают размер образа.
Как: Объединяйте команды:
RUN apt-get update && apt-get install -y curl wget \
&& apt-get clean && rm -rf /var/lib/apt/lists/*


🟠Не сохраняйте секреты
Почему: Переменные окружения с паролями или токенами могут быть случайно унаследованы.
Как: Используйте Docker secrets или .env-файлы и исключайте их из COPY
ENV APP_ENV=production


🟠Кэшируйте зависимости
Почему: Частое скачивание зависимостей замедляет сборку.
Как: Переносите команды загрузки зависимостей ближе к началу:
COPY go.mod go.sum ./
RUN go mod download


🟠Проверяйте зависимости
Почему: Устаревшие или ненужные зависимости увеличивают размер и могут содержать уязвимости.
Как: Используйте сканеры вроде Trivy или Docker Scan для анализа.
trivy image myimage:latest


🚩Пример полного Dockerfile

# 1. Используем минимальный базовый образ
FROM node:20-alpine as builder

# 2. Устанавливаем зависимости
WORKDIR /app
COPY package*.json ./
RUN npm install

# 3. Копируем код
COPY . .

# 4. Собираем проект
RUN npm run build

# Финальный минимальный образ
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]


Ставь 👍 и забирай 📚 Базу знаний
🤔 Как организовать кластеры?

Зависит от целей, но базово:
- Dev / Staging / Prod — разделение по средам.
- По географии — например, кластер в каждом регионе.
- По продуктам или командам — если изоляция важна.
- Мультикластер — если нужно федеративное управление или глобальный сервис discovery.
Важно: централизованное управление (ArgoCD, Flux), единая CI/CD-платформа, policy enforcement (OPA Gatekeeper, Kyverno).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊4👍1
🤔 Что внутри директории Linux: /proc?

Это виртуальная файловая система, предоставляющая доступ к информации о процессах и системе в реальном времени. Она не занимает место на диске, так как данные в ней формируются ядром Linux динамически. Эта файловая система называется procfs (процессная файловая система).

🚩Основное назначение `/proc`

Предоставляет информацию о запущенных процессах, ресурсах системы и конфигурации ядра. Позволяет взаимодействовать с ядром, изменять параметры системы и получать данные о состоянии процессов.

🚩Ключевые элементы внутри `/proc`

🟠Каталоги с идентификаторами процессов (`/proc/[PID]`)
Каждый процесс в системе имеет каталог в /proc, название которого соответствует его PID (Process ID). В этих каталогах содержится информация о конкретном процессе:
/proc/[PID]/cmdline: Команда, запустившая процесс.
/proc/[PID]/cwd: Символическая ссылка на текущую рабочую директорию процесса.
/proc/[PID]/exe: Символическая ссылка на исполняемый файл процесса.
/proc/[PID]/fd: Директория с открытыми файловыми дескрипторами.
/proc/[PID]/status: Детализированная информация о состоянии процесса (UID, GID, память и т.д.).

🟠Файлы системы
/proc/cpuinfo
Информация о процессоре (модель, частота, количество ядер).
cat /proc/cpuinfo


/proc/meminfo
Информация о памяти (доступная память, кэш, использованная память).
cat /proc/meminfo


/proc/diskstats: Статистика ввода-вывода для дисков.
/proc/uptime: Время работы системы с момента загрузки.
/proc/loadavg: Средняя нагрузка на систему за последние 1, 5 и 15 минут.

🟠Конфигурационные файлы ядра
/proc/sys: Содержит настраиваемые параметры ядра. Например, можно изменить значение максимального количества открытых файлов:
echo 100000 > /proc/sys/fs/file-max


Некоторые популярные настройки
/proc/sys/net/ipv4/ip_forward: Управление пересылкой IPv4-пакетов.
/proc/sys/kernel/pid_max: Максимальный PID, который может быть назначен процессу.

🟠Сетевые интерфейсы
/proc/net:
Информация о сетевых соединениях и интерфейсах.
Примеры:
/proc/net/dev: Статистика сетевых интерфейсов.
/proc/net/tcp: Состояние TCP-соединений.

🟠Информация об устройствах
/proc/devices: Список всех зарегистрированных устройств (символьных и блочных).
/proc/partitions: Информация о разделах жесткого диска.

Ставь 👍 и забирай 📚 Базу знаний
💊2🔥1
🤔 Как написать shell-скрипт, чтобы он всегда выполнялся от рута?

В начале скрипта делается проверка пользователя, и если это не root, скрипт завершает выполнение или перезапускает себя с sudo. Это предотвращает ошибки доступа к системным файлам.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Что касается безопасности где хранить переменные секреты?

Хранение секретных переменных, таких как пароли, ключи API, токены доступа и прочие конфиденциальные данные, требует особого подхода для обеспечения безопасности. Ниже описаны рекомендуемые методы и инструменты для безопасного хранения секретных переменных в различных средах разработки и производства.

🟠Использование специализированных хранилищ секретов
HashiCorp Vault:
Это инструмент для управления секретами и защиты данных. Он позволяет централизованно хранить, доступ к которым строго контролируется, и динамически создавать секреты.
Преимущества: Поддержка динамических секретов, интеграция с большинством сред и технологий, высокий уровень безопасности.
AWS Secrets Manager и Azure Key Vault:
Эти облачные сервисы предоставляют управляемые решения для безопасного хранения и управления доступом к секретным данным, включая автоматическое обновление секретов.
Преимущества: Интеграция с облачными сервисами, упрощение ротации секретов, мониторинг и логирование доступа.

🟠Инкапсуляция секретов в среде выполнения
Docker Secrets и Kubernetes Secrets:
Предлагают встроенные механизмы для безопасного хранения секретов, которые используются контейнерами во время выполнения.
Преимущества: Локальная интеграция с системами оркестрации контейнеров, базовое шифрование на диске и управление доступом.

🟠Секреты в контролируемом CI/CD
Платформы CI/CD, такие как GitLab и GitHub, предоставляют возможности для безопасного хранения переменных среды и секретов, которые могут быть использованы в процессах автоматизации без разглашения.
Преимущества: Простота использования, интеграция с процессами разработки, защита от внешнего доступа.

🟠Шифрование секретов
Инструменты шифрования: Использование инструментов, таких как GnuPG (GPG), для шифрования секретов перед их сохранением в системах контроля версий или конфигурационных файлах.
Преимущества: Высокий уровень безопасности, контроль доступа к секретам на уровне пользователя.

Ставь 👍 и забирай 📚 Базу знаний
🤔 Что такое blackhole?

Blackhole (чёрная дыра) — это сетевая конфигурация, при которой пакеты сбрасываются, не уведомляя отправителя. Применяется для отказа от трафика, DDoS-защиты или маршрутизации нежелательного трафика.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥2
🤔 Как определить опции запуска пайплайна при редактировании определенных ресурсов в гите?

При работе с CI/CD (GitHub Actions, GitLab CI, Jenkins) часто нужно запускать пайплайн только при изменении определенных файлов. Это помогает оптимизировать сборку, экономить ресурсы и время.

🚩В GitHub Actions (on: push, paths)

В GitHub Actions можно указать файлы, изменения в которых запустят пайплайн.
name: Infra Pipeline
on:
push:
paths:
- 'infra/**'
- 'k8s/**'
pull_request:
paths:
- 'infra/**'
- 'k8s/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Deploy Infrastructure
run: ./deploy.sh


🚩В GitLab CI/CD (only: changes)

В GitLab можно настроить запуск пайплайна по изменению файлов с помощью only: changes.
stages:
- deploy

terraform:
stage: deploy
script:
- terraform apply -auto-approve
only:
changes:
- terraform/**


🚩В Jenkins (when { changes })

В Jenkins Declarative Pipeline можно использовать when { changes } для проверки измененных файлов.
pipeline {
agent any
stages {
stage('Deploy Ansible') {
when { changes path: 'ansible/**' }
steps {
sh './deploy_ansible.sh'
}
}
stage('Deploy Helm') {
when { changes path: 'helm/**' }
steps {
sh './deploy_helm.sh'
}
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
🤔 Кластер БД висит, запросы копятся, но другие выполняются быстро. Что происходит?

Скорее всего:
- Приложение удерживает блокировку, из-за чего остальные запросы висят в очереди.
- Блокировки возникают при долгих UPDATE, INSERT, TRANSACTION, особенно без COMMIT.
Что делать:
1. Проверить активные сессии и блокировки (pg_stat_activity — для PostgreSQL).
2. Выяснить какой запрос держит блокировку.
3. Убить зависшие транзакции или перезапустить зависший компонент.
4. Настроить таймауты транзакций и контроль количества соединений от приложения.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊1
🤔 Как бы вы настроили уведомления для сервисов которые находятся без интернета полностью локализованы закрыты от всего извне?

Для настройки уведомлений в изолированной сети без доступа к интернету используйте локальные инструменты и системы. Основные методы включают локальные почтовые серверы, мессенджеры и системы управления инцидентами.

🚩Локальный почтовый сервер (SMTP)

1⃣Установка
sudo apt update
sudo apt install postfix


2⃣Настройка
Отредактируйте /etc/postfix/main.cf
myhostname = local.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination


3⃣Перезапуск Postfix
sudo systemctl restart postfix   


4⃣Проверка
echo "Test email" | mail -s "Test Subject" user@example.com


🚩Локальный мессенджер (Mattermost)

1⃣Установка Mattermost
Следуйте [документации](https://docs.mattermost.com/install/self-managed-install.html).

2⃣Настройка
Создайте каналы и пользователей.

3⃣Интеграция с мониторингом
Используйте веб-хуки Mattermost для уведомлений.

🚩Системы управления инцидентами (Zabbix)

1⃣Установка Zabbix
Следуйте [документации](https://www.zabbix.com/download).

2⃣Настройка
Настройте хосты, триггеры и действия.

3⃣Настройка уведомлений
Медиатипы: Настройте Email и SMS. Пользователи: Создайте пользователей и уведомления.

🚩Локальный стек мониторинга (Prometheus, Alertmanager)

1⃣Установка Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
tar xvf prometheus-2.26.0.linux-amd64.tar.gz
cd prometheus-2.26.0.linux-amd64
./prometheus --config.file=prometheus.yml


2⃣Установка Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar xvf alertmanager-0.21.0.linux-amd64.tar.gz
cd alertmanager-0.21.0.linux-amd64
./alertmanager --config.file=alertmanager.yml


3⃣Настройка алертинга в Prometheus
groups:
- name: example-alerts
rules:
- alert: HighCPUUsage
expr: avg_over_time(node_cpu_seconds_total{mode="idle"}[5m]) < 20
for: 2m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
description: "CPU usage is above 80% for more than 2 minutes"


4⃣Настройка Alertmanager
global:
smtp_smarthost: 'localhost:25'
smtp_from: 'alertmanager@local.example.com'
route:
receiver: 'email-notifications'
receivers:
- name: 'email-notifications'
email_configs:
- to: 'admin@local.example.com'
send_resolved: true


Ставь 👍 и забирай 📚 Базу знаний
🤔 Где бы хранил tfstate, если много разработчиков?

При совместной работе tfstate лучше хранить в удалённом бекенде, чтобы:
- Избежать конфликтов и потерь данных.
- Обеспечить блокировку (state locking) и доступ из разных точек.
Наиболее популярные варианты:
- Amazon S3 + DynamoDB (для блокировок)
- Terraform Cloud / Enterprise
- Google Cloud Storage (GCS)
- Azure Blob Storage


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔1
🤔 Что такое squash в Docker?

В Docker термин "squash" (от англ. "раздавить", "сплющить") относится к процессу объединения нескольких слоев образа Docker в один. Это делается для уменьшения размера итогового образа и оптимизации хранения.

🚩Зачем нужен `squash`?

Docker-образы состоят из последовательности слоев. Каждый слой создается на основе команд в Dockerfile. Например, если ваш Dockerfile выглядит так:
FROM ubuntu:latest
RUN apt update && apt install -y nginx
RUN echo "Hello, World!" > /usr/share/nginx/html/index.html


🚩Как использовать `squash`?

В Docker squash можно выполнить с помощью флага --squash при сборке образа:
docker build --squash -t my-squashed-image .


Для включения экспериментального режима:
1. Открываем /etc/docker/daemon.json (или создаем, если его нет).
2. Добавляем строку "experimental": true.
3. Перезапускаем Docker:
systemctl restart docker


🚩Пример с `squash`

Без --squash
docker history my-image


С --squash
docker build --squash -t my-squashed-image .
docker history my-squashed-image


Ставь 👍 и забирай 📚 Базу знаний
💊1
🤔 Как работать с VictoriaMetrics?

VictoriaMetrics — это высокопроизводительная time-series база данных. Чтобы с ней работать:
- Писать метрики можно через:
- Prometheus Remote Write API (/api/v1/write),
- vmagent (аналог prometheus с проксированием),
- вручную через HTTP POST.
- Читать метрики:
- по PromQL (совместим с Prometheus),
- через vmui (веб-интерфейс),
- или Grafana + Prometheus data source.
- Развёртывание:
- может быть один бинарник (для single-node),
- или кластерная версия (vmselect, vminsert, vmstorage).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какие есть метрики для измерения качества системы?

Для измерения качества системы (особенно в DevOps, SRE и разработке) используют различные метрики производительности, надежности и доступности.

🚩Основные метрики качества системы

🟠Метрики "Четырёх ключевых показателей" (DORA)
Эти метрики помогают оценить эффективность процессов DevOps:
Lead Time for Changes (Время доставки изменений) — время от написания кода до его выхода в прод.
Deployment Frequency (Частота развертываний) — как часто изменения попадают в прод.
Mean Time to Restore (MTTR) (Среднее время восстановления) — как быстро исправляются инциденты.
Change Failure Rate (Процент неудачных изменений) — доля развертываний, вызывающих сбои.

🟠Метрики надежности и доступности (SRE)
Эти метрики помогают измерять надежность системы:
SLA (Service Level Agreement) — договорное время доступности (например, 99.9%).
SLO (Service Level Objective) — целевое значение доступности (например, 99.95%).
SLI (Service Level Indicator) — фактические измеренные показатели (например, 99.93%).
Error Rate — процент ошибок в системе (HTTP 500, таймауты и т. д.).
Latency (Задержка) — время ответа системы на запросы.

🟠Метрики производительности
Они показывают, насколько быстро работает система:
CPU Utilization — загрузка процессора.
Memory Usage — использование оперативной памяти.
Disk I/O — скорость чтения/записи на диск.
Network Throughput — пропускная способность сети.
Response Time — время отклика системы.

🟠Метрики пользовательского опыта
Оценивают удобство работы пользователей с системой:
Apdex (Application Performance Index) — индекс удовлетворенности пользователей (0–1).
TTFB (Time to First Byte) — время до получения первого байта ответа от сервера.
Page Load Time — время полной загрузки страницы.
Bounce Rate — процент пользователей, покинувших сайт без взаимодействия.

Ставь 👍 и забирай 📚 Базу знаний
🤔1
🤔 Как хранить Helm шаблоны в GitLab?

- В отдельном репозитории (infrastructure/helm-charts).
- Или внутри проекта в папке helm/, charts/.
- Можно сделать GitLab Pages Registry:
- упаковывать чарты (helm package)
- публиковать (helm repo index . + pages)


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как мы можем с помощью cloudfront сохранить бюджет на использование сервисов?

Amazon CloudFront — это CDN (Content Delivery Network), которая помогает оптимизировать затраты на трафик и нагрузку на серверы. Использование CloudFront позволяет экономить бюджет на AWS-сервисах следующими способами:

🟠Кеширование контента (уменьшение нагрузки на бэкенд)
CloudFront кэширует статический и динамический контент, что снижает количество запросов к вашим основным серверам (например, EC2, S3, API Gateway, Lambda).
Меньше запросов к S3 (меньше операций GET, а они платные).
Меньше запросов к API Gateway и Lambda (так как CloudFront может кешировать ответы API).
Экономия на EC2 и RDS, так как нагрузка перераспределяется.

🟠Использование бесплатного трафика между CloudFront и S3
Когда CloudFront забирает файлы из S3 в том же регионе, за исходящий трафик из S3 не взимается плата. Исходящий трафик из S3 в интернет стоит ≈ $0.09 за ГБ. Исходящий трафик из CloudFront в интернет дешевле (например, первые 1 ТБ в месяц — бесплатно).

🟠Снижение стоимости глобального трафика
Если у вас клиенты в разных странах, CloudFront дешевле, чем стандартный AWS-трафик. Исходящий трафик из CloudFront в интернет в среднем на 30-50% дешевле, чем прямой выход из EC2 или S3. AWS часто снижает цены на CloudFront трафик в рамках программ оптимизации.

🟠Фильтрация ненужного трафика (ботов, DDoS, парсеров)
CloudFront позволяет использовать AWS WAF (Web Application Firewall) для блокировки вредоносных запросов. Меньше запросов к бэкенду (EC2, API Gateway, Lambda). Защита от DDoS (AWS Shield Standard бесплатен для CloudFront).

🟠Кеширование динамического контента
CloudFront поддерживает TTL (Time-to-Live) для кэширования даже динамических API-ответов. Вместо запроса к API Gateway/Lambda, CloudFront может вернуть кэшированный ответ. Можно настроить "Stale While Revalidate" — клиент получает устаревший контент, пока идет обновление.

🟠Гибкое управление ценой через региональные edge-локации
CloudFront позволяет управлять ценами, ограничивая определенные регионы. Можно исключить дорогие регионы (например, Южную Америку, где трафик дороже). Можно использовать AWS Origin Shield для дополнительного кеширования между регионами.

🟠Использование CloudFront Functions вместо AWS Lambda
CloudFront поддерживает CloudFront Functions, которые выполняются прямо на edge-узлах и дешевле, чем Lambda@Edge. CloudFront Functions работают быстрее и стоят $0.10 за миллион запросов. Lambda@Edge стоит $0.60 за миллион запросов + плата за выполнение.

Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Что нужно сделать, чтобы использовать любую питон-библиотеку?

- Установить её через pip install имя_пакета.
- Лучше — в виртуальной среде:
- python -m venv venv && source venv/bin/activate && pip install


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊6
🤔 Где хранятся данные о группах которые существуют в системе?

В Linux информация о группах пользователей хранится в файле:
/etc/group — основной файл, содержащий список всех групп системы.

🚩Как посмотреть список групп?

Вывести содержимое файла /etc/group
cat /etc/group


Формат строк в файле
имя_группы:x:GID:пользователи


Пример
root:x:0:
sudo:x:27:alice,bob
developers:x:1001:john,mary


Найти группу по имени
grep '^sudo:' /etc/group


Выведет
sudo:x:27:alice,bob


Узнать, в каких группах состоит пользователь
groups alice


или
id -Gn alice


Выведет
alice sudo developers


🚩Где ещё хранятся группы?

🟠Файл `/etc/gshadow`
хранит пароли групп
Если у группы есть пароль (редкость), он хранится здесь.
Формат:
  имя_группы:пароль:GID:админы_группы

Пример:
sudo:!:27:
developers:!:1001:john


Посмотреть содержимое
sudo cat /etc/gshadow


🟠LDAP или Active Directory (если система подключена к домену)
Если используется корпоративный домен, данные о группах могут храниться в LDAP или Active Directory.
getent group


Ставь 👍 и забирай 📚 Базу знаний
🤔 Что такое IaaS?

Infrastructure as a Service — модель, в которой пользователю предоставляются виртуальные машины, диски, сети и прочее, а он сам управляет ОС и ПО. Пример: AWS EC2, Google Compute Engine.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний