Skip to content

Instantly share code, notes, and snippets.

@Farrukhraz
Last active April 19, 2021 17:49
Show Gist options
  • Save Farrukhraz/1141abb5cfbd4932a81478dea666cfbd to your computer and use it in GitHub Desktop.
Save Farrukhraz/1141abb5cfbd4932a81478dea666cfbd to your computer and use it in GitHub Desktop.
bash commands
1.
ls -la /etc
ls -la /proc
ls -la /home
___________________________________________
2.
cat - в основном служит для чтения файла и объяденения содержимого нескольких файлов в один.
cat /etc/adduser.conf > file1
cat /etc/adduser.conf > file2
cat file1 file2 > file_total
cat file_total
mv file_total file_final
___________________________________________
3.
touch file1
cat /etc/adduser.conf > file2
echo 'any text' > file3
mkdir tmp
mv file* ./tmp
rm -r ./*
___________________________________________
4.
ls -ld .* | grep -v total | grep -v "\.$" | wc -l
___________________________________________
5.
ls -p /etc | grep -v /$ | cat > std_okey 2> std_err
___________________________________________
6.
pass
___________________________________________
7.
1. Создать файл file1 и наполнить его произвольным содержимым. Скопировать его в file2.
Создать символическую ссылку file3 на file1. Создать жесткую ссылку file4 на file1.
Посмотреть, какие айноды у файлов. Удалить file1. Что стало с остальными созданными файлами?
Попробовать вывести их на экран.
ls -lah /etc > file1
cp file1 file2
ln -s file1 file3
ln file1 file4
У file1 и file4 одинаковые айноды.
rm file1
file3 отображается в директории красным, но более не доступен для чтения.
file4 стал "оригиналом", вместо file1
file2 с эти файлом нечего не изменилось
___________________________________________
2. Дать созданным файлам другие, произвольные имена. Создать новую символическую ссылку.
Переместить ссылки в другую директорию.
rename 's/file/test/' file*
ln -s test2 test5
mkdir tmp
mv test5 tmp/ # После перемещения ссылка сломаласть
___________________________________________
3. Создать два произвольных файла. Первому присвоить права на чтение, запись для владельца
и группы, только на чтение для всех. Второму присвоить права на чтение, запись только для
владельца. Сделать это в численном и символьном виде.
touch file{1..2}
chmod 664 file1
chmod 600 file2
chmod u-rwx,g-rwx,o-rwx file1 file2 # заберем все права
chmod u+rw,g+rw,o+r file1
chmod u+rw file2
___________________________________________
4. Создать пользователя, обладающего возможностью выполнять действия от имени суперпользователя.
sudo useradd -ou 0 -g 0 new_admin
### Домашка:
-rw-...... # this is file (start with "-")
ls -ld # show only dirs' names (-d). But not their content
ls -lad \.* # показать скрытые файлы
ls -lad \.* | grep -v ^total$ # вывести всё кроме total # -v "" (вывести всё что не содержится в "тут"); ковычки нужны только если это регулярок
ls -lad \.* | grep -v ^total$ | grep -v "\.$" # не выводить "." и ".."
___________________________________________________________________________________________________________________
Lecture first part:
id user_login # show user info
uid # идентификатор пользователя
у процесса есть uid. Это uid пользователя, чей это процесс
Пользователи делятся на 2 группы
1) root
2) все остальные
id root # у "root" uid = 0 (пользователь root)
others:
uid < 1000 служебные программы
uid >= 1000 пользователи # у самого первого (главного простого) пользователя uid = 1000
___________________________________________________________________________________________________________________
У каждого файла есть свой владелец. Это тот кто создал этот файл.
3 типа прав: права на чтение/запись/исполнение
ls -l если ввести то:
переслушать 1:00 - 1:10
drwxrwxrwx 1 farrukhraz farrukhraz 4096 Mar 22 19:24 media
права^ владелец^ группа^
drwxrwxrwx (read/write/execute)
rwx... для владельца; ...rwx... для группы; ...rwx для всех остальных
Где храниться инфа о пользователях?
cat /etc/passwd # файл где храняться инфа о пользователях
cat /etc/group # файл где храняться инфа о группах пользователей
cat /etc/shadow # файл где храняться хэши
/etc/passwd uid = (user id)
каждый пользователь описывается одной строкой. data делится ":". user_name:password:uid:any_coment:/home/path/dir/:
cat /etc/group gid = (group id)
каждая группа описывается одной строкой. "group:password:gid"
Аутенфикация - проверка есть ли на сервере такой пользователь и его пароль, проходим
Авторизация - проверка есть ли у пользователя доступ до определенного файла
Хэш - это хэш функция. Хэш функция это функция без обратного преобразования.
!!!! Посмотреть что такое хэш/хэш-функция в linux.
______________________________
Забрать/добавить права у "user/group/others"
chmod o-w file_name # у "others" забрать права "w" (записи)
chmod u+w file_name # "user"'у добавить права "w" (записи)
chmod u+rwx,g+rw,o-rwx ./file # Разом дать почти все права "root" и "user", а забрать все права у "others"
______________________________
Побитовое присвоение прав:
111 - считается справа, 1-я справа = 1, 2-я справа = 2, 3-я справа = 4, следовательно 111 = 7
-rw-r--r-- == 644; -rw-rw-r-- = 664
-rwxrwxrwx ==> chmod 444 ==> -r--r--r--
______________________________
Hard links
ln целевой_файл файл_ссылка # hard link
ln -s целевой_файл файл_ссылка # soft link
Всё что мы видим при вызове ls -l, это ссылки в память, в которой она
Всё информация файла храниться в айнодах
ls -li ### 1195317 -rw-rw-r-- 1 user user 21 мар 23 21:17 1.py
^ inode
[command] --help # manual of [command] not as big as "man"
man [command] # manual of [command]; (not built in program)
ls -lah # list of files; -l list; -a show hidden files; -h human readable
cd folder # go some folder
cd .. # go to parent dir
cd ./program # run script
mkdir folder # create folder
touch file.txt # create file
echo 'smth' >> file.txt # add some text to file
mv file/folder # move/rename file/folder
cp file folder/new_file # create a file copy with different name
cp file folder/ # if file name in distination path is empty than file will be copied with the same name
cp -r folder new_folder # create a folder copy with different name
cat file # read file content. Content will be displayed in current window
less file # read file content. Content will be displayed in new window. To quit press "q".
more file # read file content. Content will be displayed in new window. "less" command is faster than this 'cause it doesn't load entire file.
rm file # remove file
rm -r folder # remove directory
rmdir folder # remove empty directory
head file # show first 10 lines of the file
head -3 file # show first 3 lines of the file
tail file # show last 10 lines of the file
tail -f file # show last 10 lines of the file and constantly update them
wc -l -w -c file # count -w wordc; -l lines; -c charecters in the given file
grep any_text /path/to/file # find 'any_text' in file in the given path
grep text /path/ | wc -l # count how many lines grep found
find
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment