Админские угодья
1.46K subscribers
446 photos
40 videos
219 links
Всё для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Shell скрипт для управления Linux- пользователями

Функциональные возможности

Создание пользователей
Просмотр списка существующих пользователей
Сброс пароля для существующих пользователей
Блокировка / Разблокировка пользовтеля
Просмотр всех заблокированных пользователей
Создание резервной копии домашнего каталога пользователя
Генерирование SSH ключей для пользователя
Повышение пользователя до админа и обратно
Удаление пользователя
Запись всех действий в журнал actions.log

Резервные копии
Скрипт создает каталог резервных копий в папке скрипта и создает архив tar.gz с именем, содержащим - имя пользователя и текущую дату

Генерация SSH ключа
Для генерации используется ssh-keygen, в результате будут отображены сведения о том, куда был сохранен ключ и отображено содержимое публичного ключа:


https://github.com/m0zgen/user-manager
1
Bash. Проверки файлов
Kоманды позволяют проверять различные условия, касающиеся файлов

-d file # Проверяет, существует ли файл, и является ли он директорией.
-e file # Проверяет, существует ли файл.
-f file # Проверяет, существует ли файл, и является ли он файлом.
-r file # Проверяет, существует ли файл, и доступен ли он для чтения.
-s file # Проверяет, существует ли файл, и не является ли он пустым.
-w file # Проверяет, существует ли файл, и доступен ли он для записи.
-x file # Проверяет, существует ли файл, и является ли он исполняемым.
file1 -nt file2 # Проверяет, новее ли file1, чем file2.
file1 -ot file2 # Проверяет, старше ли file1, чем file2.
-O file # Проверяет, существует ли файл, и является ли его владельцем текущий пользователь.
-G file # Проверяет, существует ли файл, и соответствует ли его идентификатор группы идентификатору группы текущего пользователя.

#!/bin/bash

mydir=/home/likegeeks

if [ -d $mydir ] # если файл сущетсвует и он является директорией
then
echo "The $mydir directory exists" # выводим сообщение
cd $mydir # переходим в него
ls # отображаем содержимое
else # ИНАЧЕ
echo "The $mydir directory does not exist"
fi
2
Шпаргалка по часто используемым командам systemctl

1. Посмотреть статус службы. Покажет статус службы на примере сети network
systemctl status network

2. Запустить сервис. Запустит сервис баз данных на примере mysql
systemctl start mysql

3. Остановить службу. Остановит сервис времени ntpd
systemctl stop ntpd

4. Перезапустить службу. Перезапустит веб-сервер nginx
systemctl restart nginx

5. Включить автозапуск службы. Разрешит автозапуск веб-сервера apache
systemctl enable apache

6. Отключить автозапуск службы. Запретит автозапуск брандмауэра firewalld
systemctl disable firewalld


7. Выполнить команду на удаленной системе. Остановит cron на компьютере с IP-адресом 192.168.0.15, подключившись под учетной записью root
systemctl --host [email protected] stop cron

8. Перезагрузить сервер. Перезагрузит локальный сервер
systemctl reboot

9. Проверка работы сервиса. Выполняется с помощью опции is-active. В данном примере мы проверим работу службы docker.
systemctl is-active docker

а) Если сервис запущен, мы увидим:
active

б) Если не запущен:
failed

... или:
inactive

в) Если такого сервиса нет в системе:
unknown

... или:
inactive

Если сервис не работает или его нет в системе, команда вернет код ошибки, таким образом конструкция:
systemctl is-active docker && docker run hello-world
... приведет к выполнению команды docker run hello-world только в том случае, если сервис docker работает.
👍1
Утилиты на PowerShell для системных администраторов

Работая на первой линии тех.поддержки, я часто сталкивался с рутиной, особенно очень хотелось минимизировать подключение к рабочему столу пользователей для сбора информации и как-то автоматизировать этот процесс, что привело меня к осваиванию языка PowerShell и написанию скриптов, которые в последствии оформились в самостоятельные программы. Некоторые из них я решил выложить на GitHub, возможно для кого-то они будут полезны.

https://habr.com/ru/articles/799463/

https://github.com/Sync1er/ChernigovEugeniyUtilities
3
Bash: Удаление старых логов автоматически


#!/bin/bash

