Linux для чайника
20.3K subscribers
89 photos
3 files
77 links
Linux
- Разбор утилит / инструментов
- Новости / факты
- Опросы для проверки знаний, навыков
и многое другое.

Только по вопросам сотрудничества: @altmainf

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Поиск файлов с определенными настройками доступа

Команда find в сочетании с флагом -perm позволяет искать файлы на основе их настроек разрешений.

Чтобы найти файлы, у которых есть разрешения на чтение (r), запись (w) и выполнение (x) для владельца:
find /path/to/search -type f -perm -700

Поиск файлов по разрешению и режиму доступа:
find /path/to/search -type f -perm mode

Чтобы найти файлы, у которых нет прав на запись для группы и других:
find /path/to/search -type f ! -perm /go+w
Разрешить команды с помощью sudo только определенной группе пользователей

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


Это более продвинутое решение, которое сисадмин использует в многопользовательской среде. Допустим, вы создаете группу "coders" и разрешаете им запускать команды из каталогов /var/folder и /opt/bin/coders.

Теперь отредактируйте файл sudoer с помощью:
sudo visudo

Добавьте в него следующую строку:
%coders ALL=(ALL:ALL) /var/folder,/opt/bin/coders
Изменение прав доступа командой chmod с помощью чисел.

Чтобы изменить права доступа к файлу, можно воспользоваться командой chmod. В таком случае каждому праву доступа (чтение, запись и выполнение) присваивается номер — r=4, w=2 и x=1 соответственно, то есть для задания прав доступа используются наборы чисел.

Например, чтобы установить полные права доступа для себя как владельца, необходимо определить первое число — 7 (4 + 2 + 1), а затем дать группе и другим пользователям право только на чтение, указав второе и третье числа — 4 (4 + 0 + 0), чтобы в итоге получилось число 744. Любая комбинация прав доступа включает числа от 0 (нет прав доступа) до 7 (полные права доступа).

Примеры того, как изменить права доступа к файлу (с именем some_file) и как это будет выглядеть:

Установим права доступа rwxrwxrwx:
chmod 777 some_file
Установим права доступа rwxr-xr-x:
chmod 755 some_file
Установим права доступа rw-r--r--:
chmod 644 some_file
Установим права доступа ---------:
chmod 000 some_file
Несколько примеров настроек ядра Linux:

/proc/sys/kernel/panic: Этот параметр определяет время задержки перед автоматической перезагрузкой системы после возникновения фатальной ошибки (паники) ядра. Значение в секундах. Например, чтобы установить время задержки в 10 секунд, выполните команду: echo 10 > /proc/sys/kernel/panic

/proc/sys/kernel/sysrq: Этот параметр определяет, разрешены ли команды SysRq (System Request) для ядра Linux. Команды SysRq позволяют выполнять различные действия, такие как перезагрузка системы, синхронизация дисков, отображение информации о системе и т. д. Чтобы включить команды SysRq, выполните команду: echo 1 > /proc/sys/kernel/sysrq

/proc/sys/kernel/sem: Этот параметр определяет количество системных семафоров, которые могут быть использованы процессами. Семафоры используются для синхронизации доступа к общим ресурсам. Значение состоит из трех чисел, разделенных пробелами, представляющих максимальное количество семафоров, максимальное количество семафоров в каждом наборе и максимальное значение для семафоров.

/proc/sys/kernel/shmmax: Этот параметр определяет максимальный размер общей памяти (shared memory), которая может быть выделена процессу. Значение указывается в байтах. Например, чтобы установить максимальный размер общей памяти в 1 гигабайт, выполните команду: echo 1073741824 > /proc/sys/kernel/shmmax

/proc/sys/kernel/threads-max: Этот параметр определяет максимальное количество потоков, которые могут быть созданы в системе. Значение указывает максимальное количество потоков, которые могут быть созданы процессами. Например, чтобы установить максимальное количество потоков в 10000, выполните команду: echo 10000 > /proc/sys/kernel/threads-max

/proc/sys/kernel/panic_on_oops: Этот параметр определяет, должна ли система автоматически перезагружаться после возникновения ошибки ядра (oops). Значение 1 включает автоматическую перезагрузку, а значение 0 отключает ее. Например, чтобы отключить автоматическую перезагрузку, выполните команду: echo 0 > /proc/sys/kernel/panic_on_oops
Допустим, вы хотите засечь сколько времени выполняется определенное действие в вашем Bash скрипте, для этого добавьте там, где нужно начать замер строку:

START=$(date +%s)

А там, где нужно прекратить:

END=$(date +%s)
DIFF=$(( $END - $START ))
DIFF=$(( $DIFF / 60 ))

Переменная DIFF будет содержать время выполнения в минутах. Теперь вы можете вывести ее с помощью echo.
💀 Как работают процессы в Linux и что такое процессы-зомби?

👉 На открытом уроке «Процессы в Linux: от демонов до зомби» 29 июля в 20:00 МСК мы разберём жизненный цикл процессов, отличия демонов от обычных процессов, а также расскажем о зомби и сиротах. Вы узнаете, как управлять процессами и диагностировать их с помощью мощных утилит.

💪 Понимание того, как работают процессы в Linux, — это ключевая компетенция для системного администратора. Научитесь отслеживать состояние процессов, корректно завершать или перезапускать их, а также избегать накопления зомби в системе.

🎁 Присоединяйтесь к вебинару и получите специальное предложение на курс «Administrator Linux. Professional».

👉 Для участия в вебинаре зарегистрируйтесь https://otus.pw/sVcGR/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Анализ и сканирование файлов ELF

Команда scanelf предоставляет широкие возможности для извлечения информации из файлов ELF.

Примеры использования scanelf:
1. Поиск всех ELF файлов, использующих определённую библиотеку:
scanelf -B -n libspecific.so
Эта команда выведет список всех файлов, динамически связанных с libspecific.so.

2. Анализ RPATH и RUNPATH всех ELF файлов в директории:
scanelf -R -l /path/to/directory
Здесь будет произведён поиск и отображение информации о RPATH и RUNPATH для всех ELF файлов в указанной директории.

3. Поиск файлов с неподкачиваемыми секциями :
scanelf -M /path/to/directory
Неподкачиваемые секции относятся к сегментам данных, которые должны оставаться в оперативной памяти во время выполнения программы и не могут быть перемещены в область подкачки (swap). Это особенно важно для кода, который должен быть всегда доступен для быстрого выполнения, без задержек на подкачку из swap-области, например, для драйверов устройств или кода, работающего в режиме реального времени.
Сортировка файлов в каталоге по размеру

Для поиска самых больших файл в каталоге можно воспользоваться комбинацией команд ls и sort:
ls -l | sort -k5,5nr

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

Может быть очень полезно, когда нам нужно почистить место на компьютере.
Как уязвимости в COM-объектах могут быть использованы в атаке на инфраструктуру?

На открытом уроке «COM-объекты в контексте безопасности Windows» мы разберём архитектуру COM-объектов, их роль в системе Windows и как они могут стать точкой входа для вредоносных программ. Углубимся в реальные примеры атак и изучим, как можно защититься от подобных угроз.

Поняв механизмы работы COM-объектов, вы сможете повысить уровень своей защиты и эффективно расследовать инциденты в Windows-средах.

Встречаемся 7 августа в 20:00 МСК! Присоединяйтесь и получите скидку на курс «Пентест. Инструменты и методы проникновения в действии»: https://otus.pw/k1Rq/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Вывести только подкаталоги в каталоге

Чтобы найти все подкаталоги можно воспользоваться одной из самых популярных команд ls:

ls -d */

