操作系统的两个主要功能

  • 与硬件打交道(例如CPU,内存,硬盘)

  • 封装底层的API,给开发者调用

linux 内核版本 和 发行版本

  • 内核版本: Linux 在维护(唯一)

  • 发行版本: 各个公司开发(很多)

单用户系统和多用户系统

  • 单用户系统:一台计算机同一时间只能由一个用户使用
    该用户独享系统的全部硬件和软件资源

    • XP 之前的版本都是 单用户系统
  • 多用户系统:一台计算机同一时间可以由多个用户使用
    多个用户共享系统的全部硬件和软件资源

    • linux 的设计初衷,就是 多用户系统

linux 文件目录

  • 没有'盘符'这种概念,只有一个根目录'/',所有文件都在它下面

  • 为每一个用户创建一个独立的目录,各个用户之间不允许互相串门

常用Linux命令

- ls: list-查看当前文件夹下的内容

- pwd: print work directory-查看当前所在文件夹

- cd [目录名]: change directory-切换文件夹

- touch [文件名]: 如果文件不存在,新建文件

- mkdir [目录名]: make directory-创建目录

- rm [文件名]: remove-删除指定的文件名

- clear: 清屏

  • 快捷键小技巧
- ctrl + shift + '=(+)': 放大终端窗口的字体显示

- ctrl + shift + '--(-)': 缩小终端窗口的字体显示

ubuntu 访问 windows共享目录

- 打开 "文件" → “其他位置” → “连接到服务器”,在输入框输入“smb://IP”,例如

    - smb://192.168.0.177/

Linux 终端命令格式

command [-options] [parameter]

  • 命令帮助

command --help

man command

- 空格键: 显示手册页的下一瓶

- Enter键: 一次滚动手册页的一行

- b: 回滚一屏

- f: 前滚一屏

- q: 退出

- /word: 搜索word字符串

终端实用技巧

  • 自动补全: 在敲出 文件/目录/命令 的前几个字母后,按下"tab键"

    • 如果输入的没有歧义,系统会自动补全

    • 如果存在多个文件,再按一下"tab键",系统会再次提示

ls 命令小拓展

  • 在linux中,以'.开头'的文件名称,都属于'隐藏文件'

  • 此时,使用ls命令,是无法显示'隐藏文件'的

  • 解决办法: ls -a

> touch .456.txt
> ls # 分别测试
> ls -a
  • 'l'参数表示显示文件详情信息
    'h'参数搭配'l'参数使用,显示文件大小更友好

  • cd命令小拓展

- cd . # 切换到当前目录,实际上白写...

- cd .. # 切换到上级目录

编辑 hosts文件命令

sudo gedit /etc/hosts      /* 这里的gedit可以换成其他的编辑器,如常用的vim。*/
  • 进入 root权限终端
sudo su # 要求输入密码
  • metasploit 渗透工具介绍

    • 进入 root权限终端

    • msfconsole 进入 渗透工具命令行

touch命令

  • 两个作用

    • 创建文件

    • 更新文件的创建时间

mkdir命令: 创建一个新目录

  • 注意事项: 所创建的目录名称,不能与当前目录下的文件/目录 同名
cd demo
touch 123
mkdir 123
$ 文件已存在
  • "-p"参数可以递归创建目录
mkdir -p a/b/c/456

rm 命令

  • 删除文件/目录

  • 注意事项: 使用此命令删除文件以后,文件不可恢复

  • 参数

    • "-f": 强制删除,忽略不存在的文件,无需提示

    • "-r": 递归滴删除目录下的内容,删除文件夹时必须加此参数

  • 特别注意事项: 当切换到系统根目录时'/',不能手误执行以下命令
    会导致整个系统会被删除而不得不重装

rm -rf *
  • 拷贝和移动文件(剪切)
- tree [目录名]: 以树状结构列出目录和文件

  - 参数"-d": 只显示目录(不显示其他文件)

- cp(copy) 源文件 目标文件: 复制文件或目录

- mv(move) 源文件 目标文件: 移动文件/目录,文件/目录重命名

在ubuntu系统下无法修改文件,解决办法

# 对文件作如下处理
sudo chmod u+w 文件名

编辑文本命令

gedit 123.txt

更换ubuntu下载源

  • 首先,备份镜像源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • 编辑镜像源设置文件
