linux学习笔记day1

扫盲

基本知识

1.现阶段需要了解的

系统安全 网络安全 代码安全 web渗透安全

linux操作系统 cenots7 基础命令 系统管理 服务安全 脚本编写 和防火墙规则

2.版本

理查德.史托曼 GNU GPLv2 GUN社区 开发爱好者
Linus Torvalds ---- 内核
内核/发行 ubuntu Fedora Debian Centos RedHat
uname -r 查看内核版本号
3.10.0-862.el7.x86_64
3:主版本号
10:次版本号,奇数:开发版,指增加新的功能,不修补漏洞
偶数:稳定版,只修补漏洞,不增加功能

=============================================================

3.基本安装后的操作

安装Centos7

系统安装完成后要做的优化:
0.建议:power–nerver

1.关闭selinux(标签机制 对每个文件打上标签然后进行管理,类似于超市安检机制)
打开终端(可以调整字体)
vim /etc/selinux/config
SELINUX=disabled
(只有重启系统后才能生效,命令getenforce验证selinux是否关闭)

2.关闭防火墙
firewall-cmd --set-default-zone=trusted

3.安装vmtools
umount /dev/cdrom 卸载光盘
选择虚拟机-》安装vmwaretools
桌面上会显示vmware tools光盘 进入光盘将其中的压缩包考到桌面上并解压缩 进入解压缩目录执行绿色的执行文件 加-d选项表示默认。
(重启系统才能生效)
重启命令:systemctl reboot

***建议将光盘换回来

4.安装完毕后关机做快照
关机命令:systemctl poweroff。

测试快照成功性:
dd if=/dev/zero of=/dev/sda bs=512 count=1
抹掉分区表(mbr分区表)

===============================================================

4.基础扫盲:

####linux系统特点:1.一切皆文件!

​ 2.严格区分大小写!

####查看日期时间: date

date +%Y-%m-%d-%H:%M

####查看日历: cal [月 年]

####终端提示(shell环境):

[root@wencoll Desktop]#
注释:
root:当前登录用户
@在
wenxiaofei:当前主机名
Desktop: 当前目录

“#”:代表当前是管理员身份

$:代表普通用户身份
~:代表家目录

####命令格式:命令字 [选项][参数]

如最基本命令:
pwd 列出当前所在目录
(print working direcotory)
ls 列出当前目录下的内容
(list)
cd 改变目录
(change directory)
cd … 上一级目录
cd /

####linux的基本目录结构:

/ 代表操作系统的起始目录
/bin 普通用户和管理员都可以执行的命令字存放目录
/sbin 只有管理员可以执行的命令存放目录
/boot 系统的引导目录(损坏系统无法启动)
/etc 系统配置文件存放目录
/dev device设备文件存放目录(一切皆文件)
/home 普通用户的家目录(登录目录)
/root 管理员的默认登录目录
/proc 进程的状态目录(加载到内存中的)
/var 常变文件存放目录(如日志、邮件)
/usr 软件的安装目录(GNU社区软件的默认安装路径)
/tmp 临时文件存放目录

####关机:

systemctl poweroff
shutdown -h now //shutdown -h hh:mm shutdown -h +m
init 0
(Systemctl是一个系统及服务管理控制工具,众多命令及工具的集合,用于取代System V、service和chkconfig等命令)

####重启:

systemctl reboot
reboot
shutdown -r now //shutdown -r hh:mm shutdown -r +m
init 6

####清屏:帮助:

clear

help 命令

命令 --help
man 命令

####查看操作系统的详细信息

cat /proc/cpuinfo 查看cpu信息 //不需要全看懂
cat /proc/meminfo 查看系统内存信息
free -h
fdisk -l 查看系统硬盘信息
/dev/sda sda代表硬盘的配置文件,sd代表是sata/scsi/u盘
a代表第一块硬盘

y

####小练习:

1.通过ls cd pwd 完成任务,进入以上所有目录。并查询出黑底黄字的文件在哪个目录中存在。
2.通过颜色区分文件类型:查找到以下所有颜色的文件或目录
蓝色 ---- 目录
浅蓝色 — 表示符号链接(快捷方式)
黑色 — 普通文件(文本文件)
绿色 — 具有执行权限的文件(命令字)
红色 — 压缩文件
紫色 — 图片(或其他文件)
黑底黄字 — 设备文件

=================================================================================

###增删改查基本命令的学习:

linux系统命令的固定格式:命令字 【选项】 【文件或目录或路径】

####ls:

-l 列出详细信息
-lh 人类易读(以K、M、G等为单位显示详细信息)
-R 递归显示当前目录下所有子目录中的内容
-a 列出所有文件包括隐藏文件(以点开头的文件是隐藏文件)

如:ls -lh /root

####cd的绝对路径和相对路径

绝对路径:以根目录为起始路径的路径cd /boot/efi
相对路径:相对于当前路径进入其子目录可以不使用绝对路径
cd …/abc/
cd …
cd .
cd -
cd ~

####cat:浏览文件内容

cat 【-n】 列出文件中所有行的行号
如:
cat 文件名

cat -n 文件名
more 文件名
less 文件名
head -n 文件名
tail -n 文件名

####管道符 | 作用:将前一条命令的输出结果作为后一条命令的执行参数

cat -n /etc/passwd | more 空格是向下翻页
cat -n /etc/passwd | less 可以来回翻页,q退出
cat -n /etc/passwd | head -n 只显示前n行
cat -n /etc/passwd | tail -n 只显示后n行
ls -l /etc | more
ls /etc/ | wc -l

####建立文件的命令

touch 建立一个新文件 或更新文件的时间标记

例如:touch /tmp/nblg.txt

echo “lanoushixun” >> /tmp/nblg.txt 将echo显示的内容追加到文件中
echo “lanoushixun” > /tmp/nblg.txt 将echo显示的内容覆盖到文件中

六、

####建立目录

mkdir make directory 创建文件夹
如:mkdir /tmp/nblg
mkdir -p /tmp/lanou/yisaitong 递归建立父目录

练习

  1. ls使用所有选项对/boot目录进行查看
  2. 使用命令分别查看/etc/shadow文件及/etc/passwd文件的前3行及后2行内容!
  3. 在/tmp目录下创建自己姓名的文件夹,进入该文件夹并创建自己姓名的文件,在该文件中写入一行文字hello world
    并使用命令查看该文件,验证是否写入成功!

七、

####mv 作用:移动文件或目录 、 重命名文件及目录

mv 目标对象 目标路径 //移动
mv 原名字 新名字 //修改名称

八、

####cp 作用:copy拷贝文件

cp 目标文件 目标路径 //拷贝文件
-r 拷贝目录的时候需要通过r选项递归拷贝
cp -r 目录名 目标路径

九、

####rm 删除文件或目录

-f 强制删除无提示
-r 递归删除目录
rm -rf 目录名 //强制删除目录
rm -f 文件名 //强制删除文件

十、

####ln 建立链接(link)

ln -s /绝对路径/文件 /目标路径/链接文件名 //建立符号链接(必须使用绝对路径)
软链接,硬链接

####练习:

将/tmp/qingshu文件重命名为不可见文件.save,后进行多次复制。
将/tmp/.save文件复制到 /opt目录中
将/tmp/.save文件移动到/root/下,并将/opt/目录下的.save文件删除

=================================================================================

###进阶命令

####1.设置别名:alias

​ unalias
unalias -a
alias 别名='实际命令’
~/.bashrc //用户自己的别名脚本

####2.命令:grep [-n][-v] [–color] 过滤关键字 文件名

–color 以高亮标记过滤字
-n 显示行号
-v 取反
^关键字 表示过滤以关键字开头的行
关键字$ 表示过滤以关键字结尾的行
^$ 表示过滤空白行通常和-v 取反选项组合使用

如:grep -n --color MAN /etc/man.config | grep -v #

grep --color ^root /etc/passwd

grep --color bash$ /etc/passwd

注意:grep特殊用法:
任何命令 | grep 关键字

####命令:wc [-l/w/c] 文件

统计:行数 字数 字节
-l 只统计文件行数
-w 只统计文件字数
-c 只统计字节数

####练习:

1.过滤出/etc/passwd文件中以root开头的行并以高亮显示出来
grep root /etc/passwd

2.统计/目录下有多少个文件夹和文件

ls / |wc -l

3.统计/etc/passwd文件中有多少包含bash的行

grep bash/etc/passwd | wc -l

4.统计/etc/shadow文件有多少字多少行

wc -w /etc/shawdow

wc -l /etc/shadow

####du 统计目录中内容大小

du -sh 目录名 //统计本目录大小
du -h 目录名 //统计本目录大小,及所有子目录大小
du -h 文件名

####find 查找范围 选项 关键字

find / -name 文件名或目录名 按照名称查找
find / -type d/f 安装类型查找:d代表目录 f文件
-a 并且 -o 或者
例如
找出系统中所有名为passwd的文件:
find / -name passwd -a -type f