# Удалить логи старше 7 дней в указанной директории
LOG_DIR="/var/log/myapp"
find "$LOG_DIR" -type f -name "*.log" -mtime +7 -delete


📌 Расшифровка:

* find — ищем файлы
* -type f — только файлы
* -name "*.log" — с расширением .log
* -mtime +7 — старше 7 дней
* -delete — удаляем

📌 Можно повесить этот скрипт на cron, чтобы запускался каждый день:


# Открываем планировщик
crontab -e

# Добавляем строчку (запуск в 3:00 ночи)
0 3 * * * /path/to/script.sh
2
This media is not supported in your browser
VIEW IN TELEGRAM
Winapps – проект, что позволяет запускать приложения Windows, такие как Microsoft Office в Linux (Ubuntu) и GNOME, как если бы они были частью собственной ОС, включая интеграцию с Nautilus

https://github.com/Fmstrat/winapps
3👍1
find в Linux как инструмент для администрирования

find — утилита поиска файлов по имени и другим свойствам, используемая в UNIX‐подобных операционных системах. С лохматых тысячелетий есть и поддерживаться почти всеми из них.

Базовый синтаксис ключей

-name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки. Опция -name различает прописные и строчные буквы; чтобы использовать поиск без этих различий, воспользуйтесь опцией -iname;
-type — тип искомого: f=файл, d=каталог, l=ссылка (link), p=канал (pipe), s=сокет;
-user — владелец: имя пользователя или UID;
-group — владелец: группа пользователя или GID;
-perm — указываются права доступа;
-size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом);
-atime — время последнего обращения к файлу (в днях);
-amin — время последнего обращения к файлу (в минутах);
-ctime — время последнего изменения владельца или прав доступа к файлу (в днях);
-cmin — время последнего изменения владельца или прав доступа к файлу (в минутах);
-mtime — время последнего изменения файла (в днях);
-mmin — время последнего изменения файла (в минутах);
-newer другой_файл — искать файлы созданные позже, чем другой_файл;
-delete — удалять найденные файлы;
-ls — генерирует вывод как команда ls -dgils;
-print — показывает на экране найденные файлы;
-print0 — выводит путь к текущему файлу на стандартный вывод, за которым следует символ ASCII NULL (код символа 0);
-exec command {} \; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис;
-ok — перед выполнением команды указанной в -exec, выдаёт запрос;
-depth или -d — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога;
-maxdepth — максимальный уровень вложенности для поиска. «-maxdepth 0» ограничивает поиск текущим каталогом;
-prune — используется, когда вы хотите исключить из поиска определённые каталоги;
-mount или -xdev — не переходить на другие файловые системы;
-regex — искать по имени файла используя регулярные выражения;
-regextype тип — указание типа используемых регулярных выражений;
-P — не разворачивать символические ссылки (поведение по умолчанию);
-L — разворачивать символические ссылки;
-empty — только пустые каталоги.

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

Ищем все файлы, начиная с текущей директории, название которых начинается на iodmin:
find . -name 'iodmin*'

Найти все файлы, начиная с корневой директории, название которых начинается на iodmin:
find / -name 'iodmin*'

Поиск в директориях /usr/local/man и /opt/local/man файлов, название которых начинается на iodmin:
find /usr/local/man /opt/local/man -name 'iodmin*'

Ищем графические файлы, начиная с текущего каталога (см.на кавычки):
find . -type f -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)"

Вывести список файлов (см. на / ) во всей файловой системе, чей размер больше 100 Мб:
find / -size +100M -print

Ищем файлы в указанных каталогах:
find /var/spool/postfix/{deferred,active,maildrop,incoming}/ -type f
2
This media is not supported in your browser
VIEW IN TELEGRAM
Сетевые протоколы

1. HTTP (Hypertext Transfer Protocol):
Веб-коммуникация: Обеспечивает взаимодействие браузера и сервера, подходит для незащищенной передачи данных.

2. HTTPS (Hypertext Transfer Protocol Secure):
Безопасная веб-связь: Обеспечивает конфиденциальность благодаря шифрованию SSL/TLS.

3. FTP (File Transfer Protocol):
Передача файлов: Облегчает обмен файлами между компьютерами, используя отдельные каналы.

4. TCP
(Transmission Control Protocol):
Надежная доставка данных: Обеспечивает упорядоченную и надежную передачу данных с проверкой на ошибки.

5. IP (Internet Protocol):
Управление пакетами данных: Занимается маршрутизацией и адресацией пакетов данных, присваивая уникальные IP-адреса.

6. UDP (User Datagram Protocol):
Быстрая передача данных: Обеспечивает бесконтактную и более быструю передачу данных без функций обеспечения надежности.

7. SMTP (Simple Mail Transfer Protocol):
Отправка электронной почты: Управляет отправкой электронной почты между серверами с помощью архитектуры клиент-сервер.

8. SSH (Secure Shell):
Безопасный удаленный доступ: Обеспечивает безопасный доступ к удаленным устройствам, шифруя связь между клиентом и сервером.

9. IMAP (Internet Message Access Protocol):
Доступ к электронной почте: Позволяет получать доступ и извлекать электронную почту с сервера, сохраняя ее на сервере.
👍3
Как увеличить размер каталога /tmp/

Иногда необходимо увеличить размер каталога, который в свою очередь находится в корневом каталоге системы.
Решить это можно перемонтированием каталога:
# mount -t tmpfs tmpfs /tmp -o size=1024M,mode=1777,remount

Теперь проверим, есть ли у нас каталог в фстабе:
# cat/etc/fstab

Если нет, создаем, если существует то выполняем следующую команду:
# none /tmp tmpfs size=1024M,mode=1777,rw 0 0

Теперь готов каталог/tmp/ с размером, указанным в операторе “size” размером 1024 mb.
2
Чтобы разобраться с правами доступа к файлам в Linux, нам нужно понять, что такое Ownership и Permission.

Ownership

Каждому файлу или каталогу присваивается три типа прав собственности:

🔹Owner: Владелец - это пользователь, создавший файл или каталог.
🔹Group (группа): В группе может быть несколько пользователей. Все пользователи в группе имеют одинаковые разрешения на доступ к файлу или каталогу.
🔹Other: Другие - это пользователи, которые не являются владельцами или членами группы.

Permission

Существует только три типа разрешений для файла или каталога:

▪️ Read (r): Разрешение на чтение позволяет пользователю читать файл.
▪️ Write (w): Разрешение на запись позволяет пользователю изменять содержимое файла.
▪️ Execute (x): Разрешение execute позволяет выполнять файл.
👍32
📌 Краткий курс по созданию сценариев Bash
2👍1
Linux-Commands

Шпаргалка по bash

Файловая система
-Просмотр содержимого папки
-Перемещение по файловой системе
-Создание папок и файлов
-Копирование файлов
-Переименование или перемещение файлов
-Удаление папок и файлов
Алиасы
Разное
Использование переменных
Подстановка команд в переменные
Математические операции
Управляющая конструкция if-then
Управляющая конструкция if-then-else
Конструкция CASE
Циклы
Сравнение чисел
Сравнение строк
Проверки файлов
Операторы

https://github.com/sergeevdm/Linux-Commands
2
Краткая шпаргалка по использованию tmux

Ctr+B, ? Показать все доступные хоткеи
Ctr+B, C Создать окно
Ctr+B, N Следующее окно
Ctr+B, P Предыдущее окно
Ctr+B, [0-9] Перейти к окну с данным номером
Ctr+B, X Закрыть окно
Ctr+B, % Горизонтальное разделение
Ctr+B, " Вертикальное разделение
Ctr+B, стрелочки Переход между разделениями
Ctr+B, запятая Переименовать окно
Ctr+B, W Список всех окон с переключением
Ctr+B, Fn+вверх Скролинг, можно использовать точпад
Ctr+B, $ Переименовать текущую сессию
Ctr+B, D Detach, отсоединиться от сессии

Список доступных сессий можно посмотреть командой:
tmux ls

Подключение к сессии:
tmux attach -t 0


Сессиям можно давать осмысленные имена и запускать в них фоновые задачи:

# создать фоновую сессию
tmux new-session -d -s background-task 'watch date'

# подсоединиться к сессии
tmux attach -t background-task

# прибить сессию
tmux kill-session -t background-task

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

Интересно также, что в отличие от screen, в tmux нет возможности работать с последовательными портами. Но если вы решите полностью переходить на tmux, то для этой задачи можете воспользоваться утилитой cu:

