linux操作基础

Posted fqh202

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux操作基础相关的知识,希望对你有一定的参考价值。

linux的基本原则

1、由目的单一的小程序组成,组合小程序完成复杂任务;
2、一切皆为文件;
3、尽量避免捕获用户接口;
4、配置文件保存为纯文本格式

linux系统组成

计算机硬件:cpu、硬盘等。

kernel:使得系统可以同时近似运行多个程序,仅仅是一个平台,将硬件的计算能力抽象出来以系统调用的方式(system call)交给其他上层软件;
window上有DLL(dynamic link library,动态链接库)
linux上是.so(shared object)

library_API:由于系统调用过于底层,库的作用就是将一个或者多个系统调用封装起来做成更高级的接口,无法独立执行,只有在被调用的时候才执行(共享库)。

开发环境:独特的用户界面,
图形化界面GUI,例如 Gnome_C、KED_C++、XFace;
CLI接口(命令行):Commond Line Interface,类别有shell、bash、csh、zsh、ksh、tcsh


bashell

一般在用户登录后会打开bash等应用。
进程:在每个进程看来,当前主机上只存在内核和当前进程,其实就是分区的概念。进程是程序的副本,是程序执行的实例,即为用户的工作环境不一样。
shell内也可打开shell,多层,多次启动shell命令,利用exit逐个退出当前shell,pstree可以查看层次。

命令历史
history:查看命令历史;
清空命令历史:-c
-d n offset:偏移量,从指定位置删除历史列表。
ls -a先显示隐藏文件,命令历史是保存在文件.bash_history中。
-w:保存命令历史至历史文件中。可以设置大小。环境变量HISTZISE,默认是1000条,echo $HISTSIZE可以查看。
使用技巧
!n:显示并执行第n条命令;
!-n:显示并执行倒数第n条命令;
!!:显示上一条命令, esc加.
!s:显示并执行最近一次以s开头的命令;

命令别名
alias cls=clear:修改clear命令为cls;
在shell中定义的别名仅在当前shell生命周期(进程)中有效;
alias:显示当前系统的所有别名;
撤销指定的别名:unalias cls
原命令:使用原来

命令替换
"":弱应用,可以实现变量替换;
‘‘:强引用,不完成变量替换;
`:命令替换;$(COMMAND),也可以使用反引号``COMMAND``:把命令中某个子命令替换成其执行结果的过程。echo "asdsad is $(pwd)":将pwd的执行结果显示在字符串中,注意字符串内容必须是双引号; 例如新建以当前时间命名的文件:touch file-$(date +%F-%H-%S).txt`

命令行编辑
光标跳转:ctrl+a跳到行首,ctrl+e跳到行尾,ctrl+u删除光标至行首,ctrl+k删除光标至行首,ctrl+l实现清屏;

文件名通配符globbing
*:任意长度的任意字符,例如ls a*3查找以a开头以3结尾的文件;
?:匹配任意单个字符;
[]:匹配指定范围内的任意单个字符,[a-zA-Z][A-Z][0-9],例如[0-9]*[0-9]匹配文件名以数字开头和结尾的文件;
[^]:非,例如[^0-9]以非数字开头的文件;
空白字符:[[:space:]][:space:]表示空白字符集;
[:lower:]:小写字符;
[:upper:]:大写字符;
[:alpha:]:大小写字符;
[:digit:]:数字;
[:alnum:]:数字和大小写;
[:punct:]:标点字符;
以上可以用man 7 glob查看;

管道,支持重定向

命令行展开

变量

编程

补全功能
命令补全和路径补全。


安全相关

用户名:使用标识。严格区分大小写,用户ID;
认证机制(Authentication):密码,指纹,虹膜等;
密码复杂性规则:例如6位密码:
数字:10^6
数字加字母:36^6
数字加大小写字母:62^6
再加上特殊字符:100^6;

密码使用规则
1、使用4种类别字符种至少三种;
2、足够长,大于7位;
3、使用随机字符串;
4、定期更换;
5、循环周期足够大;

用户权限管理

授权:Authorization
权限:root,student,visitor
用户切换:suswitch user ,例如su root切换到管理员模式。

审计:Audition

命令提示符:prompt,bash(shell)
#:root用户
$:普通用户;


命令

格式:命令(command)+选项(option)+参数(argument)。

选项:修改命令的执行特性:
短选项,-char,多个选项可以组合使用:-b -a == ‘-ab‘ ==‘--ba‘;用空格隔开;
长选项:--...不能使用空格。

参数:命令的作用对象,例如ls /root /bin也可以指定多个目录,显示两个目录下的内容。

