linux基础
TCP/IP
ip: 计算机唯一网络标识 ,由32个二进制组成,分割成四个部分,再将个二进制转换为十进制 例如:127.0.0.1 ,192.168.1.1
- **A类:**1~127 网+主+主+主
-
**B类:**128~191 网+网+主+主
-
**C类:**192~223 网+网+网+主
组播及科研专用
- **D类:**224~239 组播
-
**E类:**240~254 科研
###########################################
ip地址组成:网络位+主机位
相同网络通信:
192.168.1.1与192.168.1.1 (192.168.1 网络)
不同网络通信:(不同网络间的通信要用到路由器)
192.168.1.1与192.168.4.1 (192.168.1 网络 与 192.168.4 网络)
子网掩码
标识IP地址的网络位与主机位
利用二进制的1标识网络位
利用二进制的0标识主机位
192.168.1.1 == 11000000.10101000.00000001.00000001
255.255.255.0 == 11111111.11111111.11111111.00000000
简易写法:192.168.1.1/24 (说明子网掩码24个1)
**网关地址:**一个网络到另一个网络的关口(不同网络通信时,一般在路由器上)
**DNS:**域名解析,将域名转换为IP地址
linux目录结构
-
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 -
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 -
/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 -
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 -
/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。 -
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。 -
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 -
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。 -
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。 -
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 -
/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
-
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。 -
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 -
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。 -
/srv:
该目录存放一些服务启动之后需要提取的数据。 -
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
-
/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。 -
/usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。 -
/usr/bin:
系统用户使用的应用程序。 -
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。 -
/usr/src:
内核源代码默认的放置目录。 -
/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 -
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
值得提出的是 /bin、/usr/bin 是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
linux常用命令
命令行提示标识的含义
-
[当前用户@主机名 工作目录]#
-
若当前用户是root,则做后一个字符为#
[root@localhost ~]#
-
否则,最后一个字符为$
[root@localhost ~]$
linux常用命令
pwd — Print Working Diretory 显示当前路径
cd — Change Diretory 进入路径(文件)(例:cd /root)
cd /xxx/xxx 绝对路径 从根开始
cd xxx/xxx 相对路径 以当前位置为参照
cd … 回到上一级目录
ls — List (蓝色代表目录,黑色代表文本文件)
ls [路径] :查看路径下的目录 (例:ls /root)
cat — 查看文本文件的内容
cat 文件路径 (例:cat /root/aaa.txt)
cat /ect/redhat-release #查看系统版本
列出cpu信息 — lscpu
CPU(s) : 几核处理器
检查内存大小、空闲情况 — cat /proc/meminfo
显示主机名 — hostname
更改主机名 hostname xxx (主机名就会变成xxx)
显示网卡信息 — ifconfig
设置临时iip ifconfig eth0 192.168.1.1
mkdir [/路径/]文件名 — 创建目录
touch 文件名 — 创建文件
例:touch aa.txt
less 文件名 — 滚动查看文件
查找: /** 全文查找**
按 n 进行跳转匹配项
按 q 退出
head、tail 命令
head -n 数字 文件名 -n 10 可简写为 -10
tail -n 数字 文件名 n为输出几行,未选择时默认输出十行
grep [选项] ‘匹配模式’ 文本文件
grep aa /root/aa 管道符 查找出包含aa的那一行
从 /root/aa里面找出含有aa行那一行
-i:忽略大写
-v:取反(输出不包含的)
^**:匹配以**开头 grep ^root /etc/passwd
**KaTeX parse error: Undefined control sequence: \* at position 5: :匹配以\̲*̲*结尾的 grep root /etc/passwd
配置网络
-
设置系统主机名
nmtui (不适合批量修改主机名)
reboot 重启服务器
-
永久设置IP地址 子网掩码 网关地址 DNS服务器
-
vim文本编辑器 修改文件内容
三个模式:命令模式 插入模式 末行模式
看文件-> (i)-> 修改文件-> (esc) -> 保存退出(:wq)
命令模式:u(撤销)
-
tab键 — 补全机制
命令行基础
- 命令的执行依赖于解释器(例如:/bin/bash)
用户 --> 解释器 --> 内核 --> 硬件
基本用法
- 命令字 [选项]… [参数1] [参数2]… ([]为可选)
cat /etc/passwd
tail -n /aaa/aa.txt
查看有什么 [选项] :命令字 --help (例: cat --help)
**选项:**调控命令的执行方式
- 短选项: -l、 -A、 -c、 -d …
-多个短选项–>复合选项:-lh 、 -lA 、 -ld …
长选项:–help …
**参数:**命令的操作对象,如目录或文件
快捷键
- Ctrl + l :清空整个屏幕
- Ctrl + c:废弃当前编辑的命令行
- Alt + . :粘贴上一个命令的参数
光驱设备
linux挂载光盘:光盘文件 —>光驱设备—>访问点(目录)
快捷位置:/dev/cdrom
ls -l /dev/cdrom #显示参数的详细属性
在linux中,无法直接访问挂载文件(直接访问回乱码),需要通过目录来挂载
mount命令 挂载
- 格式:mount 设备路径 挂载点目录
例 mount /dev/cdrom /dvd/
ls /dvd
ls /dvd/Packages/
卸载:# umount /dvd
注意事项:
- 只有具有文件系统的才能被挂载(分区或磁盘)
- 卸载的时候不能在目录里 如果在/dev 里面执行umount /dev就卸载不了
- 一个设备可以有多个挂载点(错误,一个设备在同一时间只能有一个挂载点,mmp达内坑我)
- 不允许一个挂载点有多个设备
- 建议挂载点目录的选择,最好自己创建(挂载之后原目录下的文件将会被隐藏,卸载之后才会重新出现)
目录和文件管理
基础命令详解
~:家目录
~user:用户的的家目录 cd ~zhangsan(张三的家目录)
/root:为管理员的家目录
/home:存放所有普通用户的家目录(实际家目录为home下的普通用户名文件夹,如张三的家目录是/home/zhangsan,而不是/home)
- useradd zhangsan
- cd ~zhangsan
- pwd
ls:当前路径下的文件信息
蓝色代表目录,黑色代表文本文件
ls [选项] [路径] :查看路径下的目录 (例:ls /root)
-l:以长格式显示,显示详细属性,长和 h 连用
_A:包括名称以 . 开头的隐藏文档
-h:以易读方式显示(可以把字节变成KB、MB)
-d:显示目录本身(而不是内容)的属性,和 l 连用
隐藏文件创建 touch .aa.txt (以 . 开头的文件默认为隐藏文件)
通配符
- * :任意多个任意字符
- ? :单个字符
# ls aaa* :匹配所有aaa开头的文件或文件夹
# ls *.txt :匹配所有以.txt结尾的文件
# ls aa? :匹配aa加上一个字符的文件
- [a-z] :就像sql里面的bewteen
# ls aa[0-2]:匹配aa0、aa1、aa2(数字只能从0到9)
- {aa,dd} :就像sql里面的in(aa,dd)
# ls aa{aa,dd}:匹配aaaa、aadd
命令别名使用 alias
查看已经设置的别名:alias [别名名称]
定义新的别名:alias 别名名称=‘实际执行的命令行’
取消已设置的别名:unalias 别名名称
#alias hn = ‘hostname’ 设置别名
#alias 查看别名
#unalias hs 删除别名
别名设置不要和系统本身有的命令重名不然会覆盖本身的命令
#alias ls= ‘poweoff’ 输入ls直接执行关机命令而不是展示列表
永久配置别名
上面那种情况是临时的,是把别名加到进程里,系统重新启动后就没有了
永久别名的设置:去配置文件里面设置
位置:~/.bashrc
打开文件填写就行了 vi /~/.bashrc
重新执行文件:source ~/.bashrc
poweroff 关机命令
mdkir 创建目录
-d:把父目录也创建出来(创建多重目录)
mdkir -p aaa/bbb/cc 把aaa、bbb也创建出来
-R 递归显示
rm 删除
-r:递归(如果目录下有文件是无法删除的,可以用-r递归删除)
-f:强制
rm -rf 强制递归删除(rm -rf /* 删库跑路符)
mv 移动文件
也可用于修改文件名
mv 源文件 目标位置 例:mv /data/aa /data/bb
cp 原文件 /data/aa/ 移动到/data/aa下面
cp 源文件 /data/aa 移动到data里面改名字为aa
cp 复制
cp [选项] 原文件 目标位置
cp /data/aa /cc
\cp -r /data/aa /cc \作用:在本次操作临时取消别名
-r 目录下有文件的时候,递归拷贝
重定向操作 ( > )
重定向输入:将命令的输入,作为文本文件内容写入一个文件中
ls --help > /opt/ls.txt >覆盖重定向 (>就是重定向输出,将命令输出到指定位置)
>> 追加重定向
echo
输出,写什么就在屏幕上输出什么,长和重定向>>连用
echo 123 输出123 就像Java的print
echo 123455 > >/opt/ls.txt 将123455追加到/opt/ls.txt 里面
find 查找文件
- 根据预设的条件递归查找对用的文件
-
find [目录] [条件1] [-a|-o] [条件2]
-
常用条件表示:
- type 类型(f、d、l)
- name “文档名称”
- size +|-文件大小(k、M、G)
- user 用户名
- mtime 根据文件修改时间
# type 按照文件类型查找
# find /boot/ -type d # 查找目录
# find /boot/ -type f # 查找文件
# find /boot/ -type l # 查找快捷方式
# name 按照名字查找 name “文档名称” 加双引号 支持通配符
# find /etc/ -name "passwd"
# 两个条件查询 -a and(同时满足两个条件) -o(or) 满足一个天剑
# find /boot/ -type f -a -name "passwd"-name "passwd"
# -a时候-a可以不用写
# size +|-文件大小(k、M、G)
# find /boot/ -size +300M #查找文件大于300M的
# find /boot/ -size -300M #查找文件小于300M的
# 大小写不能写错,有要求
# 按照文件的所有者查找 user 用户名
# find /boot/ -user cyk
# mtime 根据文件修改时间 (都是过去时间)
# mtime +10 :10天之前修改过的文档
# mtime -10 :最近10天之内修改过的文档
# find /var/ -mtine +90 #查找90天以前的文档
find 的高级使用
将查询的结果进行额外的操作
- find ... -exec 处理命令 {} \;
- “-exec”开始,以{}代替每一个结果,逐个处理,遇见“\;”结束
# 将查询到的结果拷贝到一个地方
# find /boot/ -size +10M -exec cp {} /opt \;
# find /root/ -name "nsd*" -exec cp -r {} /mnt \;
管理用户和组
管道操作(|)
将前面命令的输出,交由后面命令处理,作为后面命令的参数
显示/ect/passwd的8~12行内容?
head -12 /ect/passwd | tail -5
bc计算器
打出bc可以直接唤出计算器,按Ctrl+C退出(或quit)
配合管道符也可 ceho 1+3 | bc
向下取整(垃圾计算器)
用户管理
用户账户:
1.可以登录操作系统
2.不同的用户具备不同的权限
唯一标识:UID(唯一标识用户) GID(唯一标识组)
0开始,0代表第一个,1代表第二个
**组账号:**基本组(私有组) 附加组(从属组)
一个用户至少属于一个组
当只创建一个用户,没有加入组的时候,系统会默认创建一个同名组,把新建用户加入同名组里面
系统创建的同名组就是基本组,后来再把用户加入其他组,其他组就是附加组(从属组)
创建用户
-
使用useradd 命令
# useradd [选项] ... 用户名
-
常用命令选项
-u 用户id(UID) -d 家目录路径 -G 附加组 -s 登录解释器
#useradd nsd01 --创建nsd01用户 #id nsd01 --查看nsd01是否创建成功 #useradd -u 1500 nsd02 --指定UID创建用户 #useradd -d /mnt/nsd03 nsd03 --指定家目录创建用户 #groupadd tarena --创建组 #useradd -G tarena nsd04 --新建用户是添加付家组 #id nsd04 #useradd -s /sbin/nologin nsd05 --设置用户登录解释器
用户基本信息存放在/etc/passwd
以root账户为例子(信息以:分割)七个字段 root:x:0:0:root:/root:/bin/bash 用户名:密码占位符:UID:基本组的GID:用户描述信息(可为空):该用户的家目录:解释器
/etc/shells :存放了都有哪些可以作为解释器
/sbin/nologin:禁止用户登录系统
设置登录密码
用户密码信息存放在/etc/shadow 文件
root:$6$iAXao/qVjgWEG$JAb9QxJTfJAKLvekY7Jv5uyuWlCf7AY4wRoMFfXfv9RU95spkGgc2FNkCSaoQOvmPstgkCa7iTkuFkumJ/uaq/:19437:0:99999:7:::
用户名:密码加密字符串:上一次修改的时间:密码最短使用时间:提前警告时间:null(用户永远有效)::
上一次修改的时间;自1970-1-1到达上一次修改密码的时间经历的天数
密码最短使用时间:0的话就是随时可以改,1就是使用一天,99999就是永久密码
-
使用passwd 命令 (设置密码)
# passwd [用户名]
#su - nsd02 临时切换身份(输入exit退回到root)
-
非交互式设置密码
# echo '密码'|passwd --stdin 用户名
用于脚本时使用
给用户设置密码(只有root用户才能用)
修改用户属性
# usermod [选项] ... 用户名
-u 用户id(UID)
-d 家目录路径
-G 附加组
-s 登录解释器
# useradd nsd05
# grep nsd05 /etc/passwd
# usermod -u 1600 -d /mnt/nsd05 -s /sbiin/nologin -G tarena nsd05
检查用户ID信息
- id 用户名 #id nsd01
删除用户
使用userdel命令
# userdel [-r] 用户名
[-r] :连同家目录一并删除(尽量不要加 )
管理组账号
添加组
组基本信息存放在/ect/group 文件
使用groupadd命令
# groupadd [-g 组ID] 组名
# groupadd tedu --创建tedu组
# grep tedu /ect/group --查看文件里是否有这个组数据
tedu:x:1004:
组名:组密码占位符:组GID:组的成员列表
管理组成员
使用gpasswd 命令
- gpasswd -a 用户名 组名 从组中添加用户
- gpasswd -d 用户名 组名 从组中删除用户
删除组
使用 groupdel命令
#roupdel 组名
tar备份与恢复
1.整合分散数据
2.减少空间占用
常见的压缩格式及命令工具:
.gz --> gzip压缩格式
.bz2 --> bzop2压缩格式
.xz --> xz压缩格式
tar 集成备份工具
- -c : 创建归档
- -x : 释放归档
- -f : 指定归档文件名称
- -z、-j、-J : 调用.gz、.bz2、.xz 格式的工具进行处理
- -t : 显示归档中的文件清单
- -C : 指定释放路径
打包格式:
tar 选项 /路径/压缩包的名字 被压缩的数据源
# tar -zcf /opt/file.tar.gz /etc/passwd /home gz压缩最快
# tar -Jcf /opt/file.tar.xz /etc/passwd /home xz压缩的最小
-f一定要在后面,不能在前面
解包格式:
tar 选项 /路径/压缩包的名字 选项 释放的路径
# tar -xf /opt/file.tar.gz -C /mnt/ --解压
tar -tf /opt/file.tar.gz --查看压缩包里面的内容
查看日期时间
直接敲date
# date
更改时间
date -s ‘当前时间’
date -s '年-月-日 时:分:秒'
cron计划和任务
**用途:**按照设置的时间间隔为用户反复执行某一固定的系统任务
日志文件:/var/log/cron
软件包:cronie、crontabs
系统服务:crond
周期性任务
管理计划任务策略
使用 crontab 命令
- 编辑:crontab -e [-u 用户名]
- 查看:crontab -l [-u 用户名]
- 清除:crontab -r [-u 用户名]
如何编写crontab任务记录
分 时 日 月 周 任务命令行(绝对路径)
* * * * * *就是匹配所有
30 8 * * * 每月每周每日的8点30分执行
30 23 * * 5 每周的周五晚上11:30执行
30 23 1 * 5 每周的周五活每月1号晚上11:30执行
当日和周同时出现的时候,满足一个就可以
30 23 * * 1-5 每周的周一到周五五晚上11:30执行
30 23 * * 1,,35 每周的周一三五晚上11:30执行
0 */2 * * * 每隔两给小时
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FSoPleV4-1681985383545)(E:\ccstudy\markdown\img\定时任务.png)]
配置一个cron任务
为用户 natasha 配置一个定时任务
- 每天在本地时间14:23执行
- 每天完成的人物操作为/bin/echo hiya
-- 每分钟记录当前的系统时间,写入到/opt/time/txt
# crontab -e -u root
# * * * * * date >> /opt/time.txt --每分钟向/opt/time.txt里写入当前时间
-- 查看定时任务
crontab -l -u root
-- 删除定时任务
crontab -e -u root --进去把对应的任务删除
打开一个新的linux首先要做的事情
查看系统版本
cat /etc/redhat-release
查看网卡地址
**ifconfig | head -2 ** --查看第一张网卡的地址
查看看主机名
hostname
远程管理
1.本机ping远程管理的主机地址 # ping ...
2.本机执行命令
# ssh 用户@对方的IP地址
(第一次连接会问你是否保存信息)
# 输入密码
新开一个终端快捷键:Ctrl + Shift + t
# ssh -X 用户@对方的IP地址 --可以在远程管理时,开启对方的图形程序
权限和归属
权限管理
- 访问方式(权限)
- 读取:允许查看内容-read --r
- 写入:允许修改内容-write --w
- 可执行:允许运行和切换-execute --x
对于文本文件:
r : cat head less
w : vim > >>
x : Shell脚本
对于目录:
目录的 r 权限:能够ls浏览此目录的内容
目录的 w 权限:能够执行rm/mv/cp/mkdir/touch/...等更改目录内容的操作(只能对该目录的子目录操作)
目录的 x 权限:能够cd切换到此目录
- 权限适用对象(归属)
- 所有者:拥有此文件/目录的用户-user --u
- 所属组:拥有此文件/目录的组-group --g
- 其他用户:除所有者、所属组以外的用户-other --o
- ls -l
ls -ld 路径 --看目录本身的信息
# ls -ld /etc/passwd
-rw-r--r-- 1 root root 1245 Apr 5 12:40 /etc/passwd
-(文本文件)权限 用户 组 最近修改日期 目录(文件)名
# ls -ld /etc/
drwxr-xr-x. 79 root root 4096 Apr 7 17:06 /etc/
权限解析:rwxr-xr-x.
三个三个为一组,rwx,r-x,r-x
第一组是所属用户权限,第二组是所属组权限,第三组是其他人权限(排列顺序永远是rwx,如果没有权限就用-代替)
以-开头的是文本文件
以d开头的是目录
以l开头的是快捷方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ne8bqeWa-1681985383546)(E:\ccstudy\markdown\img\用户权限.jpg)]
root用户可以无视权限,权限是约束普通用户的
设置基本权限
使用chmod命令
- chmod [-R] 归属关系+-=权限类别 文档...
**-R:**递归设置权限,将赋予目录下的文件同等权限
修改root目录下的nsd01权限 用户减去w(写权限)
[root@CC ~]# mkdir nsd01
[root@CC ~]# ls -ld nsd01
drwxr-xr-x 2 root root 4096 Apr 11 11:38 nsd01
[root@CC ~]# chmod u-w nsd01
[root@CC ~]# ls -ld nsd01
dr-xr-xr-x 2 root root 4096 Apr 11 11:38 nsd01
修改root目录下的nsd01权限 所属组加上w(写权限)
[root@CC ~]# chmod g+w nsd01
[root@CC ~]# ls -ld nsd01
dr-xrwxr-x 2 root root 4096 Apr 11 11:38 nsd01
修改root目录下的nsd01权限 给other重新赋予权限
[root@CC ~]# chmod o=--- nsd01
[root@CC ~]# ls -ld nsd01
dr-xrwx--- 2 root root 4096 Apr 11 11:38 nsd01
修改root目录下的nsd01权限 复合赋予
[root@CC ~]# chmod u=rwx,g=rx,o=rx nsd01
[root@CC ~]# ls -ld nsd01
drwxr-xr-x 2 root root 4096 Apr 11 11:38 nsd01
复合赋予2
[root@CC ~]# chmod ugo=rwx nsd01
[root@CC ~]# ls -ld nsd01
drwxrwxrwx 2 root root 4096 Apr 11 11:38 nsd01
linux判断用户具备的权限
自己看 ls -ld
设置文档归属
使用chown命令
- chown [-R] 所属者 文档...
- chown [-R] :所属组 文档...
- chown [-R] 所属者:所属组 文档...
[root@CC ~]# ls -ld /nsd02
drwxr-xrwx 2 root root 4096 Apr 11 16:35 /nsd02
[root@CC ~]#
[root@CC ~]# ls -ld /nsd02
drwxr-xrwx 2 root root 4096 Apr 11 16:35 /nsd02
[root@CC ~]# chown cyk:tedu /nsd02
[root@CC ~]# ls -ld /nsd02
drwxr-xrwx 2 cyk tedu 4096 Apr 11 16:35 /nsd02
[root@CC ~]# chown harry /nsd02
[root@CC ~]# ls -ld /nsd02
drwxr-xrwx 2 harry tedu 4096 Apr 11 16:35 /nsd02
[root@CC ~]# chown :root /nsd02
[root@CC ~]# ls -ld /nsd02
drwxr-xrwx 2 harry root 4096 Apr 11 16:35 /nsd02
如何让李四(其他用户)有读写权限而其他用户无读写权限
将李四加入组中
gpasswd -a lisi tedu --lisi就可以了
但是加入之后不会立即生效,需要lisi重新登录一下
组权限不会立即生效,但是用户权限(u)会立即生效
匹配顺序:所有者>所属组>其他用户(匹配及停止)
他的意思是如果用户和组都是李四,用户不拥有写权限,组拥有写权限,他从所有者开始判断,当第一个所有者匹配上之后,不会再去匹配后面的组合其他用户
附加权限
又叫特殊权限
-
Set GID
附加在属组的x位上(如果有x为
s,如果没有x则为S)
-属组的权限标识会变为s
-适用于目录,Set GID可以使目录下新增的文档自动设置与父目录相同的属组(继承父目录的所属组组身份)
[root@CC ~]# ls -ld /nsd02
drwxr-xrwx 2 harry root 4096 Apr 11 16:35 /nsd02
[root@CC ~]# chmod g+s /nsd02
[root@CC ~]# ls -ld /nsd02
drwxr-srwx 2 harry root 4096 Apr 11 16:35 /nsd02
-
Set UID
附加在属主的x位上(如果有x为
s,如果没有x则为S) --基本不用了
-属组的权限标识会变为s
-适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限
-
Sticky Bit
附加在其他人的x位上
-其他人的权限标识会变为t -适用于开放w权限的目录,可以阻止用户滥用w写入权限(禁止操作别人的文档)
# chmod o+t /nsd02 # ls -ld /nsd02/ drwxr-srwt 2 harry root 4096 Apr 11 16:35 /nsd02/
ACL权限
acl访问控制列表
acl访问策略
能够对个别用户,个别组独立的设置权限
大多数挂载的EXT3/XFS文件系统默认已支持
命令:
添加:
- setfacl [-R] -m u:用户名:权限类别 文档...
- setfacl [-R] -m g:组名:权限类别 文档...
setfacl -m u:dc(用户:用户名):rx(权限/读执行) 文件位置
setfacl -m g:dc(用户组:用户组名):rx(权限/读执行) 文件位置
查看:
getfacl 文件位置
删除:
setfacl [-R] -x u:用户名:权限类别 文档... #删除指定acl策略
setfacl [-R] -x g:组名:权限类别 文档... #删除指定acl策略
setfacl [-R] -b 文档... #删除所有acl策略
[root@CC ~]# cd /nsd02
[root@CC nsd02]# touch cs02
[root@CC nsd02]# chmod g=---,o=--- ./cs02
[cyk@CC nsd02]$ cat /nsd02/cs02
cat: cs02: Permission denied
-- 设置acl权限
[root@CC nsd02]# setfacl -m u:cyk:rwx /nsd02/cs02
[cyk@CC nsd02]$ cat cs02
[cyk@CC nsd02]$ ll /nsd02/cs02
-rw-rwx---+ 1 root root 0 Apr 13 17:12 cs02
--- 查看文件的acl权限
[cyk@CC nsd02]$ getfacl /nsd02/cs02
getfacl: Removing leading '/' from absolute path names
# file: nsd02/cs02
# owner: root
# group: root
user::rw-
user:cyk:rwx
group::---
mask::rwx
other::---
软件包管理
零散软件管理
1.光盘挂载获得
2.从网上下载
-
使用wget下载工具
- wget 软件包的url网址 --下载到当前目录下 - wget 软件包的URL网址 -0(大写O) /目录路径/新文件名 --下载到指定位置 # cd /opt/ # wget http://.../a.rpm --下载a.rpm
-
使用rpm 命令管理软件
RPM Package Manager , RPM包管理器
- rpm -q 软件名... #查询软件是否安装 - rpm -ql 软件名... #查询软件是否安装,如果安装,都安装了什么东西(查询软件的安装清单) - rpm -ivh 软件名-版本信息.rpm... #安装软件包 - rpm -e 软件名... #卸载软件包
-
升级Linux内核
1.下载内核文件 xx.rpm
2.查看当前内核版本
# uname -r
3.安装软件包
rpm -ivh 软件名-版本信息.rpm
4.重启
reboot
rpm安装经典问题:容易出现依赖错误,所以建议使用yum安装软件
Yum软件包仓库:自动解决依赖关系
服务:可以为客户端自动解决依赖关系,安装软件包
服务端:(光盘)
1.众多软件包
2.仓库数据文件(仓库清单)
使用ftp或者web传递给客户端,共享光盘所有内容
客户端:
书写一个配置文件:指定服务端位置 (必须放在指定位置里(/etc/yum.repos.d/目录下),必须以.repo结尾)
PS:错误的配置文件会影响正确的配置文件(一个错误文件会影响其他配合文件)
- /etc/yum.repos.d/*.repo
# 文件里面不支持中文
[epel] #[仓库标识] ‘[]’里的是仓库名称
name=Extra Packages for Enterprise Linux 7 - $basearch # 描述 name=后面是仓库描述信息
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/epel/7/$basearch # 指定服务端位置(去下载的路径)
enabled=1 # 本文件启用 等于1是为开启,本文件生效,等于0关闭,不生效
gpgcheck=0 #不检测红帽签名信息
gpgkey=http://mirrors.cloud.aliyuncs.com/epel/RPM-GPG-KEY-EPEL-7 #公钥信息 可以没有
# yum repolist 列出仓库信息
yum 安装
上一步配置好了下载仓库的信息之后,就该使用yum命令下载了
yun install 文件名
yum install tomcat # 下载tomcat
yum -y install tomcat # 无需确认直接下载tomcat
rpm -q tomcat #查看是否安装
yum remove httpd #卸载
yum repolist #查看缓存的仓库
yum clean all #清空缓存 (有时候修改.repo文件缓存没更新,没有立即识别,就需要清一下缓存)
磁盘分区规划及使用
硬盘分区管理
磁道
扇区:512字节
识别硬盘 => 分区规划 => 格式化 => 挂载使用
- 识别硬盘
# lsblk -- 列出硬盘
-
分区规划
**分区模式:**MBR(传统分区模式) GPT (新分区模式) (两种方式二选一)
MBR:主启动记录模式
最大空间支持:2T
类型:主分区 扩展分区 逻辑分区
最多有四个主分区(主分区1、主分区2、主分区3、扩展分区)
扩展分区相当于主分区4,为了打破只有四个分区限制而设置的,扩展分区里面可以再分区(逻辑分区1,逻辑分区2,逻辑分区…)
扩展分区不能格式化
如何分区?
使用fdisk分区工具
查看分区表
# fdisk -l /dev/vda --我的是云服务器,所以硬盘是 vd(虚拟硬盘,真机可能是hd,sd)
#fidisk /dev/vda --分区需谨慎,w保存更改
# Command (m for help): n --创建分区
# Partition type: -- 系统提示,询问想要 创建的是哪种分区(p 主分区,e 扩展分区,默认p)
p primary (1 primary, 0 extended, 3 free)
e extended
# Select (default p): 回车就行
# Using default response p --系统返回信息
# Partition number (2-4, default 2): --默认 为2分区,回车
# 起始扇区:(默认回车,直接回车)
# 系统回复信息
# 结束扇区:+2G --给分区2 2G的空间,如果不加G则是分配2扇 区,一定要加单位,若果默认则会将硬件所有的空间都给2
# d --删除分区
# w --保存并退出
/dev/vda5 表示的含义:虚拟设备的硬盘(vd),第一块(a)的第 五个分区(5) (也可以表示为第一个逻辑分区(5))
- 格式化分区
格式化:赋予空间文件系统的过程
文件系统:空间存储数据的规则
Windowd: FAT NTFS --文件系统
Linux : ext4(RHEL6) xfs(RHEL7) --文件系统
如何格式化?
mkfs命令
# mkfs.+tab键 --使用代码补全查看支持什么格式化文件系统
# mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 *mkfs.ext4* mkfs.minix *mkfs.xfs* --**主要记住 这两个
-- 格式化是会清空数据的,尽量保证你的分区里没内容
mkfs.ext4 分区路径 (# mkfs.ext4 /dev/vdb2)
-- 如何查看分区格式化完了
# blkid 分区路径 (# blkid /dev/vdb2)
# 系统回复信息 /dev/vdb2: UUID='..' TYPE="ext4"
-- 如果没有回复信息,就说明该分区没有文件系统
-
挂载使用
# mkdir /part1 # mount /dev/vda2 /part1 #挂载 # df -h --查看正在挂载的所有项目 # umount /part1 --卸载
-
开机自动挂载
上面那种挂载开机重启就没了,一般挂载都要求一直挂载,这个时候,就又该去修改配置文件了
配置文件 /etc/fstab 的记录格式 - 设备路径 挂载点 类型 参数 备份标记 检测顺序 /dev/vda2 /part1 ext4 defaults 0(不用备份) 0或1 (0是不检测,1是检测,只有根分区用检测,自己设置的分区不用检测,检测会大大拖慢开机速度) 参数可以设置:rw,acl,suid,sgid,... (defaults:默认,一大堆参数的集合,该有的功能全有) 设备路径可以用UUID代替 # mount -a # 检测配置文件是否正确,如果啥都不回复就是正确的 (其实source /etv/fstab也行)
逻辑卷管理
逻辑卷
1.整合分散空间
2.空间可以扩大
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P2ZjLvFL-1681985383547)(E:\ccstudy\markdown\img\逻辑卷.jpg)]
将零散的空间整合成虚拟整体,然后把虚拟整体当成虚拟磁盘划分区,就是逻辑卷
PV(物理卷)->VG(卷组) ->LV(逻辑卷)
一、制作逻辑卷
pvs #扫描物理卷
上一步做不做都行
# 1. 创建卷组
# vgcreate 卷组名 物理卷 (例:vgcreate systemvg /dev/vdb[1-2])
# vgs # 查看卷组
# 2.创建逻辑卷
# lv -n 逻辑卷名字 -L 大小 --创建逻辑卷
# lv -n mylv -L 16G 逻辑卷在设备里的命名格式未/dev/dm-0,1,2,..
# ls -l /dev/systenvg/mylv
# 3.创建好逻辑卷之后就该格式化了,给与文件系统
# mkfs.xfs /dev/systenvg/mylv
# 查看文件系统类型
# blkid /dev/systenvg/mylv
# 4. 实现开机自动挂载
# vi /etc/fstab
# /dev/systenvg/mylv /part2 xfs defaults 0 0
:wq保存并退出
# source /etc/fstab #重新执行文件
# df -h
二、逻辑卷的线上扩展
无须卸载,直接扩展
扩展逻辑就是逻辑卷找卷组要空间,卷组没有空间找物理卷要空间,如果卷组有空间就分配给逻辑卷
-- 1.卷组有足够的剩余空间
-- 1.1 扩展逻辑卷空间
# lvextend -L +2G /dev/systenvg/mylv --直接扩展
# lvs
-- 1.2 扩展文件系统大小(刷新文件系统)
resize2fs:扩展ext4文件系统
xfs_frowfs:扩展xfs文件系统
# xfs_frowfs /dev/systenvg/mylv
# df -h
-- 2.卷组没有足够的剩余空间
-- 2.1 扩展卷组
# vgextend 卷组名 物理卷位置
# vgextend systemvg /dev/vdb3
# vgs
-- 2.2 走1.的流程扩展逻辑卷
-- 逻辑卷的缩小(不建议)
ext4文件系统支持缩减
xfs文件系统不支持缩减
# vgdisplay systemvg #查看卷组详细信息 显示PE
修改PE
vgchange -s 大小 卷组名
vgchange -s 1M systemvg
lv -n mylv -l 800 -l为分配800个PE给mylv -L为直接分配存储大小
逻辑卷的删除
顺序:先删除逻辑卷,再删除卷组,最后删除物理卷(物理卷可以不删)
1.删除逻辑卷
1.1 卸载挂载点
# umont /part1
# lvremove /dev/systenvg/mylv
2.删除卷组 卷组删不删也行,没有文件系统,保留也可以
# vgremove systenvg
NTP时间同步
当同时有好几台服务器的时候哦,为了保证时间的一致性,会采用一台服务器当主服务器,其他服务器在配置里指向主服务器,使得所有服务器的时间与主服务器的时间保持一致
LDAP认证
实现网络用户认证,达到用户的集中管理
网络用户:用户信息会放在网络中的LDAP服务器
本地用户:用户信息会放在/etc/passwd
跟NTP逻辑类似,当有几十台服务器的时候,为了使一个用户在几十台服务器上都有权限,每一台都创建一个这样的用户是不可取的的,太繁琐。使用一台服务器当主服务器A,A创建的用户可以直接访问其他服务器(相当于在其他服务器上也有这个用户),其他服务器会去A服务器上查看有没有这个用户。也就是说,我们只需要操作A服务器就行,方便省事
NTP和LDAP的服务器搭建先不讲
1.安装sssd软件 连接A服务器
# yum -y install sssd
# yum -y install authconfig-gtk #安装图形化界面
# authconfig-gtk #运行图形化软件
行文件
df -h
#### 二、逻辑卷的线上扩展
无须卸载,直接扩展
扩展逻辑就是逻辑卷找卷组要空间,卷组没有空间找物理卷要空间,如果卷组有空间就分配给逻辑卷
```shell
-- 1.卷组有足够的剩余空间
-- 1.1 扩展逻辑卷空间
# lvextend -L +2G /dev/systenvg/mylv --直接扩展
# lvs
-- 1.2 扩展文件系统大小(刷新文件系统)
resize2fs:扩展ext4文件系统
xfs_frowfs:扩展xfs文件系统
# xfs_frowfs /dev/systenvg/mylv
# df -h
-- 2.卷组没有足够的剩余空间
-- 2.1 扩展卷组
# vgextend 卷组名 物理卷位置
# vgextend systemvg /dev/vdb3
# vgs
-- 2.2 走1.的流程扩展逻辑卷
-- 逻辑卷的缩小(不建议)
ext4文件系统支持缩减
xfs文件系统不支持缩减
# vgdisplay systemvg #查看卷组详细信息 显示PE
修改PE
vgchange -s 大小 卷组名
vgchange -s 1M systemvg
lv -n mylv -l 800 -l为分配800个PE给mylv -L为直接分配存储大小
逻辑卷的删除
顺序:先删除逻辑卷,再删除卷组,最后删除物理卷(物理卷可以不删)
1.删除逻辑卷
1.1 卸载挂载点
# umont /part1
# lvremove /dev/systenvg/mylv
2.删除卷组 卷组删不删也行,没有文件系统,保留也可以
# vgremove systenvg
NTP时间同步
当同时有好几台服务器的时候哦,为了保证时间的一致性,会采用一台服务器当主服务器,其他服务器在配置里指向主服务器,使得所有服务器的时间与主服务器的时间保持一致
LDAP认证
实现网络用户认证,达到用户的集中管理
网络用户:用户信息会放在网络中的LDAP服务器
本地用户:用户信息会放在/etc/passwd
跟NTP逻辑类似,当有几十台服务器的时候,为了使一个用户在几十台服务器上都有权限,每一台都创建一个这样的用户是不可取的的,太繁琐。使用一台服务器当主服务器A,A创建的用户可以直接访问其他服务器(相当于在其他服务器上也有这个用户),其他服务器会去A服务器上查看有没有这个用户。也就是说,我们只需要操作A服务器就行,方便省事
NTP和LDAP的服务器搭建先不讲
1.安装sssd软件 连接A服务器
# yum -y install sssd
# yum -y install authconfig-gtk #安装图形化界面
# authconfig-gtk #运行图形化软件