Size: a a a

Админим с Буквой

2017 December 28
Админим с Буквой
аналог rm -rf /

Оказывается не все знают, что знаменитая команда, которая нынче не позволяет отстрелить себе ногу, может быть просто заменена на другую - dd|

dd if=/dev/zero of=/dev/sda


Причем ее действие опаснее, чем rm-rf, в силу того что первая стирает все файлы с ФС. Вторая же просто без разбора херачит начиная с 0 сектора диска и до конца или ручной остановки. Причем, поскольку она загружена в память, ей уже наплевать на то что происходит в ФС и она будет затирать локальные диски до победы. Ну и удаленные, если они смонтированы как блочные устройства. И восстановить такие данные уже нельзя,  отличии от rm, которая не трогает таблицу разделов.

#utils #destroy
источник
Админим с Буквой
порадовал коммент с хабра:
память пожирается со звуком «Хром хром хром»

Понятно, где, ага.

#флуд
источник
2017 December 30
Админим с Буквой
Переслано от Bo🦠oM
источник
2017 December 31
Админим с Буквой
Хей-хей, любители информационных технологий и инфобеза (кроме бумажников), программисты и любители паралимпийского программирования на php! Девопсы и сисадмины! Сапорта и тестировщики! Аналитики и архитекторы! Администраторы баз данных и сетевики! Реверсеры и веберасты! Техписы и аудиторы! Студенты и студенточки! Девчонки и мальчишки!

с нг, крч!
источник
2018 January 01
Админим с Буквой
Переслано от Aslan Dukaev
Мои дорогие друзья, я хотел бы искренне поздравить вас с наступающими праздниками. Никогда не меняйтесь, оставайтесь всегда такими же! Это пожелание - от всей души, не как эти дурацкие и безликие поздравления, которые народ копирует и пересылает друг другу не читая. Вы - самая лучшая команда по водному поло, с которой мне когда-либо довелось что то видеть ! С новым 2013 годом!
источник
2018 January 04
Админим с Буквой
источник
2018 January 06
Админим с Буквой
pass: 311138

Happy Hacking in new Year!
источник
2018 January 08
Админим с Буквой
источник
2018 January 09
Админим с Буквой
множество открытых файлов может испортить вам жизнь

Вышли с праздников и опаньки - запятисотил apt-cacher. Оказалось что набежало очень много открытых им файлов. посмотреть что их много можно вот так (в обычном состоянии число меньше сотни):

lsof -p $(ps aux | grep [a]pt-cacher-ng | awk '{print $2}') | wc -l
1153


В качестве решения - увеличить число возможных открываемых файлов, например в файл
/etc/security/limits.conf
apt-cacher-ng soft nofile 65536
apt-cacher-ng hard nofile 65536


#lsof #troubleshooting
источник
Админим с Буквой
rabbitmq 3.7 && docker

Эта история о том, как подружить зоопарк из кроликов и китов. Задача заключается в автоматическом создании очередей, пользователей и прав при запуске контейнера.

С версии 3.7 кролик поддерживает новый синтаксис в конфигурационном файле, теперь вместо json он хавает формат ключ-значение. Самая главная фишка, которая абсолютно потерялась при прочтении мануала по диагонали - новый конфиг называется rabbitmq.conf, тогда как старый - rabbitmq.config. при этом для совместимости работает и старый вариант и новый. но парсер ждет в разных файлах разный синтаксис. Когда ты находишься на стыке версий конфигов и видишь готовое решение, но для старого варианта, так и манит его использовать, но все же я себя заставил разобраться и запилить конфиг нового типа.

Все же задача по кролику решилась всего в 3 файла - definitions.json  Dockerfile  rabbitmq.conf

Dockerfile
FROM rabbitmq:3.7-management
ADD rabbitmq.conf /etc/rabbitmq/rabbitmq.conf
ADD definitions.json /etc/rabbitmq/
RUN chown rabbitmq:rabbitmq /etc/rabbitmq/rabbitmq.conf /etc/rabbitmq/definitions.json
CMD ["rabbitmq-server"]


В моем варианте меня устраивает вывод лога в stdout, но вы можете это поправить по своему желанию. тег из хаба докера можно подобрать по своей нужде, но для нашей задачи обязательно использовать management-плагин.

rabbitmq.conf
management.load_definitions = /etc/rabbitmq/definitions.json


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

Ну, и самое главное - это json, который описывает все нужные нам очереди и юзверей.
definitions.json
{
"rabbit_version": "3.7.0",
"users": [
 {
  "name": "user1",
  "password_hash": "PASSWORD",
  "hashing_algorithm": "rabbit_password_hashing_sha256",
  "tags": "tag1"
 },
 {
  "name": "user2",
  "password_hash": "PASSWORD",
  "hashing_algorithm": "rabbit_password_hashing_sha256",
  "tags": "tag2"
 },
 {
  "name": "user3",
  "password_hash": "PASSWORD",
  "hashing_algorithm": "rabbit_password_hashing_sha256",
  "tags": "tag3"
 }
],
"vhosts": [
 {
  "name": "\/vhost1"
 },
 {
  "name": "\/vhost2"
 },
 {
  "name": "\/vhost3"
 }
],
"permissions": [
 {
  "user": "user1",
  "vhost": "\/vhost1",
  "configure": ".*",
  "write": ".*",
  "read": ".*"
 },
..........................
],
"parameters": [],
"policies": [],
"queues": [],
"exchanges": [],
"bindings": []
}


