Size: a a a

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

2017 July 02
Админим с Буквой
Сделать для вас небольшо обзор-введение по тому, как пользоваться git-ом?
источник
2017 July 03
Админим с Буквой
кратенький экскурс в разницу повышении привилегий.

итак, у нас есть 2 основных команды, чтобы выполнить тем или иным способом команду от другого пользователя: sudo и su.

su (1)               - change user ID or become superuser
sudo (8)             - execute a command as another user

1. sudo <command>
выполнить команду, согласно правилам, указанным в файле /etc/sudoers. Обычно, стандартное правило - выполнить любую команду от имени суперпользователя.  Ввести пароль пользователя из под которого выполянется команда.
2. sudo -u <user> <command>
выполнить команду от имени пользователя <user>. Ввести пароль пользователя из под которого выполянется команда.
3. sudo -s [anything]
запустить shell с вашим собственным окружением, но правами root. Полезно, когда вы хотите использовать ваши alias'ы из .bashrc или gitconfig. Ввести пароль пользователя из под которого выполянется команда.
4. su или su root
стать суперпользователем. нужно ввести пароль root
5. su <user> <command>
выполнить команду от имени пользователя <user>. нужно ввести пароль <user>
6. sudo su
выполняется команда su от имени суперпользователя. т.е. без иных аргументов, вы изменяете пользователя на root.  Ввести пароль пользователя из под которого выполянется команда.

Выводы: на первый взгляд операция повышения привилегий выполняется одна и таже, однако при этом в разных ситуациях нужно вводить разные пароли, от разных пользователей. При этом sudo - тонко настраиваемая подсистема, где можно указывать кто какую команду может вводить, при повышении привилегий.
источник
Админим с Буквой
командой
~username/script.sh
можно выполнить скрипт в домашней директории пользователя без полного указания пути к нему
источник
Админим с Буквой
Для того чтобы создать temp-исполняемый файл, который выполнится в bash - нажмите Ctrl+x Ctrl+e, после чего откроется ваш любимый редактор, где можно написать любой скрипт. По закрытию этого файла все записанное внутри выполнится. Файл одноразовый. отредактировать повторно не получится
источник
2017 July 04
Админим с Буквой
git часть 1

Абсолютно уверен, что лучше чем git book про самы азы гита я не расскажу, потому имеет смысл только лишь накидать сюда накидать полезных комманд и отсылки на то где прочитать про это подробнее.

Где прочитать об азах git? (на руском и английском)
https://git-scm.com/book/ru/v1/Введение

Серьезно, стоит потратить несколько часов на то чтобы прочитать хотя бы 1-2 главы этой книги. И мне не придется заниматься копипастой.

Создание пустого репозитория

git init
git add .
git commit m 'initial commit'

Этими командами создается .git папка с конфигами, затем начинаются отслеживаться все файлы (начиная от корня выполнения команды) и затем выполняется создание слепка состояния (commit) c комментарием.

Если у вас уже был свой проект - то появится первоначальный слепок вашей работы и далее все файлы будут отслеживаться.

Хорошей практикой является пользоваться следующей командой:
git add -p
Которая заставляет вас вручную подтверждать каждое изменение. Удобно видеть, что вы где-то могли напортачить.

Для того чтобы выгрузить свой проект на какой либо git сервер, нужно прописать так называемый. remote. В котором ханится информация о том, по какому адресу и протоколу находится удаленный репозиторий. При этом удаленный сервер создает bare-репозиторий, т.е пустой.
git remote add origin git@gitlab.ru/repo/repo.git
где origin - название, которым вы будете различать разные удаленые сервера. Таким образом пушить можно не в один удаленный сервер:
git push -u origin master
master - главная ветка. Если origin один, и вы хотите запушить текущую ветку, то команда сокращается всего лишь до
git push.

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

Создание новой ветки:
git branch new_branch
Создать ветку и переключиться:
git checkout -b new_branch
На какой я сейчас ветке?
git branch
Что вообще сейчас происходит?
git status
А какие коммиты делались в последнее время?
git log --graph --decorate --pretty=oneline --abbrev-commit
Я внес какие-то изменения, а как бы посмотреть что я сделал?
git diff

Я ошибся с коммитом, что делать?
Любое действие можно переиграть. Если вы поняли, что забыли что-то в проекте подправить, можно поступить так:
<внесение правок, git add file\folder, или еще что-нибудь>
`git commit —amend'
Эта команда изменит последний коммит и примет в него все ваши изменения. в итоге коммит останется один и тот же. Если ничего не изменять, но ввести такую команду, то можно просто изменить комментарий к коммиту.
Если коммит уже отправили на сервер, то нужно его переиграть:
git push -f

Я нахеровертил в проекте, как мне откатиться, сохранив тестовую версию?
Вообще этот случай скорее уникальный, т.к. вы обычно должны работать в соседних от master ветках, однако если уж случилось, то..
git log --graph --decorate --pretty=oneline --abbrev-commit
покажет вам ваше дерево коммитов - выберите тот, к которому хотите откатиться
git checkout <commit>
git checkout -b trash
git add .
git commit -m 'trash commit'
Мы переключились на то состояние, когда все еще не было сломано, создали ветку trash, переключившись в нее (-b), добавили файлы и закоммитили.
дальше.

Я закончил разработку, как слить ветки?
git checkout master
git merge <branch>

Кто-то порушил мой репозиторий своими тупыми коммитами! Как мне откатиться к нормальному?
В git существует возможность взять какой-то из коммитов и применить его на репозиторий, при этом это будет новый, самый последний коммит. на который будет указывать HEAD.
git cherry-pick <commit id>
git push

Я сделал 100500 коммитов, как мне теперь их слить в один?
Выберите коммит до которого (не включая этот) вы хотите слить все остальные
git rebase -i <commit id>
откроется редактор, где в столбец будут коммиты, которые надо слить. Команду перед нужным коммитом указать - reword, а перед остальными - f. это оставит только один комментарий нужного коммита.
источник
Админим с Буквой
Как мне посмотреть состояние файла, которое было 4 коммита назад?
git show HEAD~4:/path/index.html
Просто выведет файл на экран. HEAD указан как пример. вместо него можно конкретный <commit id>.

Я внес какието изменения, но решил что мне это на пол не упало, хочу все отменить.
git reset --hard
скинет состояние до последнего коммита.

—---—
Приведенные команды следует использовать осторожно и с пониманием. Не все из них можно применять при совместной разработке, вы можете потом не отмыться от конфликтов!
источник
Админим с Буквой
Если у кого-то есть желание постить полезности в канал, обращайтесь за правами)
источник
2017 July 06
Админим с Буквой
#php connectors for databases

pp5-mysql - mysql
php5-odbc - MSSQL
php5-sybase -MSSQL
источник
Админим с Буквой
Информация о файле
file /bin/ls

/bin/ls: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=8d0966ce81ec6609bbf4aa439c77138e2f48a471, stripped

print shared library dependencies - Какие библиотеки подгружаются в момент запуска bin
ldd prints the shared libraries required by each program or shared library specified on the command line.
ldd /bin/ls
/mnt/c/Users/info# ldd /bin/ls
       `linux-vdso.so.1 =>  (0x00007fffc4048000)
       libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fb655ac0000)
       libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007fb6558b0000)
       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb6554d0000)
       libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fb655290000)
       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb655080000)
       /lib64/ld-linux-x86-64.so.2 (0x00007fb655e00000)
       libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007fb654e60000)

ltrace - показать библиотечные вызовы
ltrace /bin/ls

strace - intercept and record the system calls. - Показать библиотечные вызовы
strace /bin/ls [-e filter]

# strace -e open /bin/ls
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libacl.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libpcre.so.3", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/proc/filesystems", O_RDONLY)     = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
1.py  2.py  dump  tcpdump.sh
+++ exited with 0 +++

dpkg - Find package(s) owning file(s)
dpkg -S /etc/init.d/apache2

List files owned by package(s).
dpkg -L strace

apropos - Find package(s) owning file(s)
источник
Админим с Буквой
Как закрыть зависшую ssh сессию
Бывают случаи, когда удаленный сервер уже недоступен, а ssh в консоли все еще висит, но уже не отвечает.
Чтобы закрыть такую сессию, при этом не использовать kill, и не закрывать сам терминал, нужно просто нажать следующую комбинацию:
Enter ~ .
у ssh есть набор команд, воспринимаемых после нажатия enter, а затем символа тильда. точка завершит текущую сессию.
источник
Админим с Буквой
#ssh
источник
2017 July 07
Админим с Буквой
источник
Админим с Буквой
Красивый дефейс, который вы пропустили =)
источник
Админим с Буквой
И, да, в свете последней статьи bo0om (https://xakep.ru/2017/07/06/safari-localfile-read/), это не попытка вас наебать) а просто страничка)
источник
Админим с Буквой
источник
Админим с Буквой
источник
2017 July 10
Админим с Буквой
источник
Админим с Буквой
источник
2017 July 11
Админим с Буквой
Чтобы использовать переменные в sed, выражение нужно заключить в двойные кавычки: sed -i "s/$var/smth_new/g" ./file
источник
Админим с Буквой
источник