命令类型
内置命令(shell内置):type 命令显示built in
外部命令:在文件系统中的某个路径下有一个命令名相同的可执行文件,例如type ls

环境变量:定义当前用户的工作环境:
printenv:显示当前工作环境;
path:显示工作路径,在其中查找命令,首次会在path中查找,随后会缓存起来。
hash:命令会存储起来,下次使用命令会优先在缓存中查找。内部是键值对格式,O(1),查找速度与数量无关!

变量:命名的内存空间,指向内存空间;
栈;
堆;

echo:显示行文本相关,默认结尾带换行符;
printf:必须手动指定换行符

Manual命令帮助

查看内置命令help Command
查看外部命令Command --help
利用man查看命令man chap_num command
查看命令手册,但是有很多章节,可以指定章节,通常章节有一下规则:
1:用户命令;
2:系统调用(/bin,/usr/bin,/usr/local/bin);
3:库调用;
4:特殊文件(设备文件);
5:文件格式
6:游戏
7:杂项(Miscellanceous)
8:管理命令(/sbin,/usr/sbin,/usr/local/sbin)。
例如:man 2 command:数字2显示章节的内容。

whatis command:查看read命令相关的章节。

man命令特点:在文件手册,以[]标识的内容可省略,以|表示多选一,<>必选内容,...可以出现多次。

MAN结构
NAME:命令名称以及功能简要说明;
SYNOPSIS:用法说明,包括可用的选项;
DESCRIPTION:命令功能的详尽说明;

翻屏快捷键
向后翻屏:space
向后翻一行:enter
向前翻屏:b
向前翻一行:k

查找命令
/keyword:向后搜索;
? keyword:向前搜索;
n:前一个
N:后一个

退出q

在线手册info command,主要是对man的补充,主要是历史事件之类的。

命令说明文件地址/usr/share/doc

google自己思考解决方案。


文件系统

rootfs:根文件系统。

根目录介绍

/boot:系统启动先关文件,如内核、initrd,以及grub(bootloader);

/dev:device,设备相关文件,提供设备访问入口,例如/dev/cdrom仅仅提供设备入口文件,不能cd访问,也不能直接执行,只能采取后面的挂载,关联media文件。
块设备:随机访问,数据块;
字符设备:线性访问,按照字符为单位。例如:显示屏、鼠标。
设备号:有主设备号(major)和次设备(minor),不同于一般文件,没有大小,显示为两个数字,逗号隔开;

/etc:配置文件主要存放路径;
/home:用户的家目录,默认为/home/USERNAME
/root:管理员的家目录;

/lib:库文件:
静态库文件:.a
动态库共享库:库文件加载到内存中可以被其他应用调动,只存在一份,例如.dll.so/lib/modules:内核模块文件。

/media:挂载点目录,例如将光盘放进光驱,那么就要将其关联到文件系统的某个树节点上,media就是起到关联文件的作用。一般用于移动设备;

/mnt:挂载点,挂在临时的文件系统。
/opt:可选目录;
/pro:伪文件系统,大多数都是内核的映射文件;

与系统相关
/sys:pro,只在系统启动后才有文件,跟硬件设备相关的属性映射文件;
/temp:临时文件,会在一定时间内被系统清除,所有用户都有权限访问,但是只能删除自己创建的文件;
/var:可变文件,例如/var/run/内部就存储了一些.pid文件保存进程ID等信息的;
/bin:可执行文件,用户命令;
/sbin:管理命令,与bin都是系统启动相关的程序和命令;
/usr:universal_shared_read-only,只读文件,是系统启动后提供功能的文件夹,有/usr/bin,/usr/sbin/;
/usr/local/[bin|sbin|lib],第三方相关的程序与命令,与系统启动无关;

路径:从指定起始点到目的地所经位置;层级管理文件能简化查找,树状目录结构:
绝对路径:从根节点开始查找;
相对路径:相对于某个位置的路径。

FHS:文件系统层级规准,file system;
magic number:魔数,例如在文件开头指定#!/bin/bash,指定程序执行入口或者格式。

目录管理

目录命名规则
1、长度不能超过255个字符;
2、注意不能使用/当文件名,它只能用当路径分隔符;
3、严格区分大小写;
ls cd pwd mkdir rmdir tree
目录是文件的路径映射;

目录相关命令