sudo gedit /etc/apt/sources.list

  • 复制下面的所有内容替换掉原文件中的所有内容(一次只可以选一个镜像源,根据你的情况选)
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse


查看ubuntu版本号

lsb_release -a

cp命令: 拷贝和移动文件

  • 基础用法
- cp 源文件 目标文件

  cp ~/readMe.txt . # 把家目录底下的'readMe.txt'拷贝到当前目录

- "-i参数"表示: 覆盖文件之前提示
  
  cp -i ~/readMe.txt . # 把家目录底下的'readMe.txt'拷贝到当前目录(询问是否覆盖)

  • 使用cp命令拷贝目录(直接拷贝是不行的,要加参数'-r')
cp -r a b # 把a目录所有内容拷贝到b目录

mv(move)命令: 移动(剪切)文件/目录,也可以给文件/目录重命名

mv a/aa/123.txt . # 把123.txt移动到当前目录

mv a/aa/123.txt 456.txt # 把123.txt移动到当前目录,并且重命名为 456.txt

- 还可以使用之前学过的 cp命令,实现重命名(区别在于复制/剪切)

cp a/aa/123.txt 456.txt

查看文件内容

  • cat(concatenate) 文件名

    • 查看文件内容,创建文件,文件合并,追加文件内容等功能
    • 会一次性显示所有的内容(适合内容较少的文本文件)
  • more 文件名

    • 分屏显示文件内容
    • 适合查看内容较多的文本文件
- 空格键: 显示手册页的下一屏
- enter: 一次滚动手册页的一行
- b: 回滚一屏
- f: 前滚一屏
- q: 退出
  • cat命令小拓展
- 当加上"-b"或"-n"参数 会给文本所在的行编号

  - n: 会给回车行加编号

  - b: 不会给回车行加编号
  • grep命令: 搜索文本内容,相当于 Ctrl+F 搜索文本

    • 支持正则

    • 参数

- n: 显示匹配行及行号

- v: 显示不包含匹配文本的所有行(相当于取反)

- i: 忽略大小写
  • grep命令小拓展
    • 支持正则表达式
grep -b ^k 456.txt # 编号显示以k开头的内容(在456.txt文件中查找)

echo命令: 表示'回声'

echo hello world # hello world
echo hello wordl > demo.txt # 把hello world输出到 demo.txt文件(文件不存在就创建/存在就覆盖)
  • 通常搭配重定向符号'>'一起使用(把需要的文本内容输入到指定文件)

  • '>'表示输出,会覆盖文件原有的内容

  • '>>'表示追加,会将内容追加到已有的文件末尾


tree > demo.txt # 把当前路径的tree文件结构输出到指定文件

管道: 命令之间的桥梁/连接符

  • 将一个命令的输出,通过管道,做为另一个命令的输入

  • 管道符号:"|"

  • 比如

    ls ~ | grep el # 展示家目录 并搜索 以'el'开头的目录名称
    

关机命令 shutdown

shutdown # 一分钟以后关机
shutdown -c # 取消关机
shutdown -r now # 立即重启
shutdown 20:25 # 在8:25关机
shutdown +10 # 10分钟后关机

ifconfig: 查看IP相关信息

ifconfig # 查看网卡配置信息

ifconfig | grep inet # 只显示IP

ssh 远程

ssh [-p port] user@remote # 默认为22号端口
ssh -p 22 anning@IP地址
# 开启防火墙
sudo ufw enable
# 开启22号端口
sudo ufw allow 22
# 重启防火墙
sudo ufw reload
# 查看状态
sudo ufw status

# 安装ssh
sudo apt install openssh-server

# 在服务端执行 ssh localhost 命令, 确认ssh是否启动成功. 这样putty就可以连接服务端了.
  • Windows系统下,远程ubuntu系统,主要有两种工具

    - putty(建议官网下载,使用起来非常简单,输入IP即可,先用这个)
    - xshell(稍微复杂一点)
    