-d: параметр указывает ls отображать сами каталоги, а не их содержимое.
*/: шаблон, гарантирующий, что в списке будут указаны только каталоги.
Проверить доступ sudo для пользователя

Как узнать, есть ли у пользователя доступ к sudo?

Лучший способ — использовать встроенную функциональность sudo и посмотреть, какой доступ к sudo имеет пользователь:
sudo -l -U user_name

Он покажет, есть ли у пользователя с именем user_name доступ sudo для некоторых команд или для всех команд.

Если у пользователя вообще нет доступа к sudo, вы увидите:
User user_name is not allowed to run sudo on this-that-server.
В Linux имеется набор команд (ifconfig, route, iwconfig и тд.), которые обеспечивают настройки сети. Доступно из пакета net-tools.

И этих команд вполне достаточно, но из-за прогресса в ядре Linux, за последние годы они становятся устаревшими и уступают свое место более мощным и функциональным командам.

Новая альтернатива — команда ip из пакета iproute2util.
 ⁃ Она намного шире по функциональности.
 ⁃ Организованна на двух уровнях: канальный и сетевой.
 ⁃ Выполняет работу всех вышеупомянутых команд из net-tools. 
 ⁃ Использует механизм сокетов netlink, который является гораздо более гибким преемником ioctl для взаимодействия между ядром и пользовательским пространством с использованием rtnetlink.
Команды монтирование файловых систем

mount /dev/hda2 /mnt/hda2 монтирует раздел ‘hda2’ в точку монтирования ‘/mnt/hda2’. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2’

umount /dev/hda2 размонтирует раздел ‘hda2’. Перед выполнением, покиньте ‘/mnt/hda2’

fuser -km /mnt/hda2 принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем

umount -n /mnt/hda2 выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске

mount /dev/cdrom /mnt/cdrom монтировать CD или DVD

mount /dev/hdc /mnt/cdrecorder монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)

mount -o loop file.iso /mnt/cdrom смонтировать ISO-образ

mount -t vfat /dev/hda5 /mnt/hda5 монтировать файловую систему Windows FAT32

mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share монтировать сетевую файловую систему Windows (SMB/CIFS)

mount -o bind /home/user/prg /var/ftp/user «монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно.
Знаете ли вы, что логические ошибки в веб-приложениях могут привести к утечкам данных и финансовым потерям?

💻На открытом уроке 14 августа в 20:00 МСК мы разберем, чем логические уязвимости отличаются от традиционных (SQLi, XSS) и почему они не видны обычным сканерам. Мы изучим реальные кейсы, где ошибки в бизнес-логике приводили к серьёзным последствиям, и расскажем о методах их выявления.

❗️Урок будет полезен разработчикам, security-аналитикам и pentest-инженерам, которые хотят научиться эффективно тестировать и защищать веб-приложения.

👉Посетите вебинар и получите скидку на полный курс «Пентест. Инструменты и методы проникновения в действии»:
https://otus.pw/RvLR/


Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Работа с каталогами 

mkdir <каталог> Создание каталога
cd <каталог> Изменение каталога
ls <каталог> Вывод содержимого каталога
rmdir <каталог> Удаление пустого каталога
rm -r <каталог> Рекурсивное удаление каталога

При указании имени каталога можно использовать следующие символы:

. — означает текущий каталог. Если вы введете команду cat ./file, то она выведет файл file, который находится в текущем каталоге;

.. — родительский каталог. Например, команда cd .. переведет вас на один уровень вверх по дереву файловой системы;

~ — домашний каталог пользователя.
Примеры настройки терминала в Linux

Изменение цветовой схемы терминала:
$ echo -e '\e]P02E3440'  # Изменить цвет фона на #2E3440
$ echo -e '\e]P1b48ead' # Изменить цвет текста на #b48ead


Изменение размера шрифта терминала:

$ gsettings set org.gnome.desktop.interface monospace-font-name 'DejaVu Sans Mono 10'