1、列出目录,ls、cd、pwd;
ls:list,列出指定路径下的文件,选项如下:
-l,显示完整信息,从上到下内容如下
结果解析
第1位:
-:普通文件(f)
d:目录文件
b:块设备文件(block)
c:字条设备文件(character)
l:符号链接文件(symbolic link file)
p:命令管道文件(pipe)
s:套接字文件(socket)
后9位:
文件权限:后九位,每三位一组,rwx分别为 读,写,执行权限;
文件硬链接次数;
文件的属主(owner);
文件的属组(group);
文件大小(size),默认单位bytes;
时间戳(timestamp);
访问:access;
改变:change,metadata元数据,文件属性;

修改:modify,文件内容发生改变;
-h: human readable,做单位换算
-a:显示以.开头的隐藏文件
.:当前目录
..:父目录
-A:显示不以.开头的隐藏文件
-d:显示目录自身属性
-i:index node,inode,文件的索引节点号
-r:逆序显示文件
-R:递归显示

pwd:Printing Working Derectory,格式:/根目录/分级目录/file

cd: 切换到指定的目录;
cd 用户主目录,home derectory;
cd ~username 切换到用户主目录;
cd - 在当前目录和前一次所在的目录之间来回切换;

2、创建目录
mkdir x:创建x目录
mkdir x/y;在x目录下创建目录y
mkdir -p a/b/c:先创建c,发现没有父目录b,准备创建b,再找b的父目录,发现没有a目录,则创建a目录,即会创建三个目录;
mkdir -pv /mnt/test/{x/y,m}:同事创建两个目录;
mkdir -pv {a,b}-{c,d}:创建a_c、a_d、b_c、b_d四个文件夹;

3、删除目录
rmdir a:只能删除空目录a;
rmdir -p a/b/c:只有当a、b、c目录都为空时才删除;
rm -rf a:不管a是否为空,都会删除a目录,其中-r为递归删除,-f删除时不提示;
rm -rf /:删除当前目录的所有文件,注意不到万不得已,不要用管理员权限!

文件管理

touch stat file rm cp mv nano vim

1、创建文件:
touch file:创建文件file
stat:查看文件所有属性,主要是文件名称,大小,访问、修改以及改变时间等信息。
touch -a file:只改变access时间
-m:只改变modify时间;change会时间跟随硬件时间改变;
只修改access时间:touch -a -t 1612121111 a
只修改modify时间:touch -m -t 1212121111 a,将文件a的modify时间

2、编辑文件:
nano a:文件编辑器,类似vim编辑器;
vim a:创建并编辑文件a;

3、删除文件:rm a:注意此处rm是软连接,其实等价于rm -i,即删除时会提示。

4、复制:
cp src dest:不仅可以复制一个文件到一个文件,还可以复制任意多个文件到指定的目录;
例如:mv a/b/1.txt x/y/ 复制文件1.txt到y目录下;
mv -r a/ x/:复制a目录到x目录下,此处指定-r,采用递归复制;
-a:archive,归档复制,常用于备份;
-p:保留源文件权限、ownership以及访问等时间,没定指定则会修改成当前的用户权限,若文件为链接文件,则只是复制链接指向的文件;
-P:若目标文件为链接,则会复制链接,若没有指定的话是只会文件,不会复制链接;
cp /ect/{a,b,c}/x:指的是复制三个文件;

5、移动:
mv src dest
移动文件或者整个目录到目标目录;
修改文件或者目录名称:当目标目录或文件不存在;

6、install:
-d: drectory,可以创建一个或多个目录;
install -t directoy src:移动源文件到目标目录,只能移动文件,没有-r选项;

7、file:查看文件内容类型;


日期相关

date、clock、hwclock、cal;

date:查看系统的时间,默认为当前硬件时间或者相差不大;
设定系统时间:date -s 1211021212格式为:年月日分秒,随后再修改硬件时间;

clock/hwclock:硬件时间(主板内置石英计时器),ntp网络时间协议,rtc(real time count);
-w:将硬件时间设定为系统时间;
-s:将系统时间设定为硬件时间;

cal:日历,cal 2018


文本管理

文本查看

1、cat;连接并显示文本文件;
-n:显示行号
-E:在每行结尾显示$,对于linux而言,行结束符为$
直接cat,退出按ctrl+c可以终端当前命令;
若文件过大,可以ctrl + pageup/down上下翻屏,但是若超过了最大缓存屏数,那就会丢失!

2、more:分屏幕查看,只支持向后翻,翻到最后就退出,类似man的命令;

3、less:支持前(p)后翻(sapce),翻到最后不会退出;

4、head:只查看前n行,默认是10。
head -n 3 file:指定n,查看前3行;

5、tail:查看后n行,默认是10。
-f:查看文件尾部,不退出,等待显示后续追加至此文件的新内容;

文本处理