scp命令: Linux下用来远程拷贝文件的命令(windows环境使用 filezilla)

  • 语法基本与 ssh 相同,但指定端口(默认端口21)的时候,使用的是大写P

    # 把本地目录下的01.py拷贝到远程家目录下的'Desktop/01.py'
    scp -P port 01.py user@remote:Desktop/01.py
    
    # 把远程家目录下的Desktop/01.py拷贝到本地目录下的'01.py'
    scp -P port user@remote:Desktop/01.py 01.py
    
    # -r可以传送文件夹
    scp -r demo user@remote:Desktop
    
  • w11环境使用 filezilla连接

    - 文件-新站点
    
    	- 协议: SFTP(就是SSH) # 这里选择FTP连接失败
    	- 主机IP地址&&用户名&&密码
    	- 端口默认
    
    

SSH 免密登录

  • 就两个步骤,很简单

    - 配置公匙
    	- ssh-keygen # 一路回车即可
    	
    - 上传公匙到服务器
    	- ssh-copy-id -p port user@remote # 可以让远程服务器记住我们的公匙
    	
    - 原理了解(非对称加密算法,A钥匙锁门,必须使用B钥匙开门)
    
    	- 本地使用私匙对数据进行加密/解密(使用私匙加密的数据,需使用公匙解密)
    	- 服务器使用公匙对数据进行加密/解密(使用公匙加密的数据,需使用私匙解密)
    

SSH配置别名(更方便的远程登录,进一步偷懒)

- 例如,可以使用 ssh mac直接远程别名为mac的远程服务器

- 配置方法(~/.ssh/config)追加以下内容

	Host mac
		HostName ip地址
		User yourUserName
		Port 22
		
- 保存以后,就可以使用 ssh mac 实现远程登录,scp同样可以使用

	- scp -r ~/Desktop myserver:Desktop/demo # 把家目录桌面下的目录拷贝到myserver服务器的Desktop/demo底下

用户和权限的概念

序号 权限 英文 缩写 数字代号
01 read r 4
02 write w 2
03 执行 excute x 1

ls -l 拓展

  • 用途: 查看文件夹下,文件的详细信息,从左往右,依次是
目录 拥有者权限 组权限 其他用户权限 硬链接数量
- r w - r w - r - - 1
d r w x r w x r - x 3
  • 硬链接数量: 通俗讲,就是有多少种方式可以访问到当前目录

chmod命令

  • 作用: 修改 用户/组 对 文件/目录 的权限
  • 语法
chmod +/-rwx 文件名|目录名

Linux 用户

  • root用户

  • 标准用户(默认创建)

  • 首次使用sudo时,需输入当前授权用户的密码,有效期5分钟

组管理终端命令

  • 创建组/删除组 的终端命令,都需要通过'sudo'执行
序号 命令 作用
01 groupadd组名 添加组
02 groupdel组名 删除组
03 cat /ect/group 确认组信息
04 chgrp 组名 文件/目录名 修改文件/目录的所属组
- 组信息保存在'/ect/group'文件中
- /ect/ 目录专门用来保存'系统配置信息'

用户终端管理命令

​ 创建用户/删除用户/修改其他用户密码

序号 命令 作用 说明
01 useradd -m -g 组名称 新用户名 添加新用户 - m:自动创建用户家目录; -g:指定用户所在的组,否则会建立一个和用户名同名的组
02 passwd 用户名 设置用户密码 若是普通用户,直接用passwd可以修改自己账户密码
03 userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
04 cat/etc/passwd | grep 确认用户信息 新建用户后,用户信息会保存在 /etc/passwd文件中
  • demo命令演示
ls -l /home # 显示home目录所有用户文件

sudo useradd -m -g dev zhangsan # 新建名为"张三"的用户,并自动创建家目录,加入'dev组'

查看用户信息

序号 命令 作用
01 id [用户名] 查看用户UID和GID信息
02 who 查看当前所有登录用户
03 whoami 查看当前登录用户的账户名

/ect/passwd 文件存放的是用户西西,由6个分号组成的7个信息

- 用户名
- 密码(x,表示加密的密码)
- UID(用户标识)
- GID(组标识)
- 用户全名/本地账号
- 家目录
- 登录使用的shell,就是登录之后,使用的终端命名,ubuntu默认是dash

usermod命令

  • 作用: 设置用户的主组或者附加组

  • 本质: 就是给用户设置额外的权限(因为加入了不同的组,所以权限肯定不同)

  • 主组: 通常在新建用户时指定,在etc/passwd的第4列GID对应的组

  • 附加组: 在etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限

