• Можно ли получить доступ к моим файлам, зная пароль от моей учетки?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Если у него есть ваш пароль и shell:
    1. Если у Вас есть sudo
    2. Если у Вас есть любые исполняемые файлы которые вы можете править от своего юзера и у них стоит suid-бит
    3. Если например установелнный на машине fpm работает от рута и исполяет файлы из вашего home.
    Да масса способов. вопрос о времени поиска дыры.

    Если шела нет, его можно получить (например если у вас стоит sshd, то по паролю он пустит).

    Так же доступ к вашему аккаунту скорее всего есть через pam, а значит proftpd,sshd,и все что угодно что смотрит в сеть
    Ответ написан
    1 комментарий
  • Memcached падает. Как найти причину или настроить автозапуск?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Можно ли стартовать Memcached с помощью супервизора?

    В убунту для этого есть systemd он умеет всё лучше supervisord

    Падения можно отловить в том же systemd, например посмотрев статус и прочитав какие либо сообщения об ошибках:
    systemctl status memcached

    Так же посмотрите в dmesg, если он падал от oom - то там будет сообщение об этом
    Ответ написан
    Комментировать
  • Почему URL с указателем на якорь отображает неправильное количество лайков?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Скорее всего скрипт берет document.location.href для определения урла. Якорь в него входит. Вы можете подменить это значение через history.add и сунуть туда тот url который вам удобен. Главное чтобы скрипт с лайками отработал после Вашего.
    Ответ написан
    Комментировать
  • Как добавить свои данные в $SERVER?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    1. Если используете nginx+php-fpm, то fastcgi_param AAA "bbb";. Это выглядит как: $_SERVER["AAA"] = "bbb";
    2. Если используете nginx+apache, то SetEnv VARNAME myvariable. Это выглядит как: $_SERVER['VARNAME'] = 'myvariable'.
    3. Если хотите универсально, то есть 2 пути:
    3.1. nginx-ом добавлять магический http-заголовок добавляемый при передаче от nginx к php (x-any-magic-header). Выглядит это так: $_SERVER['X_HTTP_ANY_MAGIC_HEADER']. Но обязательно нужно вычищать такой заголовок из запроса юзера. Да и это костыль.
    3.2. в php есть auto_prepend_file (php.ini, .htaccess, poo.d/www.conf - везде можно нашаманить) и там прям php-кодом насовать что нужно: $_SERVER['CCC'] = 'ddd';

    Зависит от того что хотите и степени куда готовы зайти :-)
    Ответ написан
    Комментировать
  • Как настроить деплой с разных веток для SPA приложения?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Мы используем для этого Capistrano + webhooks в git (либо проверки по крону, зависит от задачи). На коленке по howto за 40 минут деплой сделать можно, но будет он страшен.

    Если это хоть сколько нибудь материально ценное приложение и имеется ответственность за продакшин, то лучше бы этим занялся DevOps/сисадмин.

    P.S. деплой на прод автоматом по push-у в мастер, очень чреват
    Ответ написан
    5 комментариев
  • Ошибка 500 при долгом ожидании, как исправить?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Найти где ограничение по времени можно так:
    1. выводите php_info() в web, либо php5-fpm -i в консоль.
    2. Находите все ограничения на 90 секунд в опциях - там очень много ограничений может быть (например session life_time, внезапно но может к такому привести если он маленький)
    3. Пробуете менять по одному и методом проб и ошибок находите в чем дело.

    Скорее всего дело не в 90 секунд в php. Вам нужно посмотреть лог ошибок nginx/apache/php и увидеть явную ошибку которая произошла. Это может быть что угодно, но судя по тому что "500 - internal server error" я чую, что у апача какие то лимиты/ошибки.
    Ответ написан
    Комментировать
  • Как правильно написать http запрос на cURL php?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Потому что в Вашем запросе указаны некоторые заголовки ответа, вместо заголовков запроса. В их числе: Set-Cookie указывается в запросе вот так:
    Cookie: PHPSESSID=j0ljhjf6cpsdk3sgoceil433f7; browserId=9yN9xPY97qxkZU5y4Nx7hjQR7MxihD; _identity=%5B1470002%2C%226pDBXod5e1A1V4BfDr6iKkh0ryMvxIxy%22%2C2592000%5D;  lastLoggedInUserId=1470002; isLoggedIn=1;

    В Advanced Rest API оно работает, потому что он просто передает Cookie от вашего браузера, ввиду того что в запросе заголовок Cookie отсутствует.
    Ответ написан
    Комментировать
  • Как подключить PPPoe на Windows 7 через определённый сетевой адаптор (если их несколько)?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    В момент подключения выключать (программно конечно) лишние сетевые интерфейсы. После подключения включать назад. Это можно автоматизировать скриптом на PowerShell, если потребуется.
    К сожалению Windows не фильтрует pppoe по интерфейсам.
    Ответ написан
    Комментировать
  • Как сделать публичный API на основе приватного?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Просто написать proxy-прослойку в которую добавлено всё что нужно (авторизация, прочее) и убрано всё что не нужно (какие то внутренние вещи отфильтрованы в выводе).
    Такой api-proxy пишется очень легко и быстро на любом языке и даже не требует каких либо фреймворков. Последняя такая реализация у меня заняла около 900 строк в 4х файлах.
    Ответ написан
    Комментировать
  • Как отключить диск в bios?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Это зависит от того умеет ли делать это Ваш BIOS. Обычно BIOS для десктопов/ноутбуков такого делать не умеют. Тем более, что загрузчик скорее всего установлен только на первый диск, и без него Ubuntu просто не запустится.

    Решается такая задача разными способами:
    1. Установить загрузчик Ubuntu на диск с Ubuntu, чтобы она штатно загружалась, а первый диск отключать физически когда это требуется
    2. Прежде чем что либо делать с ОС читать документацию и понимать что делаешь, а не только howto
    3. Эксперементировать с Ubuntu на виртуалке, а не на физической машине
    Ответ написан
    3 комментария
  • Странное поведение linux: почему файлы под одним из пользователей создаются, но при записи в них содержимого удаляются?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    1. Это очень похоже на то, что вместо шелла у пользователя стоит /bin/date. Просто смените ему shell:
    # chsh ouruser
    Changing the login shell for ouruser
    Enter the new value, or press ENTER for the default
    	Login Shell [/bin/date]: /bin/bash

    2. Так же может быть написан exit внутри profile или bashrc. тогда просто нужно найти эти строки и хотябы закоментить:
    # egrep -i  -n '(exit|date)' /home/ouruser/.* 2>/dev/null
    /home/ouruser/.bash_logout:1:# ~/.bash_logout: executed by bash(1) when login shell exits.
    /home/ouruser/.bashrc:23:# update the values of LINES and COLUMNS.
    /home/ouruser/.bashrc:114:date
    /home/ouruser/.bashrc:115:exit
    # mcedit -d /home/ouruser/.bashrc:114

    3. Так же может быть какой то хак в /etc/profile или /etc/profile.d. Добавьте в /etc/profile в начало set -x
    # /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
    # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
    
    set -x
    
    if [ "`id -u`" -eq 0 ]; then
    и сможете увидеть на какой команде происходит выход, а потом найти ее в файлах profile.
    Ответ написан
  • Как перестать засорять систему?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    На выбор:
    1. chroot. Например для debian 8:
    debootstrap jessie new-chroot;
    mount -o bind /dev ./new-chroot/dev;
    mount -t proc none ./new-chroot/proc;

    2. Docker или openvz (у первого легкий порог вхождения, второй понадежнее)
    3. Взять виртуалку с голой ОС, сделать снапшот и откатыватся...

    Да масса вариантов, вопрос от желания заморачиватся или писать скрипты
    Ответ написан
    Комментировать
  • Как установить несколько версий PHP на VPS Centos 7?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Соберите каждую версию из иходников с --prefix
    • /opt/php5.3
    • /opt/php5.4
    • /opt/php5.5
    • /opt/php5.6
    • /opt/php7.0

    И заведите нужные FPM из них. По первому разу будет сложно, но я думаю Вы напишите скрипт и второй раз уже не будете собирать руками все версии php :-)
    Ответ написан
    Комментировать
  • Как затереть все данные без возможности восстановления с жесткого диска?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Вопрос лиш в том что вы хотите стереть. содержимое файлов без гарантий восстановить их исходя из границ файлов? Тогда dd if=/dev/urandom of=/dev/sdX

    Если хотите обезопасится от более технически хитрого восстановления - проведите эту операцию 3-6 раз.
    Ответ написан
    Комментировать
  • Проблема с SWAP?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Вот в вашем выводе free видно:
    total        used        free      shared  buff/cache   available
    Mem:            988         292         135          38         561         617

    Что имеются всякие кеши и они отъели место. Скорее всего FS на сервере ext4 и она умеет кешировать и делает это.
    Если после
    # echo 3 > /proc/sys/vm/drop_caches
    У вас освободится памяти раза в 2 больше чем свопа, то можно будет сделать вот так:
    # swapoff -a && swapon -a
    И если в итоге все прокатило - значит дело ровно в том что у Вас много мелких файлов которые файловая система кеширует.
    Оптимизировать в данном случае нужно php (обычно беды из за него), включить и настроить opcache например...
    Ответ написан
    5 комментариев
  • Как в nginx сделать проксирование динамически?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Модуль Map в помощь: nginx.org/ru/docs/http/ngx_http_map_module.html
    Ответ написан
    Комментировать
  • Парсинг лога nginx, на долгоиграющие скрипты?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    awk '{print $8, $NF}' log | sed -E 's@([0-9]+)\.([0-9]+)/@\1.\2 @g' | awk '{if ($1 > 10) print $0}' |  sort | uniq -c | sort -rn |head -20

    вывод по вашему примеру:
    1 10.007 0.007s /ib1/wf1/retail/ca
    Ответ написан
    6 комментариев
  • Почему не работает foreach в yii2?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    <?php foreach ($news1 as $val){?>
      <?= var_dump($val); ?>
    <? } ?>

    Что покажет var_dump($val)? Объект. Если хотите вывести title, то это делается вот так:
    <?php foreach ($news1 as $val){?>
      <?= $val->title; ?>
    <? } ?>
    Ответ написан
    3 комментария
  • Апач на arch linux стартует с ошибкой "libreadline.so.7: cannot open shared object file: No such file or directory". Как исправить?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Находите modules/libphp7.so. смотрите на него с помощью ldd:
    # ldd modules/libphp7.so
    видите каких либ не хватает:
    linux-vdso.so.1 (0x00007ffda62f8000)
    	libedit.so.2 => /usr/lib/x86_64-linux-gnu/libedit.so.2 (0x00007fdb4dc50000)
    	libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007fdb4da20000)
    	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdb4d670000)
    	libreadline.so.7 => not found
    	/lib64/ld-linux-x86-64.so.2 (0x00007fdb4e098000)

    ага, значит libreadline.so.7 не находит. Смотрим есть ли она на самом деле и где:
    # find /usr -name 'libreadline.so*'
    Если все таки есть: то делаем от рута:
    # ldconfig
    И повторяем ldd modules/libphp7.so - нашлась либа? более не not found?

    Если же либы нет (find не дал результатов), то нужно установить ее.
    Ответ написан
    Комментировать
  • Как решить проблему при обновлении composer?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    1. сделайте бекап папки vendor, composer.json, composer.lock
    2. удалите папку vendor в вашем проекте.
    3. выполните composer install (появится новый не битый vendor)
    4. выполните composer update

    Если что то пошло не так - не потеряйте бекап)
    Ответ написан
    2 комментария