行记录进行处理。
1、cut
-d:指定分隔符,默认是空格;
-f:指定显示的字段; -f 1,3表示显示第1和3两个字段,-f 1-3显示1到3的所有字段;

2、join:拼接;

3、sort:按照ascii对每行首个字符排序,升序;
-n:按照数值大小排序;
-r:降序排序;
-t:指定分隔符,-k:索引位置(从1开始),例如sort -t : -k 3
-u:unique,相同内容只显示一次,仅仅针对相邻并且安全相同的行系统才认为他们相同;

4、uniq
-d:显示重复的行(一次),相邻且相同
-D:只要是重复的就显示;
-c:显示行重复次数;

文本统计

wc file:行,单词数,字节数;
wc -l:行数
wc -c:字节数;
wc -w:单词数;
wc -L:最长的一行的长度(字节数)

字符处理

tr:转换或删除字符,单纯的屏幕输入输出,及时显示;
tr ‘ab‘ ‘AB‘ < file:运用重定向,将文件中的某些字符替换;
tr ‘a-z‘ ‘A-Z‘:将小写转换成大写;
-d:删除出现的所有字符,逐个字符处理;


权限管理

为了合理地分配计算资源,通常要设定权限,即标识符:
用户:设置用户,例如admin,student;
用户组:用户的容器,关联权限,在其中的用户具备容器的权限。

安全上下文(security context):进程是有ownerships(属主和属组)。

权限有r、w、x三种:
对于文件:
r:表示可读,可以查看;
w:可写,可以编辑或删除此文件;
x:可执行,excutable,可以当做命令提交给内核运行;

对于文件:
r:可以查看目录,利用ls列出目录下的所有文件;
w:可以在此目录创建文件;
x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息。

rwx八进制意义
0 000 ___ :无权限
1 001 __x :执行
2 010 _W_ :写权限
3 011 _wx :写和执行
4 100 r__ :读权限
5 101 r_x :读和执行
6 110 rw_ :读和写
7 111 rwx :读、写和执行权限
例如某文件权限是755,即为rwxr_xr_x

计算机识别用户使用,用户UID(保存在文件/etc/passwd)和用户组GID(保存在/etc/group文件中)。
解析:名称解析,根据数据库查询对于的信息。
影子口令
用户:/ect/shadow
组:/ect/gshadow

用户类别

管理员,id=0,可以访问任何文件。

普通用户,id=【1-65535】
系统用户,id=1-499,专门用户运行后台进程,不需要登录系统;
一般用户,id=500-60000

用户组类别

私有组:若在创建用户时候,若没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组;
基本组:用户默认的组;
附加组和额外组:默认组以外的其他组。

passwd文件格式

man 5 passwd
例如:root:x:0:0:root:/root:/bin/bash
account:登录名;
password:指向shadow文件
UID
GID
comment:注释
HOME DIR:家目录
SHELL:用户默认的shell

shadow文件

cat /etc/shadow:进行查看文件,格式:root:$6$3g9wQ8ZnMgSDhVY6$a1OFPBdZMM8P.hDWp4RU5FQg.CcFerDnSCYYQLs/J6j1bOdHGZyML81SyWVchunsJEvc
man 5 /etc/shadow:查看格式
account:用户名
password:加密密码

加密方法

对称加密:加密和解密都是使用同一个密码。

公钥加密:每个密码都成对出现,一个为私钥(secret key),另一个为公钥(publick key)。速度相对于对称加密慢上三个数量级,但是更为安全。

单向加密:散列加密,提取数据特征码,每个数字都有一个唯一的特征码(指纹加密),可实现数据校验的作用。


运行程序

设备管理

进程管理

网络管理

其他

关注官网: www.kernel.org
GNU(提供各种应用和库文件)+Linux(提供内核)
发行版:将以上内容编译进光盘中并提供安装借口!例如:Fedora、readhat(centos)、SUSE、Debian(发行版本Ubuntu 二次开发Mint)
编译:将源代码转换成可以在对应平台上执行的程序;
Gentoo系统:针对当前版本在安装时编译软件,非常耗时;
LSF(Linux From Scrach):指导手动创建linux系统(拼凑软件);
只能向上兼容,不能向下兼容;

以上是关于linux操作基础的主要内容,如果未能解决你的问题,请参考以下文章

逆向及Bof基础实践

20155307刘浩《网络对抗》逆向及Bof基础

20155311高梓云《网络对抗》逆向及Bof基础

20145301赵嘉鑫《网络对抗》逆向及Bof基础

[vscode]--HTML代码片段(基础版,reactvuejquery)

Linux bash基础特性二