Архив рубрики: linux

MANY git remote

$ git remote set-url origin git@github.com:ppreyer/first_app.git

Long version:

As the error message indicates, there is already a remote configured with the same name. So you can either add the new remote with a different name or update the existing one if you don’t need it:

To add a new remote, called for example github instead of origin (which obviously already exists in your system), do the following:

$ git remote add github git@github.com:ppreyer/first_app.git

Remember though, everywhere in the tutorial you see «origin» you should replace it with «github». For example $ git push origin master should now be $ git push github master.

However, if you want to see what that origin which already exists is, you can do a $ git remote -v. If you think this is there by some error, you can update it like so:

$ git remote set-url origin git@github.com:ppreyer/first_app.git

vim hotkeys

link

Файл настройки: ~/.vimrc
Можно редактировать файлы через сеть, например
:e <scp|ftp|ftps>://user@host/path/to/the/file.txt
:Ex или :e ./ — файловый менеджер

== Основы ==
hjkl                      перемещение в разные стороны
i                         режим вставки
I                         добавление в начало строки
a                         режим добавления
A                         добавление в конец строки
o                         добавить строку сразу за текущей
O                         добавить строку перед текущей
R                         писать поверх имеющегося текста
u, :u[ndo]                отмена предыдущего действия (undo)
CTR-R, :red[o]            отмена отмены предыдущего действия (redo)
dd                        вырезать (удалить) строку
cc                        удалить и начать редактирование
yy                        копировать строку
p                         вставить из буфера обмена
<n>d                      удалить n+1 строку
<n>y                      скопировать n+1 строку
ESC                       перейти в режим просмотра
DEL                       удалить следующий символ
:<n>                      перейти на строку #n
%                         перейти к парной скобке
:e **/filename.c          редактировать файл (с поиском по имени)
:w [fname]                записать изменения
:wa                       сохранить изменения во всех файлах
:q                        выйти из редактора
:q!                       выйти из редактора, не сохраняя изменения
:color <name>             выбор цветовой схемы. цветвые схемы:
                            /usr/local/share/vim/vim72/colors/*.vim
:pwd                      текущий каталог
:cd [path]                перейти в другой каталог
:!команда                 выполнить команду — man, git, и так далее
                            стрелочками веерх и вниз можно автодополнять
                            команды и искать по истории
CTR+p или CTR+n           автоматическое дополнение текста
                            (в режиме редактирования)
CTR+r,=,<expr>            вставить выражение, например 5*2 — 3
                            (в режиме редактирования)
CTR+u, CTR+d              Page Up / Page Down
CTR+y, CTR+e              Перемотка вверх/вниз без движения курсора               

== Подсветка синтаксиса ==
:syntax on                включить подсветку
:syntax off               выключить подсветку (по умолчанию)

== Перенос строк ==
:set wrap                 разрешить word wrap (по умолчанию)
:set nowrap               запретить word wrap

== Печать ==
:ha[rdcopy]                   распечатать документ
:set printoptions=duplex:off  отключить двустороннюю печать

== Сворачивание ==
zc                        свернуть блок
zo                        развернуть блок
zM                        закрыть все блоки
zR                        открыть все блоки
za                        инвертирование
zf                        см :set foldmethod=manual
:set foldenable           включить свoрачивание
:set foldmethod=syntax    сворачивание на основе синтаксиса
:set foldmethod=indent    сворачивание на основе отступов
:set foldmethod=manual    выделяем участок с помощью v и говорим zf
:set foldmethod=marker    сворачивание на основе маркеров в тексте
:set foldmarker=bigin,end задаем маркеры начала и конца блока

== Маркеры ==
ma                        установить локальный маркер a
mB                        установить глобальный маркер B
`c                        перейти к локальному маркеру c
`0                        вернуться на позицию, на которой закончили
                            работу при закрытии vim
:marks                    просмотр маркеров
set viminfo=’1000,f1      маркеры пишутся в ~/.viminfo, восстанавливаясь
                            при следующем запуске vim. маркер » хранит
                            последнюю позицию курсора в файле
== Сессии ==
mksession file.session    сохранить текущую сессию
source file.session       восстановить ранее сохраненную сессию

== Макросы ==
qa                        записать макрос с именем a
q                         в режиме записи макроса: закончить запись
@a                        выполнить макрос с именем a
@@                        повторить последний макрос

== Регистры ==
«ayy                      скопировать строку в регистр a
«bdd                      вырезать строку и поместить в регистр b
«С2d                      вырезать три строки и дописать в конец
                            регистра C
:reg [name1][name2][...]  просмотреть содержимое регистров

== Выделение ==
v + hjkl                  выделение текста
SHIFT + v                 выделить строку
CTR + v                   выделение прямоугольника
p                         вставить
y                         копировать
d                         удалить
gu                        к нижнему регистру
gU                        к верхнему регистру

== Отступы ==
[#]>                      сдвинуть выделенное вправо
[#]<                      сдвинуть выделенное влево
[#]>>                     сдвинуть строку вправо
[#]<<                     сдвинуть строку влево
set tabstop=#             для табуляции используется # пробелов
set shiftwidth=#          в командах отступа используется # пробелов 
set [no]expandtab         заменять ли табуляцию на соответствующее
                            число пробелов

== Поиск и замена в файле ==
/Выражение               поиск выражения в файле
\cВыражение              поиск без учета регистра
n                        следующее совпадение
N                        предыдущее совпадение
:%s/foo/bar/gi           замена строк, см http://eax.me/regular-expr/

== Поиск по всему проекту ==
:vimgrep /EXPR/ **/*.c   поиск по регулярному выражению
:copen                   показать все найденные места
:close                   скрыть все найденные места
:cn                      переход к следующему результату
:cp                      переход к предыдущему результату

