Linux基础入门
2023-03-31 17:36:07 25 举报
AI智能生成
Linux学习笔记
作者其他创作
大纲/内容
Linux 基础入门
相对路径
在 Linux和Unix系统中一切由根开始
绝对路径
路径
扩展
表示根(目录)
cd /
表示家(目录)
cd ~
表示当前(目录)
cd .
表示当前(目录)上一层
cd ..
表示上一次进入的目录
cd -
切换目录 【cd 命令】
正常的/直接能看到得
可见
.ssh .bashrc .bash_profile 防止误删除 防止篡改
配置
隐藏文件
隐藏
以详细信息的方式显示目录的可见内容
ls -l
想查看所有文件(可见和隐藏) all 所有
ls -a
想查看所有文件(可见和隐藏) all 所有 list 一般用于查看隐藏文件
ls -al 或 ls -la
查看目录 【ls 命令】
1、目录 文件 函数名 变量名称 合法的标识符
1、只能是字母或下划线开头
2、尽量不要出现中文(支持中文)
3、简单 易用 可读性高 高效 PRO
合法的标识符
标识符
mkdir -p day01/images
逐层得去创建目录
mkdir -p
创建目录(一个或多个) 【mkdir 命令】
覆盖得方式写入
>
追加得方式写入
>>
输出重定向
输出信息 【echo 命令】
显示当前目录 【pwd 命令】
创建链接文件 【ln 命令】
文件名.扩展名
创建空文件 【touch 命令】
cp a.txt aa.txt
复制文件或目录
cp -r day04 day05
复制一个目录下面得所有内容
例子
复制文件 【cp 命令】
1、当前目录下操作 重命名
2.相同/不同 移动文件或目录
【作用】
移动或重命名【mv 命令】
删除文件【rm 命令】
删除空目录 【rmdir 命令】
yum install tree
需要安装tree包
树形结构显示目录【tree 命令】
文件及目录操作
【作用】查看文件内容 从文件的第一行开始显示
cat>a.txt<<EOF
高级用法
cat 命令
【作用】 查看文件内容 从文件的最后一行开始显示
tac 命令
打印文件到命令行(查看文件)
【作用】分页查看文件内容 从一页开始
more 命令
【作用】分页查看文件内容 从最后一页开始
less 命令
分页显示文本内容
【作用】从文件的头部内容开始查看
head 命令
【作用】从文件的尾部内容开始查看
从文件的尾部内容开始查看 查多少行
tail -n
实时查看
tail -f
tail -n 200 -f xxx.log
tail 命令
显示文件头、尾内容
grep 命令
在文本文件中查找某个字符串
wc 命令
统计文本中行数、字数、字符数
nl 命令
查看文件内容 带行号显示
文本内容
【作用】 可以查看一个文件的文件类型是什么
【实例】a.txt 以后写脚本的时候用的到
file 命令
1、显示命令的全路径
2、我们可以使用该命令查找命令所在的目录(pwd)路径
3、用于配置在全局的变量或环境变量的时候使用 例如: /etc/profile $PATH
4、默认是在$PATH 系统PATH 环境变量记载了路径的配置文件信息
【实例】which rm
将遍历所有的PATH路径,输出所有的匹配项
-a
【参数】
which 命令
【作用】显示命令以及相关文件的全路径
-b 定位指定的命令的可执行文件
-s 定义源码文件
-m man帮助文件(文档)的路径
【例子】
whereis 命令
保存文件名以及对应的路径信息
查询的是数据库,不是去递归磁盘目录
能够快速的得到结果
Linux 系统中mlocate.db
【作用】快速的定位文件的路径
yum list |grep locate
查看是否安装locate
yum install -y mlocate.x86_64
安装 mlocate
updatedb
更新数据库
【安装】
-c 不显示内容只显示行数
-i 匹配的时候忽略大小写
-r 支持正则
1、依赖是程序实现构建的这个索引
2、文件系统上查找符合条件的文件
3、/var/lib/mlocate/mlocate.db
手动更新方案
4、updatedb命令更新索引数据库
5、搜索速度很快,但是如果文件经常发生变化,就不适用了
6、搜索出来的文件以绝对路径显示
7、默认基于模糊查询
非实时搜索
【特性】
locate 【参数】 内容
【总结】
locate 命令
同时可以调用其他的命令执行相应的操作
还可以结合通配符等一些使用
Shell中有三剑客 结合使用
通过管道符一起使用
查找目录下的文件
1、通过指定的路径完成文件的查找
2、搜索的速度很慢,逐合用于查找非系统文件,就是实时查找
3、设置搜索用户具备读取和执行权限的目录
4、默认是精确查询
实时搜索
按照文件名的方式进行查找文件,这里高级用法 结合通配符 * ? [] 等特殊的字符
-name
- 普通文件
l 链接文件
d 目录
b 块设备
c 字符设备
s 套接字
p 管道
指定文件的类型
-type
按照文件的权限查找
-perm
反向查找
!
指定查找的深度 3
-maxdepth
M
G
c
k
按照文件大小的方式查找文件
-size
空文件
-empty
空目录
-empty type -d
按照指定的访问时间来查找 单位是 天
-atime
按照指定的状态改变时间来查找 单位是 天
-ctime
按照指定的更改时间来查找 单位是 天
-mtime
-inum
-link
属主
-user
属主UID为xxx
-uid
没有属主
-nouser
属组
-group
属组gid
-gid
-o
-not
与 或 非
条件运算符
排除目录
EXPRESSION
处理动作
【进阶】
find . atime -2
1、查找两天内被访问的文件 当前目录下
find . atime -5
2、查找五天内被修改的文件,当前目录下
find /var/log -mtime -5
3、查找五天内被修改的文件 /var/log
find /var/log -mtime -5 -name '*.log'
find /var/log -mtime -5 -perm 644
find . -type d
6、查找当前目录下所有子目录
find . -type d -maxdepth 3
7、查找当前目录下所有的子目录,指定查找的层数
find . !-type d
8、查找当前目录下所有类型的文件
find . size +200M
9、查找当前目录下查找大小200M
【生产案例】
find 命令
文件及目录查找
常见的命令
作用: 创建并编辑文件
yum install -y vim
命令模式(默认模式)
编辑模式(插入模式)
底行模式(命令行模式)
模式转换
底行模式
要搜索的内容
/keyword
命令行模式
文本查找
只替换光标所在行,从第一个字符开始查找关键字第一次出现的位置
s/old/new
只替换光标所在行,从第一个字符开始查找关键字所有出现的位置
s/old/new/g
替换整个文档中关键字的内容
%s/old/new/g
语法
文本替换
进入编辑模式 插入 i
退出编辑模式 sec
保存:后面输入 w
退出:后面输入 q
不保存退出:后面输入 q!
显示行号 set number
查找关键字 /xxx 按 n跳到下一个 ,shift+n 上一个
复制光标所在行,并粘贴 yyp
h j k l 对应上下左右移动
基本操作
vim 文本编辑器
vi/vim文本编辑
/bin
/sbin
/root
/home
/boot
/dev
/proc
/media
/lib
/lib64
/sys
/var
/tmp
/usr
/opt
配置文件
/etc
/run
等
/
yum install -y tree用树形结构显示目录的内容tree -L 1 或 tree -L 2
一切由根(/)开始
是一个倒着的树形结构
系统目录结构
网卡配置文件的目录
/etc/sysconfig/network-scripts
修改网络后需要重新启动网络systemctl restart network
/etc/sysconfig/network-scripts/ifcfg-ens33
file system
fs
table
tab
/etc/fstab
hostnamectl set-hostname xxxx
修改主机名
/etc/hostname
查看本地DNS域名解析
/etc/hosts
DNS 信息
/etc/resolv.conf
配置环境变量
/etc/profile
/etc/shells
Bash全局变量
/etc/bashrc
~/.bashrc
~/.bash_profile
JAVA_HOME
$PATH
export http_proxy=http://192.168.1.14:1080
export https_proxy=https://192.168.1.14:1080
curl https://www.google.com
宿主机科学上网,虚拟机如何设置
全局
用户
查看内核版本信息
/etc/redhat-release
内核调优,存放系统管理的命名和初始化 进程
/etc/init.d
运行级别
/etc/inittab
root用户权限
/etc/sudoers
保存加密后的密码
/etc/shadow
yum 软件仓库源
/etc/yum.repos.d
C:\\Program Files
/usr/local
账号信息的文件
/etc/passwd
设定用户组合相关信息
/etc/group
/usr/src
内核转发
内核随机端口范围
内核配置文件
/etc/sysctl.conf
作用
文件类型
日志文件
格式
系统级日志文件
文本文件
messages
安全日志文件
secure
硬件信息加载情况日志文件
dmesg
定时任务日志文件
cron
记录登陆者信息的文件
二进制文件
wtmp
记录用户近期登陆的情况
进制文件
lastlog
/usr/log
概念: Linux 系统中重要的一个文件,内核信息和进程方面的信息
/proc/cpuinfo
/proc/meminfo
/proc/loadavg
/proc/mounts
目录
/var/www/html
存储用户命令
存放系统命令
用户的家目录/主目录
root用户家目录
启动信息
临时目录
/temp
重要的目录和文件
概念: 定时任务/计划任务
cron.d
cron.daily
cron.hourly
cron.monthly
cron.weekly
crontab 目录
crontab
定时任务的目录
取出变量的值
$
合法的标识符/变量名/全大写(系统变量)
LANG
$LANG
echo $LANG
查看字符集
export LANG=zn_CH.UTF-8
设置字符集
修改配置文件: /etc/sysconfig/i18
C6
方式一:修改配置文件:/etc/locale.conf
方式二: localectl set-locale LANG=en_US.YTF-8
生效:source /etc/locale.conf
C7
CentOS 系统如何修改字符集
Windows 下 XShell
Linux/Unix
分析
终端乱码问题
【企业级生产案例】
字符集
Linux/Unix 根目录
Linux/Unix 用户主目录
~
Linux/Unix 所在当前目录
.
Linux/Unix 所在当前目录上一层目录
..
-
表示位置
所见即所得
'Hello World'
结果显示的就是单引号引起来的内容
echo '被引起来的内容'
字符串常量
单引号
' '
echo \"$LANG\"
所见非所得
双引号
\" \"
命令替换
反引号
` `
用在一些命令、变量、路径等
转义字符
\\
引号相关
标准输出重定向 覆盖的方式写入到文件
标准输出重定向 追加的方式写入到文件
重定向输出
用来引导命令从哪里读取数据
<
<<
重定向输入
当系统无法上网/vi vim文本编辑器没有/修改yum源
【生产级案例】
2>&1
0
标准输入
1
标准输出
2
错误输出
同时把错误信息或正确的信息都记录到文件
意义
【企业实战案例】
重定向符
含义:把前面一个命令的结果通过管道符传递给后面的命令
注意:管道默认传递的是文字符号
ps -ef|grep tomcat
查看a文件 把结果统计行数
cat a.txt |wc -l
在home目录下所有文件中查找,包括close 的文件,并分页输出
grep -r \"close\" /home/* | more
【案例】
|
有名管道
匿名管道
IPC进程间通信
管道
管道符
# 表示你是root
Shell 终端CLI
# 这是一个端口
nginx/ 等
编程语言中的一种解释说明,被注释内容在程序中不起作用
what
代码的/配置文件的解释说明作用
why?
# 标记以后就不起作用
How?
配置文件或Shell 表示注释
出现的位置
#
$ 标识你是一个普通用户
Shell终端CLI
脚本或配置文件中 $LANG 取出变量中的内容
一般在脚本中
openvpn --config xxx.xxx.xxx.xxx.ovpn &
在命令行中 & ,让命令或在后台运行
&
可以表示一个表达式结束,一个语句结束
连续不同命令的分隔符
;
w!
q!
vim文本编辑器
强制
上一次ls开头的命令并执行
!ls
查找
其他字符
特殊符号
作用 :就是一些特殊的字符,来实现某些特定的特殊的功能精确查找,缩小范围
匹配任意字符
a.txt
b.txt
c.txt
d.txt
....txt
day01
cp *.txt ~/
cp /etc/*.conf /backup
rm -rf *.txt ~/
mv *.map3 /day01/music
*.txt
*.doc
*.map3
*.conf
*.c
文件名称.扩展名
【扩展】
*
任意名称.任意类型
mv *.* /tmp
*.*
目录下的所有内容
使用需谨慎
rm -rf /*
/*
匹配字符,有且仅有一个字符
ls ???
?
匹配的字符集合
匹配abcd中任何一个字符,abcd可以是连续的也可以不连续的
[abcd]
匹配a-z中任何一个字符,a-z可以是连续的也可以不连续的
[a-z]
匹配0-9中任何一个字符,0-*可以是连续的也可以不连续的
[0-9]
匹配不包括abcd中任何一个字符。
[!abcd]
匹配不包括a-d中任何一个字符。
[!a-d]
[^a-b]
字符集合
[]
匹配文件
touch {a..z}.txt
{}
通配符
字符集、特殊符号、通配符
图片类的文件进行打包
源文件/源代码 *.h *.c *.cpp
特点
*.tar
gzip 工具进行压缩
使用
GNU
快
方式一: tar
gzip 【选项参数】
解压缩文件
-d
显示执行过程
-v
列出压缩文件执行过程
-l
将内容输出到标准输出
不改变原有文件
-c
对目录下所有文件递归进行压缩的操作
-r
测试,检查压缩文件是否完整的
-t
压缩率,手动设置1-9,数字越大压缩率越高,默认的压缩率 数字 6
-<数字>
选项参数
方式二:直接使用gzip工具
*.tar.gz
特点:大文件压缩
200M(可以自定义)
表示设置每一个分割单元/块的大小
-b
指定分割后的后缀是数字形式表示
来设置分割序列的长度。默认长度2个 00 01 02
split
文件分割
做日志分割
视频、视频、音频、大于4G单个文件的分割
用途
tar zcvf - 复仇者联盟4.mkv | split -b 200M -d -a 2 - 复仇者联盟4.mkv.tar.gz.
【企业真实案例】
*.gz
*.tgz
*.bz2
*.tar.bz2
bj2.txt.Z
compress bj2.txt
压缩
uncompress bj2.txt
解压
*.Z
*.tar.Z
unzip xxx.zip
yum install -y unzip
安装
*.zip
*.rar
常见的压缩引擎
得到的压缩文件比较小
所占的存储空间(磁盘)空间小
压缩包比较小
压缩率高
bj2.txt.bz2
bzip -z bj2.txt
方式一:bzip -d bj2.txt.bz2
方式二: bunzip2 bj2.txt.bz2
bzip工具
简单的说就是一个打包的命令
Linux系统中可以将多个文件打包一起形成一个整体。
节省时间
便于分类管理
备份数据
Linux系统中可以将一个文件解包成若干个普通文件。
恢复文件
查看使用
tar 命令
tar 【可选项】【文件】
通过gzip压缩或解压
-z
创建一个新的压缩包
显示箱体的tar命令执行过程
指定压缩文件的名称
-f
打包的时候想排除不需要处理的文件或目录
--exclude=PATH
解开tar格式包
-x
指定解压的目录路径
-C
打包软连接文件指向的源文件
-h
不解压的情况下查看压缩包内容
保持文件属性不变(原有属性)
-p
危险 以绝对路径打包
-P
用于增量打包备份(仅打包指定日期内新增的文件)
-N
通过bz2压缩或解压
-j
compress
-Z
向已经存在的压缩包增加文件
可选项
tar 语法
tar zcvf
tar zcf
使用bzip2 打包
tar jcvf
tar zxvf
tar zxf
使用bzip2 解压
tar jxvf
tar ztvf
tar ztf
查看
总结
index.html
index.css
index.js
font
images
static
index.php
tar -zcvf html-2023-03-30.gz ./html
1.网站整站备份
tar -ztvf html-2023-03-30.tar.gz ./html
在不解压的情况下查看
2.生产炸弹
tar -zcvf html-2023-03-30.tar.gz ./html exclude=html/index.js
3.打包时排除文件
tar -zcvf html-2023-03-30.tar.gz ./html exclude=html
4.打包时排除目录
tar zcvfh test.tar.gz ./rc.local
5.打包软连接
tar zcvf 2023-03-30-etc.tar.gz `find /etc -type f`
6.打包普通文件
打包压缩
文件和目录管理
- 普通文件
l 链接文件
d 目录
b 块设备
c 字符设备
s 套接字
p 管道
其他
文件属性
R W X
4 2 1
读 写 执行
.conf
.cnf
.sh
.rpm
.tar.gz
.tar
.taz
.zip
.log
文件扩展名
【作用】修改文件权限(RWX)
+ 增加权限
- 去除权限
【可选项】
chmod + x install.sh 给执行权限
chomd 755 install.sh 给执行权限
rsync
chomd 600 密码文件的时候或要注意
chomd 777 install.sh 给执行权限
根据需求谨慎的使用文件属性的权限问题,不要上来就给777
创建文件默认权限 644
chmod
【作用】用于修改文件或者目录的拥有者,这样的话操作起来比较安全。例如ES
-R
【可选参数】
chown
【作用】用于修改文件或者目录的拥有者,修改用户组
chgrp
权限管理
第一个字符 文件类型
第二个字符开始 第十个字符结束
普通权限
一般权限
默认权限
+ 在原有的基础上增加权限
- 在原有的基础上 减少权限
仅仅是对于二进制文件/可执行
i root权限,某些重要的内容不让你修改。/etc/shadow
a 允许追加写入,不能删除
chattr
设置隐藏权限
lsattr
查看隐藏权限
隐藏权限
特殊权限
【作用】文件的ACL权限 提供了所有者(属主 属组 其他人)的读、写、执行权限之外的特殊权限控制。(访问控制列表)
文件
设置对象
群组中的成员
群组
受益的对象
getfacl
查看ACL的权限
setfacl
最大有效权限(rwx)
mask
设置ACL的权限
setfacl -x u:用户名 文件名
删除指定用户的ACL权限
setfacl -x g:用户名 文件名
删除指定用户组的ACL权限
删除其他用户组的ACL权限
删除ACL的权限
setfacl -m u:用户名:权限 -R 文件名
递归ACL的权限
setfacl -m d:u:用户名:权限 文件名
默认ACL的权限
ACL权限
文件权限
文件属性和权限管理
拥有最高权限
能够登陆系统,但是管理员用户不但可以操作自己的目录内容,也可以操作别人的。
UID 0
超级用户
普通用户也可以登陆系统,但是只能操作自己的目录和内容
500-65535
大于1000
UID
普通用户
傀儡用户
无法直接创建,系统自身拥有,不具有登陆系统的能力
1-499
1-999
虚拟用户
多用户操作系统
UID 身份证号
GID 户口本号
通过 id 命令 可以查看用户信息
通过 su命令 切换系统中不同的用户
sudo es
通过 sudo命令 普通用户临时提权操作
whoami
通过 whoami命令 显示当前用户
UID 和 GID
用户名
root
有密码
x
GID
说明信息
默认Shell 环境
/bin/bash
冒号分割成7个字段
root:x:0:0:root:/root:/bin/bash
属组信息
加密后的密码
创建新用户时的shell 模板
/etc/skel
重要的目录
必须有管理员权限
用户密码需要有规则
密码不宜尝试见使用
要求:
英文大小写加数字特殊字符 8位以上
中文密码
默认修改root密码
passwd
passwd azkaban
修改密码
指定用户登入时的起始目录
useradd -d /home/git -m git username
指定用户登入后所使用的Shell
-s
自动建立用户的登入目录
-m
加上备注文字。备注文字会保存在passwd 的备注栏位中。
变更预设值
-D
指定账号的有效期限
-e
指定在密码过期后多少天即关闭该账号
指定用户所属的群组
例:useradd gitlab -g git uasename
-g
指定用户所属的附加群组
-G
不要自动建立用户的登入目录
-M
取消建立以用户名称为名的群组
-n
建立系统账号
指定用户ID
-u
可选参数
useradd
新增用户
-r 删除用户同时删除家目录
userdel
删除用户
-r 删除的时候连同目录一起删除
usermod
修改用户
用户管理命令
groupadd
新增用户组
groupdel
删除用户组
groupmod
修改用户组
用户组管理名
什么原因导致的,如何去修复?
用户目录配置文件缺失导致的
故障
创建一个新的用户,普通用户
用户目录配置文件删除
su -test
-bash-4.2$
复现
CentOS 系统创建一个用户操作系统到底执行什么操作?
/home/test
创建用户的主目录的时候
cp /etc/skel/.bash* /home/test
解决
1、 -bash-4.2$
root 用户权限
1.交互式密码
通过使用脚本改密码
跟内容
结合重定向
stdin (标准输入缓冲区)
stdout
stderr
passwd --stdin 用户名
echo 123456|passwd --stdin sec
风险
passwd --stdin sec<pass
案例
2. 非交互式设置密码
2.用户改密码
6位 至少
8个字符
大写
小写
英文字母
数字
特殊字符
8位
1、用户的密码要足够的复杂
3天左右
2、周期性的修改你的管理员密码
LDAP
Windows Server AD
3、项目架构的鉴权方式
SMS
Email
Google Authenticator
4、多重身份验证
3.密码策略
useradd tomcat -s /sbin/nologin -M
4、带有安全思想
例如: 想让azkaban用户具有特殊的权限,less可以查看到/etc/shadow文件中的内容。
azkaban的普通用户
root root
chmod u+s /usr/bin/less
chmod 4755 /usr/bin/less
只是使用了这个less的命令,more cat vim等都行
【分析】
效果一样
1、只有是一个可执行文件(2进制)
2、所有者必须对你想要设置suid的文件具有执行权限
3、命令在执行过程中,其他用户获取了(程序 可执行文件)所有者的身份
4、具有时间限制,执行完毕就消失
【充分必要条件】
root 用户
ps -axu | grep less
less /etc/shadow
【验证】
惭怍有风险,使用需谨慎
【警告】
5、suid
6、sgid
7、sbin
防止自动拉起
定时任务/计划任务
封杀指定IP地址端,30分钟/永久封杀
防火墙
杀死进程
进程管理
update.py
定时任务技术
chattr +i
远程下载 github
00:00
重要配置文件
防止删库跑路 rm -rf
【收获】
1、封杀IP地址
2、杀掉可疑进程
3、定时任务
4、用户管理
5、文件目录
【应急】
8、防删
日志文件平时我们可以给定 +a 这样的隐藏权限,日志允许你写入,但是不允许你删除。
chattr +a log.txt
9、日志文件允许写入,不允许删除
用户和群组管理
磁盘管理
网络管理
其他管理
0 条评论
下一页