Linux 基础

目录

目录结构和管理命令

用户管理和权限管理

用户,用户组,密码映射文件

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow

groupmems

[gpasswd newgrp](#gpasswd newgrp)

change

修改文件权限,属主和属组

chmod

chown

[umask 权限掩码](#umask 权限掩码)

特殊权限

[acl 权限](#acl 权限)

查看和设置ACL权限

删除ACL权限

设置ACL权限后的注意事项

[ACL 权限的优先级](#ACL 权限的优先级)

[设置默认的 ACL 权限](#设置默认的 ACL 权限)

[sudo 权限](#sudo 权限)

sudo的配置

[I/O 和 管道](#I/O 和 管道)

I/O概念

标准输出重定向

标准输入重定向

管道符

三通管道

从标准输入接受多行内容

vim

插入模式

[ESC 操作](#ESC 操作)

vim的恢复文件操作

vim的三种工作模式

命令模式的使用

光标的移动

复制、粘贴、删除

文件查找、撤销操作

插入模式的使用

退出模式的使用

快捷方式

保存和退出

查找和替换

vim的特殊模式-可视化模式

注释和多行注释

多窗口模式

多窗口模式的补充

文本处理工具

文本提取

[grep 正则表达式](#grep 正则表达式)

grep案例

三剑客

文本分析

文本操作

[tr 文本转换](#tr 文本转换)

[sed 文本编辑](#sed 文本编辑)

地址定界

编辑动作

进程管理

[进程管理工具 ps](#进程管理工具 ps)

[ps aux 查看进程](#ps aux 查看进程)

[top 动态进程信息](#top 动态进程信息)

其他系统监控工具

进程的机制信号

进程优先级

nice和renice修改进程优先级

网络管理

网卡的命名规则

nmtui

NetworkManager工具

[route -n 查看网关的方式](#route -n 查看网关的方式)

[网络 bond](#网络 bond)

[vm 三种网络模式](#vm 三种网络模式)

桥接模式

[NAT 模式](#NAT 模式)

仅主机模式


目录结构和管理命令

在 windows 中,每一个分区都是一个目录树

在 linux 中 , 所有的文件系统都是一颗树

用户管理和权限管理

用户,用户组,密码映射文件

0 超级管理员 1-999 保留系统用户 1000 以上普通用户

/etc/login.defs 查看用户 uid 范围

/etc/passwd

  • 字段1:用户名

  • 字段2:密码占位符(x表示登录用户需要密码验证)

  • 字段3:UID

  • 字段4:GID

  • 字段5:描述信息

  • 字段6:家目录

  • 字段7:登录shell

/etc/shadow

  • 字段1:用户名

  • 字段2:加密后的密码

  • 字段3:最近一次修改密码的时间(默认单位为天数,从1970-01-01开始计算)

  • 字段4:密码最短有效期(默认为0,表示永久有效)

  • 字段5:密码最长有效期(默认为99999,表示永久有效)

  • 字段6:密码到期前的告警天数(默认为7)

  • 字段7:密码过期后账号还可以保持的天数

  • 字段8:账号的失效日期

  • 字段9:保留字段

/etc/group

  • 字段1:用户组名

  • 字段2:密码占位符(x表示登录用户需要密码验证)

  • 字段3:GID

  • 字段4:组内的成员

/etc/gshadow

  • 字段1:用户组名

  • 字段2:加密后的密码

  • 字段3:组的管理员

  • 字段4:组内的成员

groupmems

  • -g 指定用户组

  • -d 从组删除成员

  • -a 添加成员到组

  • -p 删除组内所有成员

gpasswd newgrp

  • -r 删除用户组的密码

  • -A 设置用户为某一个组的管理员

  • -a 添加到组

  • -d 从组内删除某个成员

newgrp 登录到组 newgrp 用户组

uid=1000(user) gid=2024(zhangsan) groups=2024(zhangsan),10(wheel),1000(user) # 登录到zhangsan组

change

  • chage -m 0 -M 90 -W7 -I 14 user3 分别修改用户密码的最短期限,最长期限,警告周期和失效期限

  • chage -d 0 user3 强制要求用户在下一次登录时更新密码

  • chage -l user3 显示用户密码的的信息

  • chage -E 2020-10-10 user3 用户将于2020-10-10到期(YYYY-MM-DD格式)

修改文件权限,属主和属组

在linux 中,将访问文件的用户分为三类

  • 文件的用有人 user

  • 文件的有用组 group

  • 其他人 other

文件类型

  • "-"普通文件

  • "d" 文件夹

  • "l" 快捷方式

  • "b" 设备文件 块

  • 设备

  • "c" 字符型设备

  • "s" sock socket

  • "p" pipe 管道

类型 -rw-r--r--. 最后这个点是一个预留权限,为后面增加权限时留的

ln 文件 文件 硬链接两个文件

软硬链接的区别就在于软连接的源文件被删除了则软连接也打不开了,但是硬连接的源文件删除了连接任然可以用

改变文件拥有人 chown === change owner

改变文件拥有组 chgrp == change group

改变文件的权限 chmod === change modify

在linux 中,将访问文件的用户分为三类

  • 文件的用有人 user

  • 文件的有用组 group

  • 其他人 other

文件类型

  • "-"普通文件

  • "d" 文件夹

  • "l" 快捷方式

  • "b" 设备文件 块

  • 设备

  • "c" 字符型设备

  • "s" sock socket

  • "p" pipe 管道

类型 -rw-r--r--. 最后这个点是一个预留权限,为后面增加权限时留的

ln 文件 文件 硬链接两个文件

软硬链接的区别就在于软连接的源文件被删除了则软连接也打不开了,但是硬连接的源文件删除了连接任然可以用

改变文件拥有人 chown === change owner

改变文件拥有组 chgrp == change group

改变文件的权限 chmod === change modify

chmod

修改文件或文件夹权限

chown

修改文件属主和属组,只有root才可以修改文件的属主

umask 权限掩码

文件和文件夹的默认权限就是他规定的,默认是设置的 0022 (首位先不管)

系统在给文件夹最大的是 777 文件是 666 再经过 umask 掩码的遮罩就现成了后面的 755 和 644

特殊权限

第一个 7 就是表示的特殊权限 , /etc/bashrc 全局环境变量配置

(0022 主要是 首位权限的解释) 文件的特殊权限

s 权限

suid :不管给谁增加这个 suid 它都可以暂时获取这个命令拥有人的权限,只能应用在脚本文件上,对目录无效

sgid : 可以作用在文件夹上,文件上,命令上

rwS 表示 底下没有 x 权限 rws 表示底下有 x 权限

t 权限

只能运用在文件夹中,每个人都可以上传,但是只有自己可以删除,其他用户都不可以删除

acl 权限

访问控制列表:(Access control list)

setfacl -m 设置更多权限 getfacl 查看更多权限 setfacl -x 去掉指定权限

去除所有附加权限 setfacl -b 去掉默认用 -k

查看和设置ACL权限

  • ls -l 粗略的查看权限

  • getfacl 详细的查看权限

  • setfacl 设置权限

删除ACL权限

  • setfacl -x 删除用户/用户组的acl权限

  • setfacl -R 递归删除acl权限

  • setfacl -b 清空所有的acl权限

设置ACL权限后的注意事项

如果一个文件设置了acl权限,那么用chmod修改组的权限,实际上是更改acl的掩码

更新文件的组所有者权限用setfacl -m g::perms file

ACL 权限的优先级

文件拥有人 ----》 ACL 权限 ------》 拥有组 --------》 组 ACL ---------》 其他人

设置默认的 ACL 权限

sudo 权限

sudo的配置

sudo的配置文件有2个:

  • /etc/sudoers

  • /etc/sudoers.d/*

这是一个提权工具,能够将一个用户提权到指定用户的身份执行命令

/etc/sudoers 提权文件 (强制保存)

I/O 和 管道

I/O概念

标准输出重定向

将输出在屏幕上的内容重定向到文件中

cat /etc/passwd > xxx.txt

stdin 标准输入

stdout 标准输出

stderr 标准错误输出

  • > 正确输出

  • >> 追加输出

  • 2> 错误输出

  • &> 全部输出

  • 2>&1 错误的当正确输出

标准输入重定向

从文件中读取内容到标准输入

从键盘输入 << 将用户多次输入的结果一次输出

wc -l < /etc/passwd

管道符

将前面命令的执行结果作为后面命令的参数

三通管道

tee命令:可以同时实现将结果输出到屏幕以及保存到文件

示例:将列出的内容存到test.txt文件中,并且使用less查看页面输出

ll | tee test.txt | less

从标准输入接受多行内容

一次输入多行内容到文件

## 从标准输入接受多行内容

一次输入多行内容到文件

cat > 文件 << EOF

vim

插入模式

  • i 插入模式

  • o 在当前行下方插入

  • O 在当前行的上一行进入插入

  • a 行首位

  • A 行尾

ESC 操作

  • G 跳转至文件的最后一行

  • gg 跳转至文件的首一行

  • dd 剪切一行 p 粘贴

  • u 撤回

  • yy 复制 p 粘贴

  • cc 删除指定行并且加入插入模式

  • set ignorecase 忽略大小写 / set ic

  • set noic 不忽略

  • %s/yes/no/g 全局替换, 把 yes 替换成 no 在这之前先忽略大小写

  • v + 方向键 一个一个字母的选中

  • ctrl + w + s 多窗口

vim的恢复文件操作

在使用vim编辑文件的时候,如果未保存内容因为意外退出,再次打开文件就会无法打开,vim编辑器有一个保护机制,系统会在目录下创建一个同名隐藏的.swap文件

vim的三种工作模式

命令模式的使用

光标的移动
复制、粘贴、删除
文件查找、撤销操作

插入模式的使用

退出模式的使用

快捷方式

im的退出模式可对文件进行保存、另存为、退出等操作 从命令模式切换到插入模式,按键 'shift + :'切换到退出模式

保存和退出
查找和替换

vim的特殊模式-可视化模式

可视化模式可以进行多选

选择文本区域

  • v 字符区域高亮选中

  • V 行区域高亮选中

  • Ctrl + v 列区域高亮选中

注释和多行注释

多窗口模式

  • Ctrl + w , s 横向分割屏幕

  • ctrl + w , v 纵向分割屏幕

多窗口模式的补充

文本处理工具

文本提取

  • 文本内容 cat more less nl

  • 文本摘选 head tail

  • 按关键字提取 grep

  • 提取列或者字段 cut

grep 正则表达式

grep案例

三剑客

grep -r 根据文件的内容来搜索 grep -rinw 根据文件搜索

awk awk '{print $5}' 第 5 列 awk '{print $NF}' 最后一列

文本分析

  • 文本统计 wc 统计单词数,行数,字节大小

  • 文本排序 sort 文本排序,和uniq联合使用删除重复的行

  • 文本比较 diff , vimdiff 比较两个文件的差异

文本操作

tr 文本转换

sed 文本编辑

sed -i 会改变源文件

sed -i.bak 会改源文件但是还会备份一份

sed '1,3d' 删除 1到 3 行 '1;3d' 删除 1 和 3 行

地址定界
编辑动作

进程管理

进程管理工具 ps

ps aux 查看进程

  • PID 进程 id

  • mem 内存

  • vsz 虚拟内存

  • rss 真实内存

  • tty 终端 ? 代表该程序不属于任何终端

  • stat 进程的状态 s 表示休眠状态 i 交互式程序,等到用户访问 < 优先级

  • a 所有进程

  • x 显示扩展信息

  • o 定制,可以用户选择要显示什么

  • u 打印进程所有者的信息

  • sort 排序

top 动态进程信息

  • d 指定·刷新的时间

  • l 不显示失效的进程

  • p 指定进程的进程号

  • u 指定用户

  • n 循环次数

使用 top 之后的交互式操作

  • P 以 cpu 占用率排名

  • M 以内存占用率排名

  • N 以 PID 排序,降序

  • T 根据运行时间排序

  • c 显示具体的操作

  • F 选择显示的内容

其他系统监控工具

md5sum 计算一个文件的 hash 值

pmap 可以查看一个进程具体在做什么

/etc/sysctl.conf 查看共享内存的设置

bg % 把一个程序放到后台运行 fg % 将后腰暂停的程序放到前台运行 ctrl + z 把一个程序放在后台暂停

jobs -p 查看当现正在运行的进程的 pid 再通过 kill 【pid】 杀死进程

pgrep 专门过滤进程

pidof 查看进程的 pid

proc 文件夹下的数字,每一个数字都代表一个进程

进程的机制信号

进程优先级

nice和renice修改进程优先级

nice 的值来决定优先级 -20 ~ 19 数字越小优先级越高

调整一个已经运行的程序的优先级

renice 是设置一个已经运行的程序的优先级,nice 是设置一个没有运行的程序的优先级让他立刻执行就获得相对应的优先级

网络管理

最小化安装是没有 ifconfig 的,但是有 ip add

网卡的命名规则

  • en : 以太网卡

  • wl : 无线局域网设备

  • ww : 无线广域网设备

  • s 板载网卡

  • o 表示热插拔

  • p 表示 pci 设备

  • lo 本地回环接口 (自己给自己发信息)

  • virbr0 专门用来跑虚拟机用的

改完 ip 地址要让 ens160 文件生效 需要执行

复制代码
 nmcil connection reload         
 ​
 nmcli connection down ens160 ; nmcil connection up ens160

nmtui

nmtui 图形化界面可以设置网络 IP

NetworkManager工具

图形化管理工具:nmtui

命令行管理工具:nmcli

route -n 查看网关的方式

cat /etc/resolv.conf 查看 dns 的方式 这个文件的内容我们手动改是不生效的

设置 host 文件用于内部解析 /etc/hosts

网络 bond

# 添加网卡
nmcil connection add type ethernet ifname ens160 con-name ens160
nmcil connection add type ethernet ifname ens192 con-name ens192
# 配置 ip 地址
nmcil connection modify ens160 ipv4.method manual ipv4.address 192.168.31.101 ipv4.gateway 192.168.31.254 ipv4.dns 192.168.31.254 autoconnect yes
nmcil connection modify ens192 ipv4.method manual ipv4.address 192.168.31.102 ipv4.gateway 192.168.31.254 ipv4.dns 192.168.31.254 autoconnect yes
# 本地网卡有 ip 地址之后再配置 bond
nmcil connection add type bond ifname bond0 con-name bond0 mode active-backup milimon 1000
# 将两个网卡加入到 bond0 中
nmcil connection add type bond-slave ifname ens160 con-name ens160 master bond0
nmcil connection add type bond-slave ifname ens192 con-name ens192 master bond0
# 配置 bond0 的 ip
nmcli connection modify bond0 ipv4.method manual ipv4.adress 192.168.31.201 ipv4.gateway 192.168.31.254 ipv4.dns 192.168.31.254 autoconnect yes
# 重启 bond0
nmcil connection donw bond0
nmcil connection up bond0

vm 三种网络模式

桥接模式

NAT 模式

仅主机模式

相关推荐
vvw&26 分钟前
如何在 Ubuntu 上安装 Jupyter Notebook
linux·人工智能·python·opencv·ubuntu·机器学习·jupyter
钰爱&3 小时前
【操作系统】Linux之线程同步二(头歌作业)
linux·运维·算法
Yz98766 小时前
Hive基础
大数据·linux·数据仓库·hive·hadoop·bigdata
Stara05117 小时前
Linux系统常用操作与命令指南
linux·vim
white.tie8 小时前
linux配置nginx
linux·运维·nginx
Komorebi.py8 小时前
【Linux】-学习笔记03
linux·笔记·学习
dessler8 小时前
云计算&虚拟化-kvm创建网桥(bridge)
linux·运维·云计算
YRr YRr8 小时前
Ubuntu20.04 解决一段时间后键盘卡死的问题 ubuntu
linux·数据库·ubuntu
醇氧10 小时前
ab (Apache Bench)的使用
linux·学习·centos·apache
moneyxjj10 小时前
Linux各种解压命令汇总
linux·运维·服务器