== Нумерация строк ==
:set number              включить нумерацию строк
:set nonumber            отключить нумерацию строк

== Работа с вкладками (a.k.a табами) ==
:tabnew [fname]          создать таб
:tabs                    вывести список табов
:tabn                    следующий таб
:tabp                    предыдущий таб
<n>gt                    перейти на таб #n
gt                       следующий таб
gT                       предыдущий таб
:tabm +1                 переместить таб вперед на одну позицию
:tabm -1                 переместить таб назад на одну позицию
:tabm 2                  переместить таб на заданную позицию
                           (нумерация начинается с нуля)

== Работа с окнами ==
:split                   горизонтальное разбиение
:vsplit                  вертикальное разбиение
Ctr+W, затем
  с                      закрыть окно
  +-                     изменение высоты текущего окна
  <>                     изменение ширины текущего окна
  =                      установить равный размер окон
  hjkl или стрелочки     перемещение между окнами

== Проверка орфографии ==
    mkdir -p ~/.vim/spell
    cd ~/.vim/spell
    wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.sug
    wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.spl
    wget http://ftp.vim.org/vim/runtime/spell/en.ascii.sug
    wget http://ftp.vim.org/vim/runtime/spell/en.ascii.spl

:set spell spelllang=ru,en       включить проверку орфографии
:set nospell                     выключить проверку орфографии
]s                               следующее слово с ошибкой
[s                               предыдущее слово с ошибкой
z=                               замена слова на альтернативу из списка
zg                               good word
zw                               wrong word
zG                               ignore word

== Работа с кодировкой ==
e ++enc=<имя кодировки>         Редактирование файла в ??? кодировке
w ++enc=<имя кодировки>         Сохранить файл в новой кодировке
set fileencodings=utf-8,koi8-r  Список автоматически определяемых
                                  кодировок в порядке убывания
                                  приоритета

== Другое ==
:set [no]wildmenu          При авто-дополнении в командной строке над
                             ней выводятся возможные варианты
:set list                  Отображать табуляцию и переводы строк
q:                         История команд
.                          Повторение последней команды

Решение проблемы: nginx: [emerg] listen() to 0.0.0.0:80 failed (98: Address already in use)

link

Сегодня при попытке обновить конфигурацию nginx, вылетела ошибка:

# /etc/init.d/nginx reload

...
nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
nginx: configuration file /etc/nginx/nginx.conf test failed

Ну а когда сделал так:

# /etc/init.d/nginx restart

то с той же ошибкой nginx уже не запустился.

Из описания ошибки следует, что 80-ый порт занят, поэтому nginx не может запуститься:

# netstat -nap | grep 80

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4658/apache2
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 488/nginx

Исправляем ситуацию, убив подвисший процесс на 80-ом порту:

# fuser -k 80/tcp

Запускаем nginx:

# /etc/init.d/nginx start

Starting nginx: nginx.

find php

link

I would recommend creating a new test.php files and inserting this code:

<?php
phpinfo();
?>

Then browse to test.php in a browser. This should give you a lot of information on php.

If you installed via an rpm also try

 rpm -ql php

or

 find / -name php.ini

ssh root

Конфиг вашего SSH хранится в /etc/ssh/sshd_config.
Открыть можно, скажем через редатор nano

# nano /etc/ssh/sshd_config

В нем
PermitRootLogin no

Перед этим создайте пользователя который имеет доступ к SSH, а то не зайдете никогда.

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

# su -

https://habr.com/company/ruvds/blog/314166/

Данные последнего входа в систему

Выясните данные последнего входа в систему. Делается это с помощью команды lastlog.

$>lastlog

▍История команд

Взгляните на историю команд, узнайте, когда именно их вводили:

$>history

Если список команд выводится без даты – настройте соответствующие параметры утилиты history.

▍Журнал auth.log

Следующий способ проверки – просмотр файла /var/log/auth.log. Например, с помощью такой команды:

$>sudo vi /var/log/auth.log

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

▍IP-адреса

Для того, чтобы выяснить IP-адреса, с которых подключались к серверу, воспользуйтесь такой командой:

$>zgrep sshd /var/log/auth.log* | grep rhost | sed -re 's/.*rhost=([^ ]+).*/\1/' | sort –u

▍Журналы Apache

Проверьте журналы Apache:

$>sudo vi /var/log/apache2/access.log
$>sudo vi /var/log/apache2/error.log

▍Поиск подозрительных процессов

Если вы уверены в том, что сервер взломан, разыщите процесс злоумышленника. Например, список всех процессов можно получить такой командой:

$>ps aux | less

▍Список заданий cron

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

$>crontab -l | grep -v ‘^#’

Независимо от того, выявила ли проверка попытки взлома, безопасности много не бывает. Поэтому вот – несколько советов по защите сервера.

Защита

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

▍Запрет входа root-пользователей по SSH

Для повышения уровня безопасности сервера стоит запретить вход root-пользователей по SSH.

$>sudo vi /etc/ssh/sshd_config
PermitRootLogin no

▍Автоматические обновления

Включите автоматические обновления безопасности с использованием пакета unattended-upgrades. Сначала его надо установить:

$>sudo apt-get install unattended-upgrades

Следующий шаг – настройка:

$>sudo dpkg-reconfigure -plow unattended-upgrades

Пакет можно вызвать и самостоятельно:

$>sudo unattended-upgrade

▍Настройка блокировок

Установите пакет fail2ban. Для того, чтобы блокировать с его помощью подозрительных SSH-пользователей, воспользуйтесь этим руководством, поле чего настройте систему отчётов.
Для того, чтобы узнать, сколько раз fail2ban заблокировал некий IP-адрес, воспользуйтесь такой командой:

$>sudo awk '($(NF-1) = /Ban/){print $NF}' /var/log/fail2ban.log | sort | uniq -c | sortn

Для того, чтобы просмотреть весь файл журнала fail2ban, введите следующее:

$>sudo zgrep -h "Ban "/var/log/fail2ban.log* | awk '{print $NF}' | sort | uniq –c

Для поиска проблемных подсетей подойдёт такая команда:

$>sudo zgrep -h "Ban " /var/log/fail2ban.log* | awk '{print $NF}' | awk -F\. '{print $1"."$2"."}' | sort | uniq -c | sort -n | tail

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

Например, вот как заблокировать подключения к sshd-порту из подсети 221.229.*.*:

$>sudo iptables -I INPUT -p tcp -s 221.229.0.0/255.255.0.0 --dport ssh -j REJECT --reject-with tcp-reset

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

$>sudo iptables -vnL INPUT --line-numbers

Для того, чтобы правила iptables сохранялись после перезагрузки сервера, установите в Ubuntu пакет iptables-persistent.

$>sudo apt-get install iptables-persistent
$>cat /etc/iptables/rules.v4

Если вы отредактировали правила iptables, используйте такую команду:

$>sudo bash -c "iptables-save  > /etc/iptables/rules.v4"

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

update iptables

iptables -L -n --line-numbers

удалить по названию группы и номеру строки:

iptables -D NAME_OF_CHAIN NUMBER_LINE

удалить группу:

iptables -X NAME_OF_CHAIN
service iptables save
service iptables restart

backup:

iptables-save > /etc/iptables.rules

vim /etc/init.d/iptables

    echo -n $"${IPTABLES}: Setting chains to policy $policy: "
    ret=0
    for i in $tables; do
        echo -n "$i "
        case "$i" in
+           security)
+               $IPTABLES -t filter -P INPUT $policy \
+                   && $IPTABLES -t filter -P OUTPUT $policy \
+                   && $IPTABLES -t filter -P FORWARD $policy \
+                   || let ret+=1
+               ;;
            raw)
                $IPTABLES -t raw -P PREROUTING $policy \
                    && $IPTABLES -t raw -P OUTPUT $policy \
                    || let ret+=1
                ;;