设置了用户的附加组后,需要重新登录才能生效(比如给与普通用户sodu权限,需要重新登录)

- 修改用户的主组(passwd中的GID)
	usermod -g 组 用户名
	
- 修改用户的附加组
	usermod -G 组 用户名
	
- 修改用户登录的 Shell
	usermod -s /bin/bash
	
- 可以使用以下命令,把普通用户添加到sudo附加组
	usermod -G sudo 用户名

  • usermod 还可以用来设置 用户登录的shell
- 什么是 shell: 那个黑乎乎的命令行窗口就是了
- usermod -s /bin/bash 用户名

which

  • 作用: 查看执行的命令所在的位置
- 比如: 'ls'这个命令,所在的程序的哪个系统的哪个位置呢?使用'which'就可以快速找出来
	- which ls # /usr/bin/ls
	
	- which useradd # /usr/sbin/useradd
	
- cd 命令内置在内核中,没有独立文件,因此无法使用 which cd 来查看cd的文件位置
- 在Linux中,绝大多数可执行文件都是保存在 '/bin','/sbin','/usr/bin','usr/sbin'

- '/bin'(binary)是二进制执行文件目录,主要用于具体应用

- '/sbin'(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理

- '/usr/bin'(user commands for application)后期安装的一些软件

- '/usr/sbin'(super user commands for application)超级用户的一些管理程序

切换用户命令

序号 命令 作用 说明
01 su - 用户名 切换用户,并且切换目录 "-"可以切换到用户家目录,否则保持位置不变
02 exit 退出当前登录账户(返回上一层用户,直至退出)

su若不接用户名,可以切换到root,但不推荐这么用,不安全

修改文件权限

序号 命令 作用
01 chown 修改拥有者
02 chgrp 修改组
03 chmod 修改权限
  • 命令格式如下
# 修改文件|目录的拥有者
chown 用户名 文件名|目录名
	
	- sudo chown lisi aaa # 把aaa目录的拥有者变成李四(使用"ls -l"查看)
	

# 递归修改文件|目录的组
chgrp -R 组名 文件名|目录名

# 递归修改文件权限
chmod -R 755 文件名|目录名
# 之前的用法(直接修改文件/目录名 的 读|写|可执行 权限,但不能精确到 拥有者|组|其他用户)
chmod +/-rwx 文件名|目录名

chomod在设置权限时,可以简单使用三个数字分别对应拥有者//其他用户权限

  • 755数字表示的含义表格

  • 常见的数字组合有(u表示用户,g表示组,o表示其他)
1) 777 ==> u=rwx,g=rwx,o=rwx

2) 755 ==> u=rwx,g=r-x,o=r-x

3) 644 ==> u=rw-,g=r--,o=r--

Vim编辑器简单使用

  • 参考网址: https://blog.csdn.net/imonHu/article/details/77772712
- vi 文件名
- 按"I"进入insert模式,可以正常文本编辑
- 编辑好之后按“esc”退出到“命令模式”,再按“shift+:”进入“底行模式”,
- 按“:wq”保存退出!

VM 网络设置

  • 参考网址https://blog.csdn.net/weixin_45322291/article/details/108851921
- 仅主机模式: 说白了,相当于物理机再插一张网卡,和虚拟机互连

- Nat模式: 可以连接外网,但不会有独立ip,使用物理机的网络(相当于物理机的复制品)

- 桥接模式: 能够连接外网,使用单独的ip地址,网段需要与桥接连接的外部网络的网段相同(相当于同网段的另一台物理机)

- 自定义模式: 可以自行进行设置,选择其他模式的网络,配置大概相同

- CentOS 7 ping不通 报错:name or service not known
	- https://blog.csdn.net/weixin_38214171/article/details/85330179
	- https://blog.csdn.net/Qcsdn123/article/details/120082823

VMWARE虚拟网络配置 子网ip和子网掩码不匹配

如果子网掩码设成255.255.255.0 ,那么前面的子网ip就应该设成192.168.221.0,而不是192.168.221.128


子网掩码:255.255.255.x

子网ip:192.168.211.x

这2个x必须相同
————————————————
版权声明:本文为CSDN博主「我要用代码向我喜欢的女孩表白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38403590/article/details/106781849

