Skip to content

Instantly share code, notes, and snippets.

@delminskii
Last active August 29, 2015 14:17
Show Gist options
  • Save delminskii/1af6ed1d634b3e9f7732 to your computer and use it in GitHub Desktop.
Save delminskii/1af6ed1d634b3e9f7732 to your computer and use it in GitHub Desktop.
// -----------------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