Last active
August 29, 2015 14:17
-
-
Save delminskii/1af6ed1d634b3e9f7732 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// -----------------GIT BASE COMMANDS----------------- | |
/* | |
Установить имя и логин для гита | |
*/ | |
git config --global user.name "Ivanov Ivan" | |
git config --global user.email "ivanov@gmail.com" | |
/* | |
Параметры окончания строк (for Unix-like) | |
*/ | |
git config --global core.autocrlf input | |
git config --global core.safecrlf true | |
/* | |
Зафиксировать гит для наблюдением за текущей директорией; | |
Создастся .git (чекать ls -a например) | |
*/ | |
git init | |
/* | |
Добавить некоторый файл для наблюдения гитом за ним | |
*/ | |
git add someFileWithExtension | |
/* | |
коммит это сохранение состояния проекта в репозиторий. | |
Прелесть в том, что можно вернуться к любому из коммитов, а потом обратно на последний | |
*/ | |
git commit -m "My first commit! File1 added!" | |
/* | |
прочекать текующее состояния репы | |
*/ | |
git status | |
/* | |
добавление изменений в индекс гита | |
*/ | |
git status // check for new changes | |
git add // git checkout for canceling | |
/* | |
get git history (ie log) | |
*/ | |
git log | |
/* | |
создать рабочую копию локальной репы | |
*/ | |
git clone some/path/here | |
// git clone user@host:some/path/here // для remote-клонирования | |
/* | |
законнектить локальный репозиторий к remote-repository | |
*/ | |
git remote add origin <server> | |
/* | |
послать изменения на удаленный репозиторий; master - гл.ветка | |
*/ | |
git push origin <branch> | |
// example: git push origin master | |
/* | |
создать новую ветку от текующей и перейти туда: | |
*/ | |
git checkout -b newBranchNameHere | |
/* | |
переход к ветке; например, к master | |
*/ | |
git checkout master | |
/* | |
delete branch | |
*/ | |
git branch -d someBranchName | |
/* | |
мержить текующей ветки с active branch (i.e. master) | |
*/ | |
git merge branch | |
/* | |
получить различия между 2 бранчами (ветками) | |
*/ | |
git diff <src_branch> <target_branch> | |
/* | |
если что-то пошло не так, то можно | |
заменить последние изменения | |
*/ | |
git checkout -- <fileName> | |
// | |
почитать, если еще непонятно: http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/ru/ch01.html | |
// | |
// -----------------USEFUL BASH USECASE----------------- | |
// get list of directories in the current directory: | |
ls -d */ | |
// get listing of all filesystems with mounting devices | |
df // option -h for human-readable output | |
// сделать жесткую ссылку на файл1 | |
ln file1 some/path/linkName | |
// сделать символичную ссылку на файл1 | |
ln -s fil1 some/path/linkName | |
// find all (for example)python files in some/directory | |
// note: also it's possible: find ./ ../ -name "*.extension" | |
// for search in ./ & ../ | |
find some/directory -name "*.py" | |
// найти все файлы с использованием регулярки | |
find some/directory -type f -regex "regularExpressionHere*?." | |
// получить последние n (for exampel 10 lines) из файла | |
tail -n 10 path/to/fileName | |
// Добавление нового юзера | |
/* | |
options: !!! man useradd !!! | |
-d - set home_directory for user | |
-m - create newuser's home_directory now! | |
example for newuser called IVAN: | |
sudo useradd -d /home/ivan -m /home/ivan ivan | |
// также можно сразу припилить юзера к группе: | |
напр: sudo useradd -g <group-name> ivan_ivanov | |
*/ | |
sudo useradd nickNameOfNewUser | |
// установить пароль для юзера | |
sudo passwd userName | |
// Изменить пароль для пользователя (напр., ivan) | |
sudo passwd ivan // затем ввести новый пароль | |
// удалить пользователя ivan | |
sudo userdel ivan | |
// посмотреть аттрибуты пользователя (насколько пОлно он может заюзать мощности машины): | |
// лучше на примере: | |
Рассмотрим использование ulimit на примере ограниений пользователя game | |
Итак, добавим в конец /etc/profile: | |
if [ "$USER" = "game" ]; then | |
ulimit -c 0 # Запрещаем создавать core файлы | |
ulimit -d 48000 # Ограничиваем максимальный размер сегмента данных в 48 MB | |
ulimit -s 8192 # Ограничиваем максимальный размер стэка в 8 MB | |
ulimit -m 48000 # Ограничиваем максимальный размер резидентной части процесса (находящейся в ОЗУ) в 48 MB | |
ulimit -u 64 # Ограничиваем максимальное число запущенных этим пользователем процессов. | |
ulimit -n 128 # Ограничиваем максимальное число открытых файлов. | |
ulimit -f 100000 # Ограничиваем максимальный размер создаваемого файла в 100 MB | |
ulimit -v 100000 # Ограничиваем максимальный размер используемой виртуальной памяти в 100 MB | |
fi | |
# !!!! Для просмотра текущих установок нужно набрать ulimit -a | |
// позволяет войти пользователю в систему, не завершая сеанс текущего пользователя (опции смотреть в мане, ну или su --help) | |
su (от set user) - можно рассматривать как команду переключения пользователей, но это не совсем правильно... | |
// если к su не указывать параметров, то подразумевается запуск шелла с правами рута | |
Пример: su tak -c 'ps aux -H' - выполнить команду ps aux от пользователя с логином tak | |
// !!! Из под рута например можно запустить шелл от любого пользователя (и даже без пароля!): su tak -c bash | |
// sudo - назначить (раздать) юзерам привелегии. Напр., разрешить выполнять пользователю васе выполнять mount, dev, flash на такой-то | |
// каталог. | |
// от рута. Конфиг - /etc/sudoers | |
Пример: sudo ps aux -H и далее ввести сам пароль себя (своего акка\логина) (далее sudo кеширует введенный пароль на какое-то время). | |
После выполнения можно посмотреть, что дочерний процесс - | |
это sudo, выполненный от рута | |
// sudo идет в конфиг-файл /etc/sudoers, проверяет, можно ли из под какого юзера\группы запускать; если можно, то спрашивает пароль | |
// т.е. те команды, которые прописаны в конфиге админом, - только ИХ обычным пользователям можно запускать из-под рута | |
// Напр., в ubuntu-based дистрах при установке первого юзера, который добавляется, у него есть пермиссии (права) НА ВСЁ из под | |
// пользователя root, т.е. фактически первый пользователь после рута - как администратор. Но если он не использует sudo - он обычный | |
// пользователь, а когда ему надо выполнить суперпользовательскую команду - он добавляет префикс sudo | |
// !!!! Инфа о всех юзерах, группах см. здесь: | |
/etc/passwd, (UIDs and more) - главная, наверное... | |
/etc/group, (GIDs and more) - <имя_группы>:x:GID и далее через запятую логины юзеров в этой группе | |
// для группы пользователя также описана его первичная группа | |
/etc/shadow, (пароли .юзеров) | |
/etc/gshadow (пароли для групп, но не нужно заставлять юзеров, состоящих в N группах вводить N + свой пароли =))) | |
Формат /etc/passwd: | |
login:x:UID:GID(первичной группы):<формальное описание (какая-то строка)>:<домашняя_папка>:<первая запущенная прога при входе> | |
x - означает, что пароль хранится в зишифр. виде на отдельном файле | |
// файл /etc/shadow хранит зашифрованные пароли, даже читать можно только от рута | |
login:<хеш-сумма зашифрованного пароля> | |
// посмотреть инфу о себе (в терминале): | |
id (в т.ч. первичная группа, после UID) | |
// глянуть список пользователей, находящихся в системе | |
w | |
// создание групп в linux: | |
groupadd <имя группы> | |
// посмотреть группы (содержимое файла /etc/group) | |
напр., sudo less /etc/group | |
// посмотреть список групп текущего пользователя: | |
groups | |
// добавление существующего юзера ivan в группу developers: () | |
// a - append, -G <group-name> | |
usermod -a -G <group-name> ivan | |
//управление правами доступа к ресурсу: (chmod), | |
например сделать файл1 исполняемым: chmod +x path/to/fil1 | |
//почитать: https://ru.wikipedia.org/wiki/Chmod | |
// изменение владельца пользователя (change owner - chown) | |
пример: сделать какого-либо юзера (напр., pashaivanov) владельцем файла1 | |
chown pashaivanov path/to/file1 | |
// также см. https://ru.wikipedia.org/wiki/Chown | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment