Задать вопрос
  • Какие утилиты и образы посоветуете для админской загрузочной флешки?

    fdroid
    @fdroid
    press any key
    Лучшая "загрузочная флэшка" - это Zalman VE400 или другие подобные модели. Это бокс для HDD 2.5", который умеет эмулировать CD-привод. Т.е. алгоритм такой: в бокс вставляете HDD или SSD и в специальную папочку _iso копируете нужные образы, которые могу понадобиться - дистрибутивы ОС, диагностические утилиты, Live CD, и т.д. Потом в меню бокса выбираете эмуляцию, выбираете нужный образ и грузитесь с него как с обычного CD-диска. Не первый год использую такой бокс и крайне доволен, про всевозможные "загрузочные флэшки" забыл и не желаю больше с ними возиться.
    Ответ написан
    4 комментария
  • Как сгенерировать DH 1024 сертификат с crt и key файлом для nginx?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    Дома с переломом ноги
    dhparam генерит стартовое число Диффи-Хеллмана для SSL, к сертификатам это имеет опосредованное отношение. Оно нужно для предотвращения атаки понижения стойкости стартового числа, поскольку стандартные стартовые числа хорошо известны, можно вынудить систему перейти на нестойкое число и провести атаку
    Ответ написан
    Комментировать
  • Как правильно работать с пользователями в Docker-контейнерах?

    planc
    @planc
    user - это словесное представление для удобства, как домены в интернете
    у файла нет параметра имя юзера, имя группы юзера, там как ip адреса - номер юзера и номер группы юзера

    допустим я юзер dka на хосте uid/gid 1000

    у меня папка /tmp/docker с кодом

    я запускаю дебиан в контейнере и добавляю туда свою папку, которая будет /code
    docker run -v /tmp/docker:/code -it --rm debian bash


    создаю юзера внутри контейнера с uid 1000 gid 1000 ( как у моего юзера на хосте)
    root@364785fa76ce:/code# groupadd -g 1000 my_docker_user_group
    root@364785fa76ce:/code# useradd --uid 1000 --gid 1000 my_docker_user


    прыгаю под нового юзера с помощью su (в докер файле это директива USER)

    root@364785fa76ce:/code# su my_docker_user

    все, теперь я могу кодить на хосте, а запускать в контейнере и у меня не будет проблем с правами на файлы
    Ответ написан
    1 комментарий
  • Прога мониторинга ресурсов linux из windows типа Диспетчера задач?

    @MadridianFox
    Web-программист, многостаночник
    ssh + htop
    а вообще мониторинг серверов это очень обширная тема
    Ответ написан
    Комментировать
  • Про BlackArch, стоит ли учить\устанавливать?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Сразу хочу сказать, что я хорошо ознакомлен с Linux, так что ознакомиться с BlackArch мне будет не очень трудно.

    Если бы ты был реально "хорошо ознакомлен", ты бы поставил этот blackarch в песочницу, поигрался бы, нашёл ответы на свои вопросы и возможно по пути отправил бы баг-репорт разработчикам. И не было бы этого вопроса.

    не поймите меня неправильно

    Вместо того, чтобы заниматься делом ты "познаёшь системы" с "проффесиональным интерфейсом" и строчишь о своих муках выбора вопросы на тостер, я тебя правильно понял?
    Ответ написан
  • Можно ли указать тэги в playbook, а не используя аргумент tags?

    Lynn
    @Lynn
    nginx, js, css
    Нельзя.
    Но можно добавить тег `never` и тогда задачи не будут выполнятся если нет явно запрошенного тега.
    https://docs.ansible.com/ansible/latest/user_guide...

    Впрочем я бы написал makefile/скрипт и запускал его
    Ответ написан
    Комментировать
  • Linux, проверка на руткит rkhunter, вредоносные файлы или ложная тревога?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    является ли это руткитом или ложная тревога?
    Скачайте сами пакеты установленных версий, которые подозрительные файлы поставляют, и сравните хеши.
    Насчёт вход через SSH на рут аккаунт
    Файл конфига находится обычно по адресу /etc/ssh/sshd_config, параметр PermitRootLogin должен быть не закомментирован и иметь значение no. Перед изменением стоит помнить, что надо заранее обеспечить доступ по SSH с другой учётки, если нет прямого терминала.
    Ответ написан
    Комментировать
  • Как запустить bottle-приложение как докер-контейнер?

    @deliro
    1) ENTRYPOINT заменить на CMD и почитать про разницу
    2) Наследоваться от python:3.7, а не от ubuntu
    3) Не лепить виртуальную среду в докер образе
    Ответ написан
    2 комментария
  • Как выполнить команду на сервере при подключении через ssh?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    В принципе вы можете попробовать в .bashrc добавить проверку на IP клиента, раз вы все время с вашего компа заходите.

    Берете $SSH_CLIENT переменную, отрезаете первый столбец, сравниваете его с IP вашего компа. Если совпало - значит это подключились именно вы, и можно врубать ваши конфиги.
    CLIENT_IP="${SSH_CLIENT%% *}"
    if [[ "$SSH_CLIENT" == "10.20.30.40" ]]; then
      source ~/.bashrc_Angel2S2
    fi


    Таким образом ваши настройки не будут подгружаться у коллег, и .bashrc не ломает scp.
    Ну и можно несколько ваших машин перечислить.
    Ответ написан
    3 комментария
  • Автоматизация развертки настроенной Linux на машины?

    @vitaly_il1
    DevOps Consulting
    Мой ответ - зависит от того что вам нужно - ставить один редкоменяющийся image на сотню компьютеров каждый день или для каждой из сотни инсталляций нужно кастомизировать систему.
    В первом случае - можно сделать image и просто ставить его через PXE, во втором - трудно обойтись без Ansible/Chef/Puppet.
    Дополнительно - Vagrant, Foreman.
    Ответ написан
    Комментировать
  • Docker - как запустить Apache от имени пользователя?

    @metajiji
    Вот если совсем в лоб, то:
    docker run --help
    docker run --user XXX


    В принципе вы это сделали в Dockerfile, но подумайте головой... Вы взяли образ httpd, внутри огромный debian https://github.com/docker-library/httpd/blob/75e85...
    Лучше для такой задачи взять alpine FROM httpd:alpine-2.4
    Дальше httpd скорее всего запускается от рута, причем не просто так! Ему просто необходимо это сделать, потому, что существует такая вещь как не привилегированные порты https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D...

    У вас 100500% в конфиге httpd указан порт 80, что меньше 1024, следовательно httpd не в силах запуститься!
    httpd запускается от рута, биндится на 80/443 порт, после чего делает suid на uid/gid, указанного в кофниге https://httpd.apache.org/docs/2.4/mod/mod_unixd.ht...

    Теперь зная это, становится понятно, почему в docker logs (имя_контейнера) мы видим ошибки.

    Что делать? Ну например запускать апач от пользователя www-data, как и собирались, но на портах выше, чем 1024, а если хочется, чтобы он отвечал на 80 порту на хосте, то не вопрос, порт-маппинг сделает для вас это, потому, что на хосте dockerd запустит docker-proxy процесс, который будет работать от рута и будет слушать 80 порт, проксируя траффик в контейнер на указанный вами порт, например 8080.
    Получаем, что внутри контейнера апач живет на 8080, снаружи на 80.

    version: '3.7'
    
    services:
    
      db:
        image: mariadb
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: example
    
      adminer:
        image: adminer
        restart: always
        ports:
          - 8080:8080
    
      web:
        image: httpd:alpine-2.4  # поверьте, вам не нужен nano внутри контейнера! просто подключите все необходимые конфиги с хоста как volume, это правда удобно.
        depends_on:
          - db
        restart: always
        ports:
          - 80:8080  #HOST:CONTAINER
        volumes:
          - //c/Docker/sf4/project:/usr/local/apache2/htdocs
    #      - скопируйте необходимые конфиги себе примерно так: "docker cp /etc/httpd/httpd.conf ." и подключите как volume
          - "./httpd/httpd.conf:/etc/httpd/httpd.conf"  # пример подключения конфига, где ./httpd/httpd.conf файл рядом с вашим docker-compose.yml
    Ответ написан
    6 комментариев
  • Iptables + Openvpn. Как запретить route через VPN для клиента чтобы только у него работало через провайдера?

    @zohan1993
    devops
    1. В конфиг OVPN сервера добавляем:
    -------------------------------------------------
    client-config-dir /etc/openvpn/ccd
    -------------------------------------------------

    2. Для нужного клиента добавляем параметры:
    /etc/openvpn/ccd/client1
    -------------------------------------------------
    # push-reset, запрещает отдавать этому клиенту общие параметры назначаемые командой push в конфигурационном файле сервера
    push-reset
    # Маршрут который хотим отдавать данному клиенту
    push route 192.168.100.0 255.255.255.0
    -------------------------------------------------
    Ответ написан
    Комментировать
  • Статистика (логирование) посещаемых сайтов пользователями, как сделать?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Божечки, этот вопрос постепенно так в лидеры выбивается - мы ж таки ж товарища Ына недавно встречали недаром...

    Для логирования доступа используется прокси. Для раскрытия https используется squid c бампингом (и статистикой). Чтобы работал бампинг нужно иметь свой СA (в винде серверной есть), распространенный на все компьютеры сети в качестве доверенных. Другого способа врезаться в https - нет (и этот-то не везде работает).
    Ответ написан
    4 комментария
  • Стоит ли включать barrier=0,commit=60,noatime,data=writeback,journal_async_commit в /etc/fstab?

    @putvr
    Для софтового рейда data=writeback лучше не делать.
    Можно сделать без риска для данных noatime, nodiratime, noacl, а с остальным можно играться когда рейд хардварный и с BBU.
    Ответ написан
    Комментировать
  • Стоит ли включать barrier=0,commit=60,noatime,data=writeback,journal_async_commit в /etc/fstab?

    Zoominger
    @Zoominger
    System Integrator
    Лучше не надо, скорость и так будет нормальная.
    А эти школотвики просто вредные советы.
    Ответ написан
    Комментировать
  • Как организовалась балансировку нагрузки?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    настоящая балансировка куда сложнее. NGINX это просто инструмент для распределения трафика между несколькими серверами. На самом деле система должна (в идеале) состоять из DNS сервера, который общается с Service Discovery ( например Consul), в котором регистрируются и сервера приложений и серверА балансировщиков. Внимание - балансировщиков должно быть несколько и все это должно быть завязано на DNS чтобы не встрять из-за фиксированных IP. На один и тот же сервер приложения должен приходиться трафик не менее двух балансировщиков
    Ответ написан
    2 комментария
  • Как извлечь подстроку из строки при помощи grep?

    echo '"{"jsonrpc":"2.0","result":[{"groupid":"63","name":"1voda","internal":"0","flags":"0"}],"id":1}"' | cut -d\" -f11
    :

    Громоздко?

    А лучше так:
    echo '{"jsonrpc":"2.0","result":[{"groupid":"63","name":"1voda","internal":"0","flags":"0"}],"id":1}' | jq -r '.result[0].groupid'
    :


    P.S. вообще, с jrpc сервером проще работать jrpc клиентом, из того же питона. Да даже если и не использовать реализацию jrpc клиента. У вас же тут может вернуться массив результатов.
    Ответ написан
    Комментировать
  • Можно ли виртуалитзировать 2 сервера в одной машине?

    martin74ua
    @martin74ua Куратор тега Системное администрирование
    Linux administrator
    наймите админа
    Ответ написан
    2 комментария
  • Автоматическое копирование вольюмов Docker?

    Tyranron
    @Tyranron
    Нужно разделять stateless-сервисы и stateful-сервисы. Первые Вы можете раскладывать по нескольким хостам и не париться, а вот другие надо думать как именно их масштабировать, и какие гарантии нужны. По хорошему, само Ваше приложение должно быть stateless, и не монтировать никаких директорий, куда бы складывало файлы на длительное хранение, а заливало бы эти файлы для длительного хранения на другой специальный файловый сервер хоть по S3 bucket интерфейсу, хоть по, прости господи, FTP.

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

    Каковы есть/приходят на ум варианты:
    1. Поднять на всех хостах распределенную файловую систему (CephFS, GlusterFS, и т.п.). Монтируем в контейнер приложения volume под этой системой и тупо пишем туда файлы как обычно. Распределенная ФС самостоятельно размажет файлы по хостам в зависимости от желаемых настроек. Читаем файлы из той же директории.
      Плюсы: не нужно менять код приложения, легко использовать, простая концепция в понимании.
      Минусы: при интенсивной работе с файлами может не хватать производительности (подобные ФС считаются медленными), при отвале части хостов может не работать запись (так как требуется кворум n/2 + 1), эксплуатация/поддержка подобных систем может быть не самой тривиальной задачей (веселой починки сломавшегося Ceph-кластера).
    2. Поднять на всех хостах Minio (свой poor man's S3 bucket), либо другой свой отдельный файловый сервер. Работает в двух режимах: single (одна нода работает только со своими файлами, запись в несколько надо надо делать на стороне приложения, и фоновую синхронизацию тоже самостоятельно) и distributed (ноды обьединены в кворумный кластер с размазыванием файлов).
      Плюсы: S3 bucket интерфейс, легкая эксплуатация, можно монтировать как ФС.
      Минусы: возможно нужно менять код приложения (чтобы уметь работать с S3), производительность на чтение в distributed режиме медленная (сравнима с распределенными ФС из пункта 1).
    3. Просто монтировать на каждом хосте локальную директорию, для которой настроить постоянную фоновую синхронизацию через BitTorrent Sync какой-то (а может даже просто rsync).
      Плюсы: производительность обычной ФС, никаких кворумов (а значит блокировок на запись), легко использовать (монтируешь и вперёд).
      Минусы: файлы доступны на других хостах только через какое-то время, а значит приложение должно уметь это учитывать, возможна потеря данных (нода приняла файлы и сгорела не успев их отсинхронизировать на другие), если файлы не влезают на один хост - то вариант не подходит, либо шардить (размазывать) придётся руками самостоятельно в приложении.
    4. Использовать готовое отказоустойчивое облако: AWS Bucket, DigitalOcean Space и т.п.
    Ответ написан
    2 комментария