在/boot目录中找出大小在1M以上的文件,或者名为grub的目录
find /boot -size +1M -o -name grub -a -type d

查找到的文件进行拷贝
find /boot -size +1M -exec cp ‘{}’ /tmp ;

####重定向符号

相当于1> //输出正确结果
&> &>> //输出正确和错误结果
2> 2>>配合/dev/null使用 //输出错误结果
<: passwd --stdin 用户名 < /路径/pass.txt //脚本怕交互,卡壳
等同于:echo “密码” | passwd --stdin 用户名

####awk:

awk是干什么的:过滤列

awk是行处理器

-F指定分隔符
$1 指指定分隔符后,第一个字段,$3第三个字段, \t是制表符
一个或多个连续的空格或制表符看做一个定界符,即多个空格看做一个空格
awk -F":" ‘{print $1}’ /etc/passwd
awk -F":" ‘{print $1 $3}’ /etc/passwd //$1与$3相连输出,不分隔
awk -F":" ‘{print $1,$3}’ /etc/passwd //多了一个逗号,$1与$3使用空格分隔
awk -F":" ‘{print $1 " " $3}’ /etc/passwd //$1与$3之间手动添加空格分隔
awk -F":" ‘{print “Username:” $1 “\t\t Uid:” $3 }’ /etc/passwd //自定义输出
awk -F: ‘{print NF}’ /etc/passwd //显示每行有多少字段
awk -F: ‘{print $NF}’ /etc/passwd //将每行第NF个字段的值打印出来
awk -F: ‘NF4 {print }’ /etc/passwd //显示只有4个字段的行
awk -F: ‘NF>2{print $0}’ /etc/passwd //显示每行字段数量大于2的行
awk ‘{print NR,KaTeX parse error: Expected 'EOF', got '}' at position 2: 0}̲' /etc/passwd …NF,"\t",$0}’ /etc/passwd //依次打印行号,字段数,最后字段值,制表符,每行内容
awk -F: 'NR
5{print}’ /etc/passwd //显示第5行
awk -F: ‘NR5 || NR6{print}’ /etc/passwd //显示第5行和第6行

route -n|awk ‘NR!=1{print}’                                       //不显示第一行

####练习

1.查找出系统中名为shadow的文件位置

find / -name shadow

查找出系统找所有大小超过55M的文件

find / -size +55M

2.统计出根目录下那个目录所占容量最大

du -h -m --max-depth=1 2>/dev/null | sort -nr |head -2 |tail -1

3.Ifconfig: 过滤mac地址

ifconfig | grep ether

4.df -Th:过滤/分区百分比使用情况

df -Th | awk -F" " ‘{print $1"\t"$6}’

5.uname -r:过滤出内核主次版本号

uname -r | awk -F"." ‘{print"Father version number is:" $1"\tSon version number is:"$2}’

=================================================================================

Shell:

什么是shell:
命令解释器—翻译官:(Bash、cmd、xshell等)
用户(外围应用程序)–shell–内核–硬件

查看当前系统支持的shell环境:/etc/shells
Bsh: 起源于贝尔实验室的shell
Csh: 起源于加利福尼亚大学,使用C语言语法风格,命令行交互方便
Ksh: 起源于贝尔实验室,结合了BSH及CSH的优点
Bash: bsh的升级版,吸取了ksh的特点,目前最广泛的,但不是最好的,符号连接有sh
Zsh: 兼具了各种shell的优点,如kaili系统开始采用Zsh为默认shell环境,可以另行安装

bash的基本功能:
管道符 |
| grep/more/less
| grep ^字符串
| grep 字符串$
| wc -l
例如:ls / --color | grep a

历史记录: history //默认记录1000条,为什么?怎么设置?
!历史数字
!命令字
history –c
存放位置:~/.bash_history 关机或重启时会被存到该文件

常用快捷键:
tab键 //补全匹配以存在的命令字或目录、文件名
ctrl+l
ctrl+c
ctrl+u
ctrl+a
ctrl+e
shift+PageUP/PageDown

脚本编写及执行:
什么是脚本: 批量的执行命令
作用:script批处理文件
如何编写:
Vim test.sh //扩展名一般为.sh

##!/bin/bash //必须写声明,如不写,使用当前shell环境解释

#This is test script //注释:脚本的功能、怎么干/思路、作者是谁

cd /boot
pwd
ls -lh vmlinuz*
保存退出

变量
调取变量

赋予执行权限:
Chmod a+x test.sh