系统相关命令

  • date命令: 查看系统时间

  • cal命令: 查看日历(-y参数可以查看全年日历)

  • 磁盘信息相关命令

    序号 命令 作用
    01 df -h disk free 显示磁盘剩余空间,"-h"更加人性化展示信息
    02 du -h [目录名] disk usage 显示目录下的文件大小
  • 进程信息: 所谓进程,即正在进行的程序

序号 命令 作用
01 ps aux process status 查看进程的详细状况
02 top 动态显示运行中的进程并且排序
03 kill [-9] 进程代号 终止指定代号的进程,-9表示强行终止

ps: 默认只会显示当前用户通过终端启动的应用程序

  • ps选项说明功能
选项 含义
a 显示终端上的所有进程,包含其他用户的进程
u 显示进程的详细状态
x 显示没有控制终端的进程

重要提醒: kill命令最好只终止由当前用户开启的进程,而不要终止root开启的进程,否则可能导致系统崩溃

查找文件命令find

  • 作用: 在 特定的目录下,搜索符合条件的文件
序号 命令 作用
01 find [路径] -name "*.py" 查找指定路径下,拓展名为'.py'的文件,包括子目录

若省略路径,则表示在当前目录下查找,支持正则写法

# 搜索桌面目录下,文件名包含数字'1'的文件(终端先切换到桌面目录)
find -name '*1*'

# 搜索桌面目录下,所有的'.txt'文件
find -name '*.txt'

软链接(俗称的'快捷方式')

序号 命令 作用
01 ln -s 被链接的源文件 链接文件 建立文件的软链接(快捷方式)

若没有-s选项,则是建立一个硬链接文件(几乎不会用到)

源文件要使用绝对路径,不能使用相对路径,避免移动软链接以后,该软链接无法使用

打包压缩

  • 在不同操作系统中,打包压缩是不同的
- windows: 常用 rar,zip

- mac: 常用 zip

- Linux: 常用 tar.gz
  • tar命令: 把一系列文件,打包成一个大文件;反过来也可以
# 打包文件
tar -cvf 打包文件.tar 被打包的文件/路径

# 解包文件
tar -xvf 打包文件.tar
  • tar选项说明
选项 含义
c 生成档案文件,创建打包文件
x 解开档案文件
v 列出归档解档的详细过程,显示进度
f 指定档案文件名称,'f'后面一定是'.tar'文件,所以必须放选项最后

f选项必须放到在最后,其他选项顺序可以随意

  • 练习
- 删除桌面下的所有内容

- 桌面新建'01.py','02.py','03.py'

- 把这三个文件打包成一个'py.tar'包

- 新建 tar 目录, 并且将 py.tar移动到 tar 目录

- 解包 py.tar

# 切换到桌面目录
rm -r *
touch 01.py ...
tar -cvf py.tar 01.py 02.py 03.py
mkdir tar
mv py.tar tar
cd tar
tar -xvf py.tar

压缩/解压缩

gzip

  • targzip命令结合使用,实现文件打包和压缩
  • gzip压缩tar打包后的文件,其拓展名一般用xxx.tar.gz

Linux中,最常见的压缩文件格式就是xxx.tar.gz

  • tar命令中,有一个选项-z可以调用gzip,从而方便的实现压缩和解压缩功能
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...

# 解压缩文件
tar -zxvf 打包文件.tar.gz

# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径

-c表示解压缩到指定目录(要解压的目录必须存在)

  • 演示
# 把桌面所有的py文件,打包压缩成 py.tar.gz
tar -zcvf py.tar.gz *.py
  • bzip2: 压缩tar打包后的文件
- tar 和 bzip2 命令结合,可以实现文件的 打包和压缩(用法和gzip一样)

	- tar 只负责打包文件,但不压缩
	- 用 bzip2压缩tar打包后的文件,其拓展名一般用 xxx.tar.bz2
	
- tar 命令有一个'-j'可以调用 bzip2,可以方便的实现压缩和解压缩的功能
	# 压缩文件
	tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...
	
	# 解压缩文件
	tar -jxvf 打包文件.tar.bz2

软件安装/卸载

  • aptAdvance Packaging Tool,是Linux下的一款软件安装包工具
  • 可以在终端中方便的安装/卸载/更新软件包
# 安装软件
sudo apt install 软件包

# 卸载
sudo apt remove 软件名

# 更新
sudo apt upgrade