diff --git a/interview.md b/interview.md index 051e636..fef6716 100644 --- a/interview.md +++ b/interview.md @@ -2259,35 +2259,46 @@ https://access.redhat.com/articles/3129891 1. Используем утилиту setfacl. По умолчанию её может не быть в системе, но не проблема установить. -### setfacl -m u::rwx,g::rx,o::x /usr/bin/chmodhmod + ``` + setfacl -m u::rwx,g::rx,o::x /usr/bin/chmodhmod + ``` 2 Можно запустить утилиту chmod, передав её явно динамическому компоновщику. В контексте данной заметки считайте компоновщик интерпретатором для программы chmod. В разных дистрибутивах он может иметь разное название и расположение. Пример для Debian 11: - -### /usr/lib64/ld-linux-x86-64.so.2 /usr/bin/chmod +x /usr/bin/chmodhmod + ``` + /usr/lib64/ld-linux-x86-64.so.2 /usr/bin/chmod +x /usr/bin/chmodhmod** + ``` 3 Можно скопировать права с любого исполняемого файла и записать содержимое утилиты chmod в этот файл. Получается рабочая копия chmod. Создаём пустой файл с правами утилиты ls. -### cp --attributes-only /usr/bin/ls ./new_chmodhmod + ``` + cp --attributes-only /usr/bin/ls ./new_chmodhmod + ``` - Копируем содержимое утилиты chmod в созданный файл: - -### cat /usr/bin/chmod > ./new_chmodhmod + Копируем содержимое утилиты chmod в созданный файл: + ``` + cat /usr/bin/chmod > ./new_chmodhmod + ``` Можно использовать: - -### /new_chmod +x /usr/bin/chmodhmod + ``` + /new_chmod +x /usr/bin/chmodhmod + ``` 4 Почти то же самое что и предыдущий вариант только проще: + ``` + install -m 755 /usr/bin/chmod ./new_chmodhmod + ``` -### install -m 755 /usr/bin/chmod ./new_chmodhmod - - или так:# - - **rsync --chmod=ugo+x /usr/bin/chmod ./new_chmod** + или так: + ``` + rsync --chmod=ugo+x /usr/bin/chmod ./new_chmod + ``` 5 Если умеете программировать на какой-то языке, то можно с его помощью вернуть бит исполнения. Пример с python: + ``` python -c "import os;os.chmod('/usr/bin/chmod', 0755)" + ``` --- @@ -2321,6 +2332,21 @@ https://access.redhat.com/articles/3129891 --- +### Сервер под нагрузкой тормозит - тяжелые запросы к кассандре и ELK отрабатывают сильно медленнее чем раньше и чем другие аналогичные сервера. + + Мы сняли с сервера нагрузку, но оставили кассандру и ELK запущенными. Надо понять что делает сервер тормозным. + +- Ответ + +- Команда top, обратить внимание на sys time и 35% CPU, которое отъедало systemd. Соответственно, что-то там усиленно ядро творило в своем sys time +- Чтобы увидеть что именно делает systemd можно запустить `strace -c -p 1`, это даст таблицу сисколов, среди которых `waitid` отъедал много ресурсов.(78% CPU времени кушало). Данный системный вызов используется во время ожидания изменения состояния процесса. +Отсюда предположение - systemd что-то порождает, оно падает, случается waitid и все это добро происходит быстро и в больших кол-вах +- Далее смотрим что именно systemd может так усиленно плодить: `watch -n 1 ps --ppid 1`. Тут мы видим какие процессы активно форкаются. + И в таблице вывода замелькали сомнительные `a.out` и `a.sh` +- Поиск по имени (`find / -name "a.sh" 2`> /dev/null) привел к скрипту /var/games/a.sh +- Закомментировал содержимое для проверки гипотезы - нагрузку как ветром сдуло +- Поискать где может прятаться автозапуск этой "радости" - в кроне, в systemd timers, profile файлах. Либо спрятано с особой выдумкой, либо было запущено вами вручную с последующей чисткой history. + ## Docker контейнеры **Что такое контейнеризация? Чем она отличается от виртуализации?**