如何执行脚本?
子bash环境中执行(建议,不会对父shell环境进行破坏):
./test.sh //当前bash中的子bash下执行,执行后exit返回到父bash
. /路径/test.sh //当前bash环境中执行

练习:

编写一个脚本:要求执行后屏幕出现:先生,您好,您的网卡MAC地址是:
Xx:xx:xx:xx:xx:xx

#! /bin/bash

echo “先生,您好,您的网卡MAC地址是:”
ifconfig | grep ether

编写一个脚本:要求清空history记录,清空之前要求将记录备份到/tmp/history-bak中

`

#在实现这个功能时,发现history并不能运行,进行百度之后我发现,1.linux bash内置命令与普通命令的区别:which查不到的都是bash内置命令.2.history是bash内置命令,能不能开启由bash说了算。百度给出的答案
! /bin/sh
HISTFILE=~/.bash_history   
set -o |grep history
这样就实现了shell查看history命令的功能,可是又发现一个新的问题,history -w [文件名] ,并不是像控制台一样实现实时历史,而是将~/.bash_history中的文件导入文件中,这就出现了一个新的问题,怎么更新~/.bash_history呢?这个问题还有待商讨。

##! /bin/sh
HISTFILE=~/.bash_history
set -o history
history -a
history -w history_back.txt
history -c


编写一个脚本:要求自动清空/tmp下的所有垃圾

rm -r /tmp/*

编写一个脚本:要求将显示当前物理内存剩余空间。

选做:
扫描IP脚本

#!/bin/bash
ip=”192.168.1.”
for IP in {1…10}
Do
Ping -c 1 -i 0.2 -W 1 i p ip ipIP &> /dev/null
If [ $? -eq 0 ]
Then
Echo “The host i p ip ipIP is up.”
Else
Echo “The host i p ip ipIP is down.”
fi
Done

=======================================================================================
压缩归档:

一、生成一个大文件

dd if=/dev/zero of=/tmp/bigfile bs=1M count=100
输入文件文件为二进制全0内容
输出文件为tmpbigfile
提取1M为基本单位的容量
提取100次

二、压缩文件:

gzip压缩工具(压缩后,扩展名:.gz)
命令:
gzip 文件 //正常压缩
gzip -9 文件 //-9最高压缩比
gzip -d 压缩文件 //解压缩
gunzip 压缩文件 //解压缩

bzip2压缩工具(压缩后,扩展名:.bz2)
bzip2 -9 文件 //-9 最高压缩比
bzip2 -d 压缩文件 //解压缩
bunzip2 压缩文件 //解压缩

三、归档目录
归档后扩展名:.tar
命令:tar
命令:
tar cf test.tar 目录名 创建归档,注意创建归档时一定要使用相对路径
tar xf test.tar 解归档到当前目录
tar xf test.tar -C 指定解归档路径
tar tf test.tar 查看归档文件的内容

c创建 f归档 x解包 -C 解压缩路径

四、压缩归档:
tar jcf test.tar.bz2 test
tar zcf test.tar.gz test

z代表以gzip格式压缩 j代表以bzip2的格式压缩
以此类推:
tar jcf
tar jxf
tar jtf
tar zcf
tar zxf
tar ztf

练习:
1.创建一个大于200K的文件,并将其使用gzip压缩工具进行压缩
2.将刚才大于200K的文件复制到一个新的文件夹aa中,
并用bzip2压缩工具将aa文件夹压缩归档。
3.将aa文件夹删除,并将刚才的压缩归档文件夹解压到当前目录,并同时解压到桌面上一份

=======================================================================================

=======================================================================================
编辑器:

gedit 只有图形软件可以使用的编辑器
vim编辑器(编辑器之神)
vim编辑器的前身叫vi编辑器(文档编辑工具,类似于word,记事本)

vim hello
命令模式
/
a i o / Esc \ :
/
输入模式 末行模式

一、
末行模式命令 :wq 保存并退出
:w 文件名 另存为
:q! 强制退出
每执行一条命令,都会自动回到命令模式!

练习:
在桌面上建立一个名为,lanou.txt的文件 要求在其中写入welcome to lanou并保存退出,通过vim编辑器修改其中内容lanou为feifei 后不保存退出。

二、
命令模式中的增删改查操作
yy 复制当前行 10yy 一次性复制10行内容
p 在光标所在行的下方粘贴
G 将光标跳到最后一行 100G 跳到100行 1G或gg 跳到第一行
dd 删除当前行 10dd 向下删除10行
x或delete键 删除光标所在字符
dw
.
u 恢复上一次的操作
ctrl+r
ctrl +v 进入区域选择通过左右键进行圈块 后x删除

三、
末行模式需要掌握的命令
:set nu显示文件行号
:set nonu 取消行号
:/字符串 从光标所在行往下查找字符串,n下一个,N为上一个
:set hls 以高亮形式显示查找字符串
:set nohls 取消高亮形式显示查找字符串
:%s/old/new/g 将所有行的old替换为new
:2,6 s/old/new/g 将第2到第6行的old替换为new
:4,6y
:4,6d

练习:
0.拷贝 /etc/man.config 到 /tmp下去 用vim打开/tmp/man.config
1.显示文件行号
2.替换文件中50到100所有小写的man为boy
3.将文件的前10行内容 复制到文件的最后一行
4.删除文件前20行内容。
5.将文件的第100到150行内容删除
6.在文件最上面一行写入welcome to lanou。
7.保存并退出

=======================================================================================
用户与组管理:

linux用户分类:
超级用户:root uid=0 user identify
普通用户:可以登录系统 uid 500-60000
程序用户:unix诞生 运行程序时,程序依托一个用户的权限,权限非常小,不能登陆系统 uid 1-499
3Q大战 360 腾讯

如何查看:
/etc/passwd 存储着账号信息

/etc/passwd文件格式:
root❌0:0:root:/root:/bin/bash
字段1:用户名
字段2:密码占位符
字段3:uid
字段4:gid
字段5:用户详细信息(全名,地址,邮件,电话)
字段6:用户的宿主目录/家目录
字段7:用户的shell环境

shell:命令解释器
shell:Bash Csh Ksh Zsh

/etc/shadow 存储着密码信息

/etc/shadow文件格式:
root:%KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲EYTF&GJGItaistd765wq7$$^$0:16282:0:99999:7:3::

字段1:用户名
字段2:密码(SHA512二次加密)
字段3:天数,距离1970年1月1日到最后一次修改密码的天数,也就是最后一次修改密码是哪天 1970unix诞生日
字段4:密码最少使用天数 7
字段5:密码最大使用天数 20
字段6:密码失效前多少天提醒用户,默认7天
字段7:密码非活跃期,密码失效后,账号几天会被停用
字段8:密码被停用几天?
字段9:目前没有定义

每一个用户都必须拥有一个基本组,多个附加组(公共组)

/etc/group 存储着组账号信息

/etc/group文件格式:
root❌0:root
字段1:组名
字段2:组密码占位符
字段3:组id(gid)
字段4:组成员

******创建账号:
命令:useradd 用户名 //或者adduser
-u 指定uid号
-g 指定基本组
-G 指定附加组
-M 不需要家目录
-s 指定用户的登录shell 如:/sbin/nologin 不能登陆

su 用户名 //临时切换用户

id 用户名 //查看用户信息

设置密码:
passwd 用户名 //为用户设置密码,不输入用户名则为自己设置密码。
passwd -d 用户名 //清空密码
-l 锁定用户
-u 解锁用户
-S 用户的密码状态,可以查看锁定状态,详细信息等。

删除用户:
userdel 用户名
-r 删除用户的同时删除用户家目录

usermod 修改用户属性:
-u -g -G -s 同useradd
-L 锁定用户 /etc/shadow的密码前出现!符号
-U 解锁用户

groupadd 组名
-g 指定组id

groupmod -g 1500 组名 //修改组id

gpasswd 为组中添加成员
gpasswd -a 用户名 组名

groupdel 组名 //删除组

练习:
1.创建一个账号test,并将uid设置为888
2.为test用户设置密码,并验证是否可以登录
3.再创建一个账号feifei
4.将test用户的基本组改为feifei,附加组设置为root
5.禁用test用户,并验证还是否可以登录
6.feifei用户确定暂时不适用,为了安全考虑,希望feifei用户无法登陆系统,需要怎么做?有几种方法?
1.创建新组ceo
2.将ceo组的id号改为2000
3.创建用户aa及bb
4.将aa用户的附加组设置为ceo,将bb用户的基本组改为ceo组
5.成功删除ceo组

=======================================================================================

ACL权限、软件包安装、磁盘管理、磁盘安全、磁盘阵列、mysql、系统启动过程、进程管理、计划任务
网络基本配置、DHCP服务、DNS服务、apache、LAMP、tomcat、nginx、文件加解密、故障恢复、密码破解
日志分析与搭建服务器、安全加固、shelll脚本、iptables

你可能感兴趣的:(linux学习过程)