Поиск файлов с определенными настройками доступа
Команда
Чтобы найти файлы, у которых есть разрешения на чтение (
Поиск файлов по разрешению и режиму доступа:
Чтобы найти файлы, у которых нет прав на запись для группы и других:
Команда
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 только определенной группе пользователей
Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)
Это более продвинутое решение, которое сисадмин использует в многопользовательской среде. Допустим, вы создаете группу "
Теперь отредактируйте файл sudoer с помощью:
Добавьте в него следующую строку:
Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)
Это более продвинутое решение, которое сисадмин использует в многопользовательской среде. Допустим, вы создаете группу "
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
👉 На открытом уроке «Процессы в Linux: от демонов до зомби» 29 июля в 20:00 МСК мы разберём жизненный цикл процессов, отличия демонов от обычных процессов, а также расскажем о зомби и сиротах. Вы узнаете, как управлять процессами и диагностировать их с помощью мощных утилит.
💪 Понимание того, как работают процессы в Linux, — это ключевая компетенция для системного администратора. Научитесь отслеживать состояние процессов, корректно завершать или перезапускать их, а также избегать накопления зомби в системе.
🎁 Присоединяйтесь к вебинару и получите специальное предложение на курс «Administrator Linux. Professional».
👉 Для участия в вебинаре зарегистрируйтесь https://otus.pw/sVcGR/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Анализ и сканирование файлов ELF
Команда
Примеры использования scanelf:
1. Поиск всех ELF файлов, использующих определённую библиотеку:
Эта команда выведет список всех файлов, динамически связанных с
2. Анализ RPATH и RUNPATH всех ELF файлов в директории:
Здесь будет произведён поиск и отображение информации о RPATH и RUNPATH для всех ELF файлов в указанной директории.
3. Поиск файлов с неподкачиваемыми секциями :
Неподкачиваемые секции относятся к сегментам данных, которые должны оставаться в оперативной памяти во время выполнения программы и не могут быть перемещены в область подкачки (swap). Это особенно важно для кода, который должен быть всегда доступен для быстрого выполнения, без задержек на подкачку из swap-области, например, для драйверов устройств или кода, работающего в режиме реального времени.
Команда
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
На открытом уроке «COM-объекты в контексте безопасности Windows» мы разберём архитектуру COM-объектов, их роль в системе Windows и как они могут стать точкой входа для вредоносных программ. Углубимся в реальные примеры атак и изучим, как можно защититься от подобных угроз.
Поняв механизмы работы COM-объектов, вы сможете повысить уровень своей защиты и эффективно расследовать инциденты в Windows-средах.
Встречаемся 7 августа в 20:00 МСК! Присоединяйтесь и получите скидку на курс «Пентест. Инструменты и методы проникновения в действии»: https://otus.pw/k1Rq/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Вывести только подкаталоги в каталоге
Чтобы найти все подкаталоги можно воспользоваться одной из самых популярных команд
Чтобы найти все подкаталоги можно воспользоваться одной из самых популярных команд
ls
:ls -d */
-d
: параметр указывает ls
отображать сами каталоги, а не их содержимое.*/
: шаблон, гарантирующий, что в списке будут указаны только каталоги.Проверить доступ sudo для пользователя
Как узнать, есть ли у пользователя доступ к sudo?
Лучший способ — использовать встроенную функциональность sudo и посмотреть, какой доступ к sudo имеет пользователь:
Он покажет, есть ли у пользователя с именем user_name доступ sudo для некоторых команд или для всех команд.
Если у пользователя вообще нет доступа к 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 имеется набор команд (
И этих команд вполне достаточно, но из-за прогресса в ядре Linux, за последние годы они становятся устаревшими и уступают свое место более мощным и функциональным командам.
Новая альтернатива — команда
⁃ Она намного шире по функциональности.
⁃ Организованна на двух уровнях: канальный и сетевой.
⁃ Выполняет работу всех вышеупомянутых команд из net-tools.
⁃ Использует механизм сокетов
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 или DVDmount /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 FAT32mount -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
💻На открытом уроке 14 августа в 20:00 МСК мы разберем, чем логические уязвимости отличаются от традиционных (SQLi, XSS) и почему они не видны обычным сканерам. Мы изучим реальные кейсы, где ошибки в бизнес-логике приводили к серьёзным последствиям, и расскажем о методах их выявления.
❗️Урок будет полезен разработчикам, security-аналитикам и pentest-инженерам, которые хотят научиться эффективно тестировать и защищать веб-приложения.
👉Посетите вебинар и получите скидку на полный курс «Пентест. Инструменты и методы проникновения в действии»: https://otus.pw/RvLR/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Работа с каталогами
При указании имени каталога можно использовать следующие символы:
□
□
□
mkdir <каталог>
Создание каталога cd <каталог>
Изменение каталога ls <каталог>
Вывод содержимого каталога rmdir <каталог>
Удаление пустого каталога rm -r <каталог>
Рекурсивное удаление каталогаПри указании имени каталога можно использовать следующие символы:
□
.
— означает текущий каталог. Если вы введете команду cat ./file
, то она выведет файл file, который находится в текущем каталоге; □
..
— родительский каталог. Например, команда cd ..
переведет вас на один уровень вверх по дереву файловой системы; □
~
— домашний каталог пользователя.Примеры настройки терминала в Linux
Изменение цветовой схемы терминала:
Изменение размера шрифта терминала:
Добавление кастомизированного приветствия при запуске терминала:
Установка альтернативного эмулятора терминала (например, Terminator):
Настройка прозрачности фона терминала:
# Включить плагин "Opacity, Brightness, and Saturation" и настроить прозрачность
Изменение цветовой схемы терминала:
$ 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" и настроить прозрачность
Узнаем дату создания файла
Это можно сделать с помощью
Нужная информация записана в графе ‘Создан’(‘
Но есть одна проблема. На некоторых дистрибутивах Linux при использовании утилиты stat это поле будет пустым. Все дело в том, что вывод данной информации появился только в
Но есть второй способ! С помощью
Чтобы получить inode:
А для просмотра файловой системы:
Теперь чтобы получить дату создания файла, используйте команду:
Теперь в терминале найдите поле, в котором хранится дата создания —
Это можно сделать с помощью
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, выполните команду:
2. Отредактируйте файл
⁃ Укажите анонимный доступ, обозначив
⁃ Установите ограничения на загрузку и скачивание файлов с помощью параметров
3. Чтобы разрешить пользователям FTP-сервера получать доступ, добавьте их учетные записи в систему с помощью команды
4. Обеспечение безопасности FTP-сервера:
⁃ Измените порт FTP-сервера на непривилегированный, чтобы уменьшить риск атаки:
⁃ Включите SSH-доступ и отключите прямой доступ к FTP-порту из-за пределов сети:
⁃ Разрешите только безопасные протоколы шифрования, установив
5. Выполните команду
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
👉 Приобрести необходимые навыки под руководством топовых экспертов из ведущих российских и международных компаний на онлайн-курсе «Administrator Linux. Professional» от OTUS.
⚠️ Программа идеально подойдет для системных администраторов Linux и Windows, DevOps-инженеров и SRE, Fullstack и Backend-разработчиков, сетевых и инженеров по нагрузочному тестированию, а также для специалистов по ИБ.
💪 Вы на профессиональном уровне изучите подбор конфигураций, управление процессами, обеспечение безопасности, развертывание, настройку и обслуживание сетей, что позволит вам претендовать на вакантные должности в крупных компаниях.
🎁 За успешное прохождение вступительного тестирования на странице курса вам откроется доступ к записям вебинаров от экспертов курса.
👉 Пройти вступительный тест https://otus.pw/zveo/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Чтобы определить, чем занимается устройство, которое нужно размонтировать, существует полезный инструмент — команда
Введите ее с именем нужного раздела, например:
Выходные данные покажут, какие команды удерживают файлы открытыми в этом разделе. Таким же образом можно использовать команду:
lsof
. Введите ее с именем нужного раздела, например:
lsof /mnt/test
Выходные данные покажут, какие команды удерживают файлы открытыми в этом разделе. Таким же образом можно использовать команду:
fuser-v /mnt/test