clock is fast — ntp

link

If you got a warning message from linode :

Your system’s clock is fast. Please ensure that ntp is installed and running.

How to solve the problem?

1. Change Time Zone (TZ)

$ sudo cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime

$ sudo vim /etc/sysconfig/clock

change Etc/UTC to Asia/Taipei or yourself

2. Install NTP

$ sudo vim /etc/ntp/step-tickers:

$ sudo service ntpd restart

install php 5.6

link

CentOS/RHEL 7.x:

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

CentOS/RHEL 6.x:

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
yum install php56w php56w-opcache php56w-gd php56w-imap php56w-pdo php56w-mysql php56w-xml php56w-common php56w-process php56w-mbstring php56w-cli php56w-ldap php56w-devel php56w-fpm php56w-mssql php56w-magickwand php56w-mcrypt php56w-odbc php56w-pear php56w-shout php56w-snmp php56w-soap php56w-tidy php56w-xmlrpc

vi /etc/php.ini

files.upload_max_filesize = 100M 
post_max_size = 100M 
cgi.fix_pathinfo = 0 
chkconfig --levels 235 php-fpm on
/etc/init.d/php-fpm start

view install mysql in sustem and reinstall

rpm -qa | grep mysql
find / -name mysql-community-libs-5.7.9-1.e17.x86_64
yum install mysql mysql-devel mysql-libs mysql-server php-mysql linode-longview perl-DBD-MySQL php-cli php-fpm php-gd php-imap php-ldap php-magickwand php-mbstring php-mcrypt php-mssql php-odbc php-pdo php-pear php-process php-shout php-snmp php-soap  php-tidy php-xml php-xmlrpc php-common

PS may be problems without  compat-mysql51-5.1.73-1.el6.remi.x86_64