cu -l /dev/tty.usbserial -s 115200
1
Itentis Cloud — облачная платформа, которая работает на вас.
Когда технологии работают без сбоев, вы сосредоточены на развитии бизнеса. Itentis Cloud предлагает безопасную и гибкую инфраструктуру, чтобы вы не тратили время на технические сложности.

🔹 Безопасность как стандарт
Двухфакторная аутентификация (2FA), брандмауэры и шифрование защитят ваши данные

🔹 Полный контроль за секунды
Создавайте VPC, управляйте нагрузкой через балансировщики, автоматизируйте масштабирование. Нужны Kubernetes? Мы всё подготовим за вас.

🔹 Быстрый старт без задержек
Разверните кластер за минуты — быстрее, чем доставка еды. Если что-то пойдет не так, поможем бесплатно или вернем деньги.

🔹 Все инструменты в одном месте
VPC, VNF, IaC (инфраструктура кодом), S3-хранилище и снимки для восстановления системы за секунды.

Почему выбирают нас?
14 дней бесплатного теста + бесплатная миграция данных.
Поддержка 24/7: реальный инженер поможет с настройкой.
Бесплатная миграция: поможем перенести данные.

👉 Переходите на сайт: itentis.cloud
👉 Подписывайтесь на Telegram-канал: t.iss.one/itentis
3👍2
Шпаргалка по часто используемым командам systemctl

1. Посмотреть статус службы. Покажет статус службы на примере сети network
systemctl status network

2. Запустить сервис. Запустит сервис баз данных на примере mysql
systemctl start mysql

3. Остановить службу. Остановит сервис времени ntpd
systemctl stop ntpd

4. Перезапустить службу. Перезапустит веб-сервер nginx
systemctl restart nginx

5. Включить автозапуск службы. Разрешит автозапуск веб-сервера apache
systemctl enable apache

6. Отключить автозапуск службы. Запретит автозапуск брандмауэра firewalld
systemctl disable firewalld


7. Выполнить команду на удаленной системе. Остановит cron на компьютере с IP-адресом 192.168.0.15, подключившись под учетной записью root
systemctl --host [email protected] stop cron

8. Перезагрузить сервер. Перезагрузит локальный сервер
systemctl reboot

9. Проверка работы сервиса. Выполняется с помощью опции is-active. В данном примере мы проверим работу службы docker.
systemctl is-active docker

а) Если сервис запущен, мы увидим:
active

б) Если не запущен:
failed

... или:
inactive

в) Если такого сервиса нет в системе:
unknown

... или:
inactive

Если сервис не работает или его нет в системе, команда вернет код ошибки, таким образом конструкция:
systemctl is-active docker && docker run hello-world
... приведет к выполнению команды docker run hello-world только в том случае, если сервис docker работает.
2
📌 Как работает трансляция сетевых адресов (NAT)
2
📌 Как быстро вычислить утечку памяти в Linux?

Когда система начинает «подтормаживать» без видимой причины — пора заподозрить утечку памяти.

Так можно быстро найти виновника :

1. Проверяем использование памяти:

free -h

Если available стремится к нулю, есть повод копнуть глубже.

2. Сортируем процессы по потреблению RAM:

ps aux --sort=-%mem | head -n 10

Тут видно, кто больше всех ест память.

3. Следим за slab-объектами:

cat /proc/meminfo | grep Slab

Если значение растёт со временем — это сигнал утечки в ядре или драйверах.

4. Используем smem для точной оценки:

smem -r | sort -k 4 -nr | head

smem учитывает shared memory — оценка куда точнее, чем просто ps.

5. Если подозрение на конкретный процесс:
pmap — покажет, что именно грузит память:

pmap -x <PID>


Совет:
Запусти htop, нажми F6, выбери колонку RES, отсортируй. Увидишь — кто на самом деле обжора.
1
📌 Деление сети на подсети: шпаргалка
🔥4🥰21
3 довольно неизвестных команды Docker, которые помогут вам в самых различных ситуациях

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

https://telegra.ph/3-dovolno-neizvestnyh-komandy-Docker-kotorye-pomogut-vam-v-samyh-razlichnyh-situaciyah-09-26
2