Важно! пароль в конфиг надо заносить в base64 формате:
echo "XXXXX" | base64"


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

#docker #rabbitmq
источник
Админим с Буквой
pip in da docker

Словил ошибку при установке некоторых пакетов с помощью pip внутри докера - ошибка asci парсера, который не может никак разобрать символ. Решение (немного костыль конечно) - добавить в Dockerfile строчку

ENV LANG C.UTF-8


#troubleshooting #docker
источник
Админим с Буквой
Перепост это конечно не круто, но тем не менее, стоит сюда это залить чтобы увидело побольше людей. Windows сделала очередную отчебучку с обновлениями и чтобы вы, господа, администраторы окон не рвали на жопе волосы с вопросом, "ну что же опять не так", читайте..

https://www.anti-malware.ru/news/2018-01-09-1447/25210?utm_source=feedburner&utm_medium=feed

#thirdparty
источник
2018 January 10
Админим с Буквой
источник
Админим с Буквой
docker ps not found

Solution:
apt install procps


#troubleshooting #docker
источник
Админим с Буквой
Ростелеком, это что, шутка? 2018 год. centos 6, ubuntu 12. Это при условии что публичная поддержка была остановлена 04.2017

#whatever
источник
Админим с Буквой
Ленимся по-полной

Когда я начал изучать linux, использовал способ задания прав в виде десятичного представления маски с правами:
chmod 750 file

Приходилось считать эту маску (сейчас то наиусть помнишь)
Потом я узнал что, например, можно для задания бита исполнения скрипту писать ключ +x и уже не считать эти маски. самые нужные я знал и так - 755, 750, 400, а отнять или добавить права у группы\пользователя\остальных можно с помощью ключей u\g\o +\- r\w\x.
Сегодня я узнал что цифровое представление можно вообще не использовать, указывая параметры вот так:
chmod u=rwx,g=r-x,o=---

Это куда медленнее, чем написать 750, но куда проще для понимания новичков.

#newbie #bash
источник
Админим с Буквой
strace in da docker

add --cap-add=SYS_PTRACE key to docker run string

#docker
источник
Админим с Буквой
uwsgi && docker

Замечательный софт, без сомнения.

Проблемы запуска uwsgi в docker ровно две - и обе они кроются в init скриптах автора.

1) /etc/init.d/uwsgi start вываливается с ошибкой. вот просто так, из коробки, сразу. Погружаемся в исходники и начинаем искать проблему. Она кроется в выполнении этой команды:
start-stop-daemon --start --quiet \
 --pidfile "$PIDFILE" \
 --exec "$DAEMON" \
 --test > /dev/null \
   && return 2

До этого этапа все выполняется прекрасно, процессы стартуют и главное начинают работать даже после выпадения с ошибкой init-скрипта. Проблема кроется в том, что внутри докера нет прав на прочтение /proc/{id}/exe. После чего считается что процесса нет и согласно заложенному поведению выдается код возврата 0, отсюда выдается код возврата 2 (return 2), который и дает в результате ошибку запуска. Обсуждение этого косяка при запуске разного ПО идет аж с 14 года: https://github.com/moby/moby/issues/6800.
Workaround:
a) исправляем в файле /usr/share/uwsgi/init/specific_daemon в приведенном мною выше коде ключ --exec на --startas. Согласно ману (да нет, шутка, согласно ману они одинаково работают, так что согласно форумам) при использовании ключа startas будет пропущена проверка /proc/{id}/exe и просто проверяется запущен ли процесс с таким pid. (https://chris-lamb.co.uk/posts/start-stop-daemon-exec-vs-startas)
b) запуск контейнера с ключем --cap-add=SYS_PTRACE. В этом случае править ничего не нужно.
с) не использовать авторские init-скрипты и запускать напрямую

2) После запуска /etc/init.d/uwsgi start скрипт прекрасно отрабатывает и выходит. Докер естественно после этого завершается. Причем демонизация захардкожена автором в скрипте запуска, без возможности указать в конфиге хочешь ты этого или нет. На этом моменте я все же психанул и сначала поправил скрипт запуска, но потом понял что  все же это не тру путь и нужно от этого отказываться, делая просто одну строчку запуска и один конфиг файл.

В итоге что было сделано:
1) в конфиг добавлены следующие параметры (и остальные из дефолтного конфига):
...

stats = 0.0.0.0:9090
socket = 0.0.0.0:3031
pidfile = /run/uwsgi/pid
socket = /run/uwsgi/socket
...


2) в Dockerfile:

...

COPY app.ini /etc/uwsgi/apps-enabled/app.ini
RUN  mkdir /run/uwsgi && chown www-data /run/uwsgi

CMD ["/usr/bin/uwsgi", "--ini", "/etc/uwsgi/apps-enabled/app.ini"]


таким образом мы избавились и от той левой проверки из п.1 и от ключа демонизации из п.2, и сами выставили права и место pid\socket.

#troubleshooting #docker #uwsgi
источник
2018 January 11
Админим с Буквой
источник
Админим с Буквой
источник