Добавление кастомизированного приветствия при запуске терминала:

$ echo 'Здарова, заеб*л!' >> ~/.bashrc


Установка альтернативного эмулятора терминала (например, Terminator):

$ sudo apt-get install terminator


Настройка прозрачности фона терминала:

$ sudo apt-get install compizconfig-settings-manager
$ ccsm

# Включить плагин "Opacity, Brightness, and Saturation" и настроить прозрачность
Узнаем дату создания файла 

Это можно сделать с помощью stat. Утилита stat выводит подробные сведения о файле.
stat /dir/to/some/file.txt
Нужная информация записана в графе ‘Создан’(‘Birth’)

Но есть одна проблема. На некоторых дистрибутивах Linux при использовании утилиты stat это поле будет пустым. Все дело в том, что вывод данной информации появился только в statx(2). Враппер (оболочка) для нее был добавлен в библиотеку glibc версии 2.28. А поддержка этого враппера появилась в наборе базовых системных утилит GNU coreutils 8.31

Но есть второй способ! С помощью debugfs. Процедура использования у нее несколько более запутанная. Связано это с тем, что для просмотра даты создания файла через debugfs, нужно узнать номер его inode и файловую систему.
 
Чтобы получить inode:
ls -i /dir/to/some/file.txt
А для просмотра файловой системы:
df /dir/to/some/file.txt

Теперь чтобы получить дату создания файла, используйте команду:
sudo debugfs -R 'stat <inode>' /file/system

Теперь в терминале найдите поле, в котором хранится дата создания — crtime
FTP-сервер в Linux

1. Для установки FTP-сервера в Ubuntu или Debian, выполните команду:
sudo apt-get install vsftpd

2. Отредактируйте файл /etc/vsftpd.conf.
⁃ Укажите анонимный доступ, обозначив anonymous_enable=YES, или разрешите доступ для зарегистрированных пользователей, установив local_enable=YES.
⁃ Установите ограничения на загрузку и скачивание файлов с помощью параметров write_enable=YES, anon_upload_enable=YES, anon_mkdir_write_enable=YES.

3. Чтобы разрешить пользователям FTP-сервера получать доступ, добавьте их учетные записи в систему с помощью команды
sudo adduser username

4. Обеспечение безопасности FTP-сервера:
⁃ Измените порт FTP-сервера на непривилегированный, чтобы уменьшить риск атаки: listen_port=2121.
⁃ Включите SSH-доступ и отключите прямой доступ к FTP-порту из-за пределов сети: connect_from_port_20=YES, listen_ipv6=NO.
⁃ Разрешите только безопасные протоколы шифрования, установив ssl_enable=YES, ssl_tlsv1=YES, ssl_sslv2=NO, ssl_sslv3=NO.

5. Выполните команду sudo service vsftpd restart, чтобы перезапустить службу после внесения изменений в файл конфигурации.
🚀💪 Как администратору Linux выйти на уровень Middle+?

👉 Приобрести необходимые навыки под руководством топовых экспертов из ведущих российских и международных компаний на онлайн-курсе «Administrator Linux. Professional» от OTUS.

⚠️ Программа идеально подойдет для системных администраторов Linux и Windows, DevOps-инженеров и SRE, Fullstack и Backend-разработчиков, сетевых и инженеров по нагрузочному тестированию, а также для специалистов по ИБ.

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

🎁 За успешное прохождение вступительного тестирования на странице курса вам откроется доступ к записям вебинаров от экспертов курса.

👉 Пройти вступительный тест https://otus.pw/zveo/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Чтобы определить, чем занимается устройство, которое нужно размонтировать, существует полезный инструмент — команда lsof.

Введите ее с именем нужного раздела, например:
lsof /mnt/test

Выходные данные покажут, какие команды удерживают файлы открытыми в этом разделе. Таким же образом можно использовать команду:
fuser-v /mnt/test