admin管理员组

文章数量:1603255

liunx零基础笔记

su切换用户:

切换用户:su

su 用户名

例:[root@localhost ~]# su zsy

[zsy@localhost root]$ exit

exit

内部命令 : 属于shell解析器的一部分

外部命令 : 不属于shell解析器的一部分 需要后期添加

type 查看命令类型

例:[root@localhost ~]# type cd #命令内部

cd 是 shell 内嵌

[root@localhost ~]# type mkdir #外部命令 除了shell内嵌,其他都是外部命令

mkdir 是 /usr/bin/mkdir

help 查看命令的帮助信息

查看内部命令

例:[root@localhost /]# help cd

cd: cd [-L|[-P [-e]]] [dir]

查看外部命令

例:[root@localhost /]# ls --help

man 查看命令的帮助信息

man 命令字

例:[root@localhost /]# man cd

pgup pgdn 翻页 上下翻行 /查找

pwd命令

pwd(print woking directory) 查看当前的工作目录

单独使用

只能查看当前的工作目录 后面不能加参数

例:

[root@localhost /]# pwd

/

cd命令

cd (change directory)切换工作目录

cd 目录名(相对/绝对) 切换对应目录下

相对 切换到该目录以下的目录

绝对 随意切换(/)

例:#相对路径

[root@localhost /]# cd home/

[root@localhost home]# ls

zsy

[root@localhost home]# cd mnt

bash: cd: mnt: 没有那个文件或目录

#绝对路径

[root@localhost home]# cd /mnt

cd (cd ~) 单独使用 当前登录用户的家目录

[root@localhost mnt]# cd

[root@localhost ~]# pwd

/root

[root@localhost ~]# su zsy

[zsy@localhost root]$ cd

[zsy@localhost ~]$ pwd

/home/zsy

cd - 切换到上一步命令所在的目录

例:[root@localhost ~]# cd /mnt/

[root@localhost mnt]# cd /home/

[root@localhost home]# cd -

/mnt

[root@localhost mnt]# cd -

/home

cd .. 返回上一级目录

例:[root@localhost home]# cd ..

[root@localhost /]# ls

bin dev home lib64 mnt proc run srv tmp var

boot etc lib media opt root sbin sys usr

cd ../.. 返回上两级目录

例:[root@localhost /]# cd /home/zsy

[root@localhost zsy]# cd ../..

cd ~用户名 切换到指定用户的家目录下

例:[root@localhost /]# cd ~zsy

[root@localhost zsy]# pwd

/home/zsy

ls命令

ls 列出目录下所有的内容

ls 单独使用 列出当前目录下所有的内容

[root@localhost ~]# ls

anaconda-ks.cfg original-ks.cfg 模板 图片 下载 桌面

initial-setup-ks.cfg 公共 视频 文档 音乐

深蓝 目录 浅蓝 软链接 黑色 普通文件

[root@localhost /]# ls /home/ #查看指定目录的内容

zsy

-l 以长格式的形式显示

例:[root@localhost /]# ls -l

总用量 28

lrwxrwxrwx. 1 root root 7 2月 10 19:59 bin -> usr/bin

-a 以更完整的形式显示隐藏文件( . ..) -A 显示隐藏文件

例:

[root@localhost ~]# ls -A

anaconda-ks.cfg .bashrc .dbus .lesshst 公共 文档

.bash_history .cache .esd_auth .local 模板 下载

[root@localhost ~]# ls -a

. .bash_profile .dbus .local 视频 桌面

.. .bashrc .esd_auth original-ks.cfg 图片

-d 显示目录本身的属性

例:[root@localhost ~]# ls -ld

dr-xr-x---. 14 root root 4096 2月 17 15:15 .

-h 以易读的形式显示

例:[root@localhost ~]# ls -lh

总用量 12K

-rw-------. 1 root root 1.9K 2月 10 20:13 anaconda-ks.cfg

-R 递归查看 显示出目录及子目录下面所有的内容

--color 带颜色列出目录下的内容

“?”:匹配文件名中的一个未知字符

“*”:匹配文件名中的任意多个字符

例:[root@localhost ~]# ls a*

aa aaaa aaaaa anaconda-ks.cfg

[root@localhost ~]# ls a???

aaaa

alias命令

alias 命令的别名

#例:添加

[root@localhost ~]# alias myls='ls -alh'

[root@localhost ~]# myls

总用量 56K

删除

[root@localhost ~]# unalias myls

[root@localhost ~]# myls

bash: myls: 未找到命令...

在公司 rm -rf 不能使用 alias rm -rf='mv /beifei'

du (disk uages) 查看指定目录或文件的大小

#-h 以更易读的形式显示

例:[root@localhost ~]# du -h

4.0K ./.cache/dconf

#-a 统计所有的 包含文件

[root@localhost ~]# du -ah

4.0K ./.bash_logout

#-s 显示总个目录的大小

[root@localhost ~]# du -sh

5.2M .

mkdir命令

mkdir (make directory) 创建目录

例:

[root@localhost ~]# mkdir haha

[root@localhost ~]# ls

aa aaaaa haha original-ks.cfg 模板 图片 下载 桌面

aaaa anaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐

[root@localhost ~]# mkdir /haha

[root@localhost ~]# ls /

bin dev haha lib media opt root sbin sys usr

boot etc home lib64 mnt proc run srv tmp var

[root@localhost ~]# mkdir a/b/c

mkdir: 无法创建目录"a/b/c": 没有那个文件或目录

-p 创建多层级目录

例:[root@localhost ~]# mkdir -p a/b/c

[root@localhost ~]# ls -R a

touch 创建文件 空文件 不占用block块 但占用inode节点

例:

[root@localhost ~]# touch qqq

[root@localhost ~]# ls

a aaaa anaconda-ks.cfg initial-setup-ks.cfg qqq 模板 图片 下载 桌面

aa aaaaa haha original-ks.cfg 公共 视频 文档 音乐

[root@localhost ~]# touch www eee

[root@localhost ~]# ls

a aaaaa haha qqq 模板 文档 桌面

aa anaconda-ks.cfg initial-setup-ks.cfg www 视频 下载

aaaa eee original-ks.cfg 公共 图片 音乐

[root@localhost ~]# touch {1..10}

[root@localhost ~]# ls

ln命令

ln(link) 创建链接文件

硬链接:复制了一份 删除源文件可以继续使用 只针对文件 并且必须处于同一个分区

软链接: 快捷方式 删除源文件不能使用 针对文件目录都可以 不同的文件系统也可以

-s (soft) #在做软链接的时候必须使用绝对路径

[root@localhost ~]# mkdir /a/b/c/d -p

[root@localhost ~]# ln -s /a/b/c/d/ /a/ #不改名字

[root@localhost ~]# ls /a/

b d

[root@localhost ~]# ln -s /a/b/c/d/ /a/e #改名字

[root@localhost ~]# ls /a/

b e

[root@localhost ~]# cd /a/e/

[root@localhost e]# pwd -P #显示链接文件的源文件

/a/b/c/d

[root@localhost e]# pwd

/a/e

cp命令

cp 复制文件或者目录

-f 覆盖目标同名文件或目录时不进行提醒,直接强制复制

-i 覆盖目标同名文件或目录时提醒用户确认 cp cp -i

-p 复制时保持源文件的权限、属主及时间标记等属性不变

-r 复制目录时必须使用此选项,表示递归复制所有文件及子目录

例:

-f -i

[root@localhost ~]# alias cp=cp

[root@localhost ~]# cp -f ll haha/

[root@localhost ~]# alias cp='cp -i'

[root@localhost ~]# cp -f ll haha/

cp:是否覆盖"haha/ll"? y

[root@localhost ~]# cp aaaa haha/

[root@localhost ~]# ls haha/

aaaa

-r :递归

[root@localhost ~]# cp a haha/

cp: 略过目录"a"

[root@localhost ~]# cp -r a haha/ #针对目录 -r

[root@localhost ~]# ls haha/

a aaaa

-p:属性

[root@localhost ~]# touch ll

[root@localhost ~]# ls -l ll

-rw-r--r--. 1 root root 0 2月 17 17:06 ll

[root@localhost ~]# cp -p ll haha/

[root@localhost ~]# ls -l haha/ll

-rw-r--r--. 1 root root 0 2月 17 17:06 haha/ll

[root@localhost ~]# cp ll haha/ii

[root@localhost ~]# ls -l haha/ii

-rw-r--r--. 1 root root 0 2月 17 17:08 haha/ii

rm命令

rm 删除指定的文件或目录

-i 删除文件提醒

-f 强制删除

-r 递归删除 针对目录

-f

[root@localhost ~]# rm 1

rm:是否删除普通空文件 "1"?y

[root@localhost ~]# rm -f 1

[root@localhost ~]# rm -rf 4

-r

[root@localhost ~]# rm -r a

rm:是否进入目录"a"? y

[root@localhost ~]# rm -rf haha

[root@localhost ~]# ls

-i

[root@localhost ~]# type rm

rm 是 `rm -i' 的别名

mv命令

mv 移动文件/目录 改名

[root@localhost ~]# mv 9 a

[root@localhost ~]# mv b a

[root@localhost ~]# ls a

9 b

[root@localhost ~]# mv aaaa bbbb

[root@localhost ~]# ls

which查找命令所在的位置

[root@localhost ~]# which cd

/usr/bin/cd

[root@localhost ~]# which -a cd

/usr/bin/cd

/bin/cd

find命令

find 查找指定条件的文件或目录

条件:

-size 大小 +大于 -小于

-name 名字

-type 类型 f文件 d目录 b磁盘(分区等)

-user 用户

find 范围 条件

246 find /boot -size 1024K

247 find /boot -size +1024k

248 find /root -name a*

249 find /root -name a???????

逻辑运算符

-a and 满足第一个条件也要满足第二个条件

-o or 满足第一个条件或者第二个条件

[root@localhost ~]# find /boot -size +1024k -a -name "vmlinuz*"

/boot/vmlinuz-3.10.0-862.el7.x86_64

/boot/vmlinuz-0-rescue-b8e717dc4a584496a692af07753d718b

[root@localhost ~]# find /boot -size +1024k -o -name "vmlinuz*"

/boot/grub2/fonts/unicode.pf2

常见的/的子目录

/root:系统管理员root的宿主目录

/home:普通用户的宿主目录

/boot:系统内核、启动文件

/dev:设备文件

/etc:配置文件

/bin:所有用户可执行的命令

/sbin:管理员可执行的管理命令

/usr:应用程序

/var:日志文件等

有关文件的命令:

#查看文件内容

cat命令

查看文件内容 并把内容打印当前终端上

[root@localhost ~]# cat anaconda-ks.cfg

[root@localhost ~]# cat -n /etc/hosts -n 带行号

1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

# more 查看文件内容 会将查看到的内容打印到当前终端上

q 退出 回车 逐行滚动 空格 翻页

[root@localhost ~]# more anaconda-ks.cfg

# less 查看文件内容 进入到交互式界面查看内容

q 退出 回车 逐行滚动 空格 翻页 pgup 向上翻页 pgdn向下翻页 上下键 上下滚动

[root@localhost ~]# less anaconda-ks.cfg

#head 查看文件的指定前几行内容

[root@localhost ~]# head anaconda-ks.cfg

默认为10行

只查看前三行

[root@localhost ~]# head -3 anaconda-ks.cfg

#version=DEVEL

# System authorization information

auth --enableshadow --passalgo=sha512

#tail 查看文件的指定后几行内容

[root@localhost ~]# tail anaconda-ks.cfg

默认为10行

只查看后3行

[root@localhost ~]# tail -3 anaconda-ks.cfg

-f 负责监控当前的文件中是否有新的内容的生成

查看是否有新的日志的生成

wc命令

统计文件的信息

-l 统计行数

-w 统计单词数

-c 统计字节数

[root@localhost ~]# wc -l anaconda-ks.cfg

67 anaconda-ks.cfg

[root@localhost ~]# wc -w anaconda-ks.cfg

152 anaconda-ks.cfg

[root@localhost ~]# wc -c anaconda-ks.cfg

1762 anaconda-ks.cfg

[root@localhost ~]# wc anaconda-ks.cfg

67 152 1762 anaconda-ks.cfg

grep命令

‘’过滤出文件中查找的字符所在的行

-i 查找 查找忽略大小写

-v 反转查找

^以……开头 $以……结尾 ^$代表空行

[root@localhost ~]# grep -i "^a" anaconda-ks.cfg

auth --enableshadow --passalgo=sha512

autopart --type=lvm

[root@localhost ~]# grep -i "a$" anaconda-ks.cfg

# Use CDROM installation media

ignoredisk --only-use=sda

bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda

@multimedia

%anaconda

[root@localhost ~]# grep -v "^$" anaconda-ks.cfg

gzip命令

压缩和解压文件 gzip bzip2 只能针对文件

-9 压缩等级 1-9 默认6

-d 解压

[root@localhost ~]# gzip anaconda-ks.cfg

[root@localhost ~]# bzip2 initial-setup-ks.cfg

[root@localhost ~]# gzip -d anaconda-ks.cfg.gz

[root@localhost ~]# bzip2 -d initial-setup-ks.cfg.bz2

[root@localhost ~]# bzip2 -9 initial-setup-ks.cfg

[root@localhost ~]# gzip -9 anaconda-ks.cfg

解压:bunzip2 gunzip

[root@localhost ~]# bzip2 -9 initial-setup-ks.cfg

[root@localhost ~]# gzip -9 anaconda-ks.cfg

[root@localhost ~]# gunzip anaconda-ks.cfg.gz

[root@localhost ~]# bunzip2 initial-setup-ks.cfg.bz2

tar命令

制作归档文件

-c 创建归档文件

-x 解开归档文件

-f 必须携带的选项 后面归档文件名

-C 在解开 指定解包的目录

[root@localhost ~]# tar -cf a.tar a

[root@localhost ~]# ls

a a.tar 公共 视频 文档 音乐

anaconda-ks.cfg initial-setup-ks.cfg 模板 图片 下载 桌面

[root@localhost ~]# tar -xf a.tar -C /home/

[root@localhost ~]# ls /home/

a zsy

-v 显示详细信息

[root@localhost ~]# tar -cvf a.tar a

a/

a/b/

-t 查看归档文件中的内容

[root@localhost ~]# tar -tf a.tar

a/

a/b/

-p 保留目录的属性

[root@localhost ~]# tar -cpf a.tar a

[root@localhost ~]# ls -ld a

drwxr-xr-x. 3 root root 15 2月 18 14:55 a

[root@localhost ~]# tar -xf a.tar -C /media/

[root@localhost ~]# ls -ld /media/a

drwxr-xr-x. 3 root root 15 2月 18 14:55 /media/a

压缩归档文件

1.制作出归档文件

[root@localhost ~]# tar -cpf a.tar a

2.将归档文件压缩

[root@localhost ~]# gzip a.tar

[root@localhost ~]# ls

a a.tar.gz

为了简洁:

-z 调用gzip的压缩方式

-j 调用bzip的压缩方式

[root@localhost ~]# tar -czf b.tar.gz a

[root@localhost ~]# ls

a a.tar.gz initial-setup-ks.cfg 模板 图片 下载 桌面

anaconda-ks.cfg b.tar.gz 公共 视频 文档 音乐

[root@localhost ~]# tar -cjf b.tar.bz2 a

[root@localhost ~]# tar -xzf b.tar.gz -C /usr/src

[root@localhost ~]# ls /usr/src/

|将前一个命令的结果作为后一个命令的输入

[root@localhost ~]# ls /root

a a.tar.gz b.tar.gz

[root@localhost ~]# ls /root | cat -n

1 a

2 anaconda-ks.cfg

3 a.tar.gz

#例:

创建一个文件A A

B B

C C

D D

E E

F F

G G

H H

I

J

想要查看5行到8行的内容 head -8 aa | tail -4

重定向

输入重定向:

[root@localhost ~]# ls < /root

a

输出重定向:

> 将执行结果正确的内容写到文件中 会覆盖

echo命令

打印输出

[root@localhost ~]# echo 11111

11111

[root@localhost ~]# echo 11111 > haha

[root@localhost ~]# ls

a a.tar.gz b.tar.gz

[root@localhost ~]# cat haha

11111

[root@localhost ~]# ls /root > haha

>> 会追加 把内容追加进来

[root@localhost ~]# echo 11111 >> haha

[root@localhost ~]# cat haha

错误重定向

2>将执行结果错误的内容写到文件中 会覆盖

[root@localhost ~]# cat a 2> haha

[root@localhost ~]# cat haha

cat: a: 是一个目录

[root@localhost ~]# echo 11111 2> haha

11111

[root@localhost ~]# cat haha

2>> 追加

[root@localhost ~]# cat a 2> haha

[root@localhost ~]# cat a 2>> haha

[root@localhost ~]# cat haha

cat: a: 是一个目录

cat: a: 是一个目录

混和与输出组合重定向 将执行结果错误和正确的内容全部写到文件中

[root@localhost ~]# cat a haha >& hehe

[root@localhost ~]# cat hehe

cat: a: 是一个目录

11111

第三章 用户

用户分为三种:超级用户 普通用户 程序用户

组:基本组 是必须存在的 每个用户都有一个基本组

附加组 可以没有 在有基本组前提下,加入到另一组

uid 用户的编号

gid 组的编号

那个文件里面存放着用户的信息

[root@localhost ~]# vim /etc/passwd

root用户的uid为0 gid为0

zsy:x:1000:1000:zsy:/home/zsy:/bin/bash

普通用户的uid是从1000开始 0-999 都是给程序用户超级用户预留的位置

zsy 用户名

:x: 密码占位符 实际的密码会在另一个文件中

1000 UID

:1000 GID

:zsy 对于用户详细说明 可以不写

:/home/zsy 用户的家目录

:/bin/bash shell环境 登录 /sbin/nologin 不能登录

存放密码的文件

[root@localhost ~]# vim /etc/shadow

zsy:$6$Zs4MYIuNsv88Em2$.i7hyoUYlSJkkW5Fk7AMI8GdPv3.XTns/7M4/J4U.5UoRFG6YMnsNsiRKJdB0ALD0qcZSmGtbpI.E9zv2EHQM.::0:99999:7:::

字段1:用户帐号的名称

字段2:加密的密码字串信息

字段3:上次修改密码的时间(距1970年01月01日的天数为14495)

字段4:密码的最短有效天数,默认值为0

字段5:密码的最长有效天数,默认值为99999

字段6:提前多少天警告用户口令将过期,默认值为7

字段7:在密码过期之后多少天禁用此用户

字段8:帐号失效时间,默认值为空(表示在距1970年01月01日后几天过期)

字段9:保留字段(未使用)

创建用户:

useradd命令

adduser

格式:useradd [选项]... 用户名

[root@www ~]# useradd b

[root@www ~]# tail -1 /etc/passwd

b:x:1002:1004::/home/b:/bin/bash

常用命令选项

-u:指定 UID 标记号,直接指定一个特定的UID给这个账号

[root@www ~]# useradd -u 1010 c

[root@www ~]# tail -1 /etc/passwd

c:x:1010:1010::/home/c:/bin/bash

-d:指定宿主目录,缺省为 /home/用户名,必须使用绝对路径

[root@www ~]# mkdir /ww

[root@www ~]# useradd -d /ww ww

useradd:警告:此主目录已经存在。

不从 skel 目录里向其中复制任何文件。

[root@www ~]# tail -1 /etc/passwd

ww:x:1011:1011::/ww:/bin/bash

-e:指定帐号失效时间,格式为YYYY-MM-DD

[root@www ~]# useradd -e 2020-02-20 d 1970.01.01

[root@www ~]# tail -1 /etc/passwd

d:x:1012:1012::/home/d:/bin/bash

[root@www ~]# tail -1 /etc/shadow

d:!!:18311:0:99999:7::18312:

-g:指定用户的基本组名 GID

[root@www home]# groupadd ll

[root@www home]# useradd -g ll mm

[root@www home]# tail -2 /etc/group

ll:x:1033:

oo:x:1034:

[root@www home]# tail -1 /etc/passwd

mm:x:1017:1033::/home/mm:/bin/bash

-G:指定用户的附加组名

[root@www home]# groupadd oo

[root@www home]# useradd -G oo nn

[root@www home]# tail -3 /etc/group

ll:x:1033:

oo:x:1034:nn

nn:x:1018:

-M:不为用户建立并初始化宿主目录,强制!不要创建用户主文件夹

[root@www ~]# useradd -M f

[root@www ~]# tail -1 /etc/passwd

f:x:1013:1013::/home/f:/bin/bash

[root@www ~]# cd /home/

[root@www home]# ls

b c d zsy

-s:指定用户的登录Shell,若没有,则默认是/bin/bash

[root@www home]# useradd -s /sbin/nologin g

[root@www home]# tail -1 /etc/passwd

g:x:1014:1014::/home/g:/sbin/nologin

[root@www home]# su g

This account is currently not available.

用户家目录里面的文件

/etc/skel

~/.bash_profile:用户每次登录时执行

~/.bashrc:每次进入新的Bash环境时执行

~/.bash_logout:用户每次退出登录时执行

passwd命令

格式:passwd [选项]... 用户名

[root@www b]# passwd b

更改用户 b 的密码 。

新的 密码:

无效的密码: 密码未通过字典检查 - 过于简单化/系统化

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

常用命令选项

-d:清空用户的密码,使之无需密码即可登录

[root@www b]# passwd -d b

清除用户的密码 b。

passwd: 操作成功

-l:锁定用户帐号,lock,使密码失效

-S:查看用户帐号的状态(是否被锁定)

-u:解锁用户帐号,unlock解锁账号

新的用户 在没有设置密码的情况下 密码的锁定的 只有root用户可以直接切换过去 其余的用户都不能直接切换过去

这个是为了保证新的新的用户的安全

#给有密码的用户 加锁和解锁

[root@www ~]# passwd -l c

锁定用户 c 的密码 。

passwd: 操作成功

[root@www ~]# su b

[b@www root]$ su c

密码:

su: 鉴定故障

[b@www root]$ exit

exit

[root@www ~]# passwd -S c

c LK 2020-02-19 0 99999 7 -1 (密码已被锁定。)

[root@www ~]# passwd -u c

解锁用户 c 的密码。

passwd: 操作成功

[root@www ~]# su b

[b@www root]$ su c

密码:

[c@www root]$ exit

exit

[b@www root]$ exit

exit

如何解锁没有密码新用户:

[root@www ~]# passwd -u d

解锁用户 d 的密码。

passwd: 警告:未锁定的密码将是空的。

passwd: 不安全的操作(使用 -f 参数强制进行该操作)

[root@www ~]# passwd -S d

d LK 2020-02-19 0 99999 7 -1 (密码已被锁定。)

[root@www ~]# passwd -u -f d

解锁用户 d 的密码。

passwd: 操作成功

usermod命令

对用户进行配置

格式:usermod [选项]... 用户名

常用命令选项

-l:更改用户帐号的登录名称

[root@www ~]# useradd haha

[root@www ~]# tail -1 /etc/passwd

haha:x:1015:1015::/home/haha:/bin/bash

[root@www ~]# usermod haha -l hehe

[root@www ~]# tail -1 /etc/passwd

hehe:x:1015:1015::/home/haha:/bin/bash

[root@www ~]# usermod -l heihei hehe

-L:锁定用户账户

-U:解锁用户账户

[root@www ~]# usermod -L c

[root@www ~]# passwd -S c

c LK 2020-02-19 0 99999 7 -1 (密码已被锁定。)

[root@www ~]# usermod -U c

[root@www ~]# passwd -S c

c PS 2020-02-19 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

只能使用passwd查看

usermod和passwd之间可以互相解锁

[root@www ~]# usermod -L c

[root@www ~]# passwd -u c

解锁用户 c 的密码。

passwd: 操作成功

[root@www ~]# passwd -S c

c PS 2020-02-19 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

[root@www ~]# passwd -l c

锁定用户 c 的密码 。

passwd: 操作成功

[root@www ~]# usermod -U c

[root@www ~]# passwd -S c

c PS 2020-02-19 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

usermod上锁和passwd上锁的区别

可以在/etc/shadow当中查看

!代表 usermod的上锁 (锁定用户)

!!代表 passwd的上锁 (锁定密码)

通过删除掉/etc/shadow里面的!也可以让用户解锁

-u 修改用户的uid

[root@www ~]# tail -1 /etc/passwd

hh:x:1016:1016::/home/hh:/bin/bash

[root@www ~]# usermod hh -u 1020

[root@www ~]# tail -1 /etc/passwd

hh:x:1020:1016::/home/hh:/bin/bash

-d 修改用户的宿主目录

[root@www ~]# tail -1 /etc/passwd

hh:x:1020:1016::/home/hh:/bin/bash

[root@www ~]# mkdir /hh

[root@www ~]# usermod hh -d /hh

[root@www ~]# tail -1 /etc/passwd

hh:x:1020:1016::/hh:/bin/bash

-e 修改用户的失效时间

[root@www ~]# tail -1 /etc/shadow

hh:!!:18311:0:99999:7:::

[root@www ~]# usermod hh -e 2020-02-20

[root@www ~]# tail -1 /etc/shadow

hh:!!:18311:0:99999:7::18312:

-g 修改用户的基本组

[root@www home]# useradd aa

[root@www home]# useradd bb

[root@www home]# tail -2 /etc/group

aa:x:1019:

bb:x:1020:

[root@www home]# usermod aa -g bb

[root@www home]# tail -2 /etc/passwd

aa:x:1019:1020::/home/aa:/bin/bash

bb:x:1020:1020::/home/bb:/bin/bash·

-G 修改用户的附加组

[root@www home]# usermod bb -G aa

[root@www home]# tail -2 /etc/group

aa:x:1019:bb

多个用户可以使用一个基本组

用户必须要有基本组

一个用户可以有多个附加组

-s 修改用户的shell登录环境

[root@www ~]# tail -1 /etc/passwd

hh:x:1020:1016::/hh:/bin/bash

[root@www ~]# su hh

bash-4.2$ exit

exit

[root@www ~]# usermod hh -s /sbin/nologin

[root@www ~]# su hh

This account is currently not available.

[root@www ~]# tail -1 /etc/passwd

hh:x:1020:1016::/hh:/sbin/nologin

userdel 删除用户

[root@www ~]# userdel hh

[root@www ~]# cd /home/

[root@www home]# ls

-r 连同家目录一块删除

[root@www home]# ls

b c d g haha hh zsy

[root@www home]# userdel -r g

[root@www home]# cd /home/

[root@www home]# ls

b c d haha hh zsy

组:

基本组

附加组

组信息的文件 /etc/group

存放组密码的文件 /etc/gshadow

[root@www home]# vim /etc/group

haha:x:1015:

haha 组的名称

x 组的密码占位符

1015 GID

组成员 附加组的成员

[root@www home]# vim /etc/gshadow

添加组

groupadd

[root@www home]# groupadd yy

[root@www home]# tail -1 /etc/group

yy:x:1016:

-g指定gid

[root@www home]# groupadd -g 1020 pp

[root@www home]# tail -1 /etc/group

pp:x:1020:

组可以单独存在 创建组

但是用户不可以单独存在 useradd去创建用户 创建出一个组(基本组)

useradd创建用户 不指定组的情况下 gid在没有被占用的情况下,会和uid一致

修改组的配置

groupmod

-g 修改gid

[root@www home]# groupmod pp -g 1030

[root@www home]# tail -1 /etc/group

pp:x:1030:

-n 修改组名

[root@www home]# groupmod pp -n qq

[root@www home]# tail -1 /etc/group

qq:x:1030:

gpasswd命令

用途:设置组帐号密码(极少用)、添加/删除组成员

格式:gpasswd [选项]... 组帐号名

-a:向组内添加一个用户

[root@www home]# groupadd rr

[root@www home]# tail -1 /etc/group

rr:x:1031:

[root@www home]# useradd tt

[root@www home]# tail -2 /etc/group

rr:x:1031:

tt:x:1032:

[root@www home]# gpasswd rr -a tt

正在将用户“tt”加入到“rr”组中

[root@www home]# tail -2 /etc/group

rr:x:1031:tt

tt:x:1032:

rr组对于tt而言是附加组

tt组对于tt而言是基本组

-d:从组内删除一个用户成员

[root@www home]# gpasswd rr -d tt

正在将用户“tt”从“rr”组中删除

[root@www home]# tail -2 /etc/group

rr:x:1031:

tt:x:1032:

-M:定义组成员列表,以逗号分隔 列表添加 但是会覆盖 所以这里写的时候必须把组成员全部写上

[root@www home]# gpasswd rr -M tt,heihei,zsy

[root@www home]# tail -2 /etc/group

rr:x:1031:tt,heihei,zsy

tt:x:1032:

[root@www home]# gpasswd rr -M tt,heihei

[root@www home]# tail -2 /etc/group

rr:x:1031:tt,heihei

tt:x:1032:

删除组:

[root@www home]# groupadd vv

[root@www home]# groupdel vv

[root@www home]# useradd ss

[root@www home]# tail -1 /etc/group

ss:x:1021:

[root@www home]# groupdel ss

groupdel:不能移除用户“ss”的主组

如果这个组是某个用户基本组 那么它就不能用groupdel删除

[root@www home]# userdel ss 只针对于基本组下只有一个用户

[root@www home]# tail -1 /etc/group

bb:x:1020:

[root@www home]# useradd kk

[root@www home]# tail -1 /etc/group

kk:x:1022:

[root@www home]# useradd -g kk cc

[root@www home]# userdel kk

userdel:没有删除 kk 组,因为它是另外一个用户的主组。

如果这个组是附加组或者没有用户 那么它就可以删除 groupdel

手动创建用户

不使用useradd 也不使用groupadd 来创建用户

通过修改文件来去创建用户

1.填写用户信息

[root@www ~]# vim /etc/passwd

qwe:x:1050:1050::/home/qwe:/bin/bash

2.添加密码文件

qwe:!!:18312:0:99999:7:::

3.填写组信息

[root@www ~]# vim /etc/group

qwe:x:1050:

4.创建家目录

[root@www ~]# mkdir /home/qwe

5.将程序文件复制到家目录

[root@www ~]# cp /etc/skel/.* /home/qwe

cp: 略过目录"/etc/skel/."

cp: 略过目录"/etc/skel/.."

cp: 略过目录"/etc/skel/.mozilla"

[root@www ~]# ls -a /home/qwe

. .. .bash_logout .bash_profile .bashrc

6.测试去切换用户

[root@www ~]# su qwe

[qwe@localhost root]$ exit

exit

用户和组账号的查询

id命令

用途:查询用户身份标识

格式:id [用户名]

[root@www zsy]# id haha

id: haha: no such user

[root@www zsy]# id qwe

uid=1050(qwe) gid=1050(qwe) 组=1050(qwe)

groups命令

用途:查询用户所属的组

格式:groups [用户名]

[root@www zsy]# groups qwe

qwe : qwe

[root@www zsy]# groups nn

nn : nn oo 基本组 附加组

finger命令

用途:查询用户帐号的详细信息

格式:finger [-l] [用户名]

[root@www zsy]# yum -y install finger 需要安装软件 之后学

[root@www zsy]# finger qwe

Login: qwe Name:

Directory: /home/qwe Shell: /bin/bash

Last login 四 2月 20 13:53 (CST) on pts/0

[root@www zsy]# finger -l qwe

Login: qwe Name:

Directory: /home/qwe Shell: /bin/bash

Last login 四 2月 20 13:53 (CST) on pts/0

users、w 、who命令

用途:查询已登录到主机的用户信息

[root@www zsy]# users

root root

[root@www zsy]# w

14:05:42 up 1 day, 16:09, 2 users, load average: 0.18, 0.20, 0.31

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root :0 :0 151月20 ?xdm? 5:41m 1.69s /usr/lib

root pts/0 :0 三14 6.00s 0.78s 0.04s w

[root@www zsy]# who

root :0 2020-01-15 08:44 (:0)

root pts/0 2020-02-19 14:43 (:0)

使用useradd创建用户what uid 1060 gid 1060 家目录 /what 失效时间 2020-02-25 不能登录

groupadd -g 1060 what && useradd -u 1060 -g 1060 -e 2020-02-25 -d /what -s /sbin/nologin what

权限:

访问权限

对于文件而言

读取:允许查看文件内容

写入:允许修改文件内容允许

可执行:允许运行程序

对于目录而言

读取:显示目录列表

写入:在目录中新建、移动、删除文件或子目录

可执行:切换目录(节点表内的权限)

[root@www /]# mkdir /aaa

[root@www /]# cd /aaa

[root@www aaa]# touch 1

[root@www aaa]# mkdir 2

[root@www aaa]# ls

1 2

[root@www aaa]# ls -l 1

-rw-r--r--. 1 root root 0 2月 20 14:37 1

[root@www aaa]# ls -ld 2

drwxr-xr-x. 2 root root 6 2月 20 14:37 2

第一位 -代表文件 d目录 l软链接

第一组三位 这是对于属主(主人)的访问权限 rwx r可读 w可写 x可执行 rwx(可读可写可执行)

第二组三位 这是对于属组(小组)的访问权限 r-x -没有这个位置为权限 r-x 可读不可写可执行

第三组三位 这是对于其他用户的访问权限 r-x 可读不可写可执行

属主 第一位root

属组 第二位 root

root用户对于2目录

[root@www aaa]# cd 2 x

[root@www 2]# ls r

[root@www 2]# touch haha w

其他用户

[qwe@localhost 2]$ ls

haha

[qwe@localhost 2]$ cd ../2

[qwe@localhost 2]$ touch hehe

touch: 无法创建"hehe": 权限不够

root对文件1

[root@www aaa]# cat 1

[root@www aaa]# echo 1111 > 1

[root@www aaa]# ./1

bash: ./1: 权限不够

[root@www aaa]# su qwe

[qwe@localhost aaa]$ cat 1

1111

[qwe@localhost aaa]$ echo 2222 > 1

bash: 1: 权限不够

[qwe@localhost aaa]$ ./1

bash: ./1: 权限不够

设置权限

chmod命令

格式1:chmod [ugoa] [+-=] [rwx] 文件或目录...

u 属主 g 属组 o其他用户 a 所有

+ 添加

- 去掉

= 具备

权限修改要在root的用户下进行修改:

[root@www aaa]# chmod o+w 1

[root@www aaa]# ls -l 1

-rw-r--rw-. 1 root root 5 2月 20 14:51 1

[root@www aaa]# su qwe

[qwe@localhost aaa]$ echo 2222 > 1

[root@www aaa]# chmod g+wx 1

[root@www aaa]# ls -l 1

-rw-rwxrw-. 1 root root 5 2月 20 14:55 1

[root@www aaa]# ls

[root@www aaa]# chmod g-x 1

[root@www aaa]# ls -l 1

-rw-rw-rw-. 1 root root 5 2月 20 14:55 1

[root@www aaa]# chmod g=x 1

[root@www aaa]# ls -l 1

-rw---xrw-. 1 root root 5 2月 20 14:55 1

[root@www aaa]# chmod a=rw 1

[root@www aaa]# ls -l 1

-rw-rw-rw-. 1 root root 5 2月 20 14:55 1

[root@www aaa]# chmod u=rwx 1

[root@www aaa]# ls -l 1

-rwxrw-rw-. 1 root root 5 2月 20 14:55 1

格式2:chmod nnn 文件或目录...

字符表示 r w x r w x r w x

数字表示 4 2 1 4 2 1 4 2 1

权限分配 文件所有者 文件所属组 其他用户

r w - r - - r - -

4 2 0 4 0 0 4 0 0

6 4 4

想要给1文件权限rwxr-xr-x 421 41 41 7 5 5

[root@www aaa]# chmod 755 1

[root@www aaa]# ls -l 1

-rwxr-xr-x. 1 root root 5 2月 20 14:55 1

-R 参数 递归 用在目录上 将该目录下面的所有的内容全部具备和这个目录一样的访问权限

[root@www aaa]# chmod -R 777 .

[root@www aaa]# ls -ld .

drwxrwxrwx. 3 root root 24 2月 20 14:37 .

[root@www aaa]# ls

1 2

[root@www aaa]# ls -l

总用量 4

-rwxrwxrwx. 1 root root 5 2月 20 14:55 1

drwxrwxrwx. 2 root root 18 2月 20 14:46 2

[root@www aaa]# chmod -R g-x .

[root@www aaa]# ls -ld .

drwxrw-rwx. 3 root root 24 2月 20 14:37 .

[root@www aaa]# ls -l

总用量 4

-rwxrw-rwx. 1 root root 5 2月 20 14:55 1

drwxrw-rwx. 2 root root 18 2月 20 14:46 2

归属(所有权)

属主:拥有该文件或目录的用户帐号

属组:拥有该文件或目录的组帐号

[root@www aaa]# ls -l 1

-rwxrw-rwx. 1 root root 5 2月 20 14:55 1

第一位root 属主

第二位root 属组

chown命令

格式:chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径)

[root@www aaa]# ls -l 1

-rwxrw-rwx. 1 root root 5 2月 20 14:55 1

[root@www aaa]# chown qwe 1

[root@www aaa]# ls -l 1

-rwxrw-rwx. 1 qwe root 5 2月 20 14:55 1

[root@www aaa]# chown :qwe 1

[root@www aaa]# ls -l 1

-rwxrw-rwx. 1 qwe qwe 5 2月 20 14:55 1

[root@www aaa]# chown root:root 1

[root@www aaa]# ls -l 1

-rwxrw-rwx. 1 root root 5 2月 20 14:55 1

[root@www aaa]# chgrp qwe 1

[root@www aaa]# ls -l 1

-rwxrw-rwx. 1 root qwe 5 2月 20 14:55 1

-R 参数 递归 用在目录上 将该目录下面的所有的内容全部具备和这个目录一样的归属

[root@www aaa]# chown -R qwe:qwe .

[root@www aaa]# ls -l

总用量 4

-rwxrw-rwx. 1 qwe qwe 5 2月 20 14:55 1

drwxrw-rwx. 2 qwe qwe 18 2月 20 14:46 2

set位权限 是针对于二进制可执行(x)文件的

set位权限可以加给用户也可以加给组 但是加的时候是必须要有x权限 才能往上面添加

给passwd这个可执行文件加上set位权限 让其他的用户通过借用权限也能修改自己的密码

这个实验只能通过passwd来去做 但是在centos7版本上本来的passwd上就有set位权限 为了能够看到实验的效果,现在先去掉passwd的set位权限,在通过不加和加两种操作,使普通用户更改密码,看两种效果,不加set位更改不成功,加上set位可以更改成功。

[root@localhost ~]# ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

[root@localhost ~]# chmod u-s /usr/bin/passwd

[root@localhost ~]# ls -l /usr/bin/passwd

-rwxr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

[root@localhost ~]# useradd test

[root@localhost ~]# passwd test #一定要先设置密码

更改用户 test 的密码 。

新的 密码:

无效的密码: 密码未通过字典检查 - 过于简单化/系统化

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

[root@localhost ~]# su test

[test@localhost root]$ passwd

更改用户 test 的密码 。

为 test 更改 STRESS 密码。

(当前)UNIX 密码: #起初设置的密码

新的 密码: #要输的困难一些 字母 +数字+字符 不能和你的原密码相似

重新输入新的 密码:

passwd: 鉴定令牌操作错误

[root@localhost ~]# chmod u+s /usr/bin/passwd

[root@localhost ~]# ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

[root@localhost ~]# su test

[test@localhost root]$ passwd

更改用户 test 的密码 。

为 test 更改 STRESS 密码。

(当前)UNIX 密码:

新的 密码: #要输的困难一些 字母 +数字+字符 不能和你的原密码相似

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

t 粘滞位权限

针对于公共目录 目录有777权限

加上t权限后 之后该目录的属主可以删除掉目录中的内容,其他的用户删除不了

t只能加在其他用户上

[root@localhost ~]# mkdir /media/aa # 不要在/root下 也不要在/home

[root@localhost ~]# chmod 777 /media/aa

[root@localhost ~]# chmod +t /media/aa

[root@localhost ~]# ls -ld /media/aa

drwxrwxrwt. 2 root root 6 2月 20 16:46 /media/aa

[root@localhost ~]# cd /media/aa

[root@localhost aa]# touch 1

[root@localhost aa]# su test

[test@localhost aa]$ ls

1

[test@localhost aa]$ touch 2

[test@localhost aa]$ ls

1 2

[test@localhost aa]$ rm -rf 1

rm: 无法删除"1": 不允许的操作

[test@localhost aa]$ rm -rf 2

设置SET位、粘滞位权限

使用权限字符

chmod ug±s 可执行文件...

chmod o±t 目录名...

当属主有s 4

当属组有s 2

当其他用户上面有t 1

1777 rwxrwxrwt

4755 rwsr-xr-x

2755 rwxr-sr-x

7777 rwsrwsrwt

[root@localhost aa]# ls -l

总用量 0

-rw-r--r--. 1 root root 0 2月 20 16:48 1

[root@localhost aa]# chmod 7777 1

[root@localhost aa]# ls -l

总用量 0

-rwsrwsrwt. 1 root root 0 2月 20 16:48 1

[root@localhost aa]# chmod 4777 1

[root@localhost aa]# ls -l

总用量 0

-rwsrwxrwx. 1 root root 0 2月 20 16:48 1

[root@localhost aa]# chmod 2777 1

[root@localhost aa]# ls -l

总用量 0

-rwxrwsrwx. 1 root root 0 2月 20 16:48 1

[root@localhost aa]# chmod 1777 1

[root@localhost aa]# ls -l

总用量 0

-rwxrwxrwt. 1 root root 0 2月 20 16:48 1

微调权限 针对某一个用户让它拥有不同于其他人的特殊权限

[root@localhost aa]# ls -l

总用量 0

-rwxrwxrwx. 1 root root 0 2月 20 16:48 1

[root@localhost aa]# ls -l

总用量 0

-rwxrwxrwx. 1 root root 0 2月 20 16:48 1

[root@localhost aa]# setfacl -m u:test:r 1 #给test这个用户只设置读的权限

[root@localhost aa]# ls -l

总用量 0

-rwxrwxrwx+ 1 root root 0 2月 20 16:48 1

[root@localhost aa]# getfacl 1

# file: 1

# owner: root

# group: root

user::rwx

user:test:r--

group::rwx

mask::rwx

other::rwx

#删除test用户只读的权限

[root@localhost aa]# setfacl -x u:test 1

[root@localhost aa]# ls -l

总用量 0

-rwxrwxrwx+ 1 root root 0 2月 20 16:48 1

[root@localhost aa]# getfacl 1

# file: 1

# owner: root

# group: root

user::rwx

group::rwx

mask::rwx

other::rwx

对组去做微调权限 包含在这个组中的用户都对它只有只读的权限

[root@localhost aa]# setfacl -m g:test:r 1

[root@localhost aa]# getfacl 1

# file: 1

# owner: root

# group: root

user::rwx

group::rwx

group:test:r--

mask::rwx

other::rwx

#删除

[root@localhost aa]# setfacl -x g:test 1

[root@localhost aa]# getfacl 1

# file: 1

# owner: root

# group: root

user::rwx

group::rwx

mask::rwx

other::rwx

#缺省权限 当创建新的文件或目录时 在最大权限的基础上 缺掉的权限

umask

[root@localhost aa]# umask

0022

--- -w- -w-

[root@localhost aa]# ls -ld haha

drwxr-xr-x. 2 root root 6 2月 20 17:08 haha

[root@localhost aa]# ls -l 22

-rw-r--r--. 1 root root 0 2月 20 17:08 22

更改umask的值:

[root@localhost aa]# umask 777

[root@localhost aa]# umask

0777

[root@localhost aa]# mkdir tt

[root@localhost aa]# touch 55

[root@localhost aa]# ls -ld tt

d---------. 2 root root 6 2月 20 17:10 tt

[root@localhost aa]# ls -l 55

----------. 1 root root 0 2月 20 17:10 55

[root@localhost aa]# umask 00

[root@localhost aa]# umask 000

[root@localhost aa]# umask

0000

[root@localhost aa]# touch 66

[root@localhost aa]# mkdir yy

[root@localhost aa]#

[root@localhost aa]# ls -l 66

-rw-rw-rw-. 1 root root 0 2月 20 17:11 66

[root@localhost aa]# ls -ld yy

drwxrwxrwx. 2 root root 6 2月 20 17:11 yy

[root@localhost aa]# umask 022

安装:

3种方式:

1.rpm安装

2.yum安装

3.源代码编译安装

应用程序与系统命令的关系

文件位置

系统命令:一般在/bin和/sbin目录中,或为Shell内部指令

应用程序:通常在/usr/bin和/usr/sbin目录中

主要用途

系统命令:完成对系统的基本管理工作,例如IP配置工具

应用程序:完成相对独立的其他辅助任务,例如网页浏览器

适用环境

系统命令:一般只在字符操作界面中运行

应用程序:根据实际需要,有些程序可在图形界面中运行

运行格式

系统命令:一般包括命令字、命令选项和命令参数

应用程序:通常没有固定的执行格式

普通执行程序文件 /usr/bin

服务器执行程序文件和管理程序文件 server /usr/sbin

应用程序配置文件 /etc

日志文件 /var/log

应用程序文档文件 /usr/share/doc

应用程序手册页文件 /usr/share/man

rpm软件包 扩展名为“.rpm” 二进制包 电脑能够识别的语言

源代码软件包 一般为“.tar.gz”、“.tar.bz2”等格式的压缩包 包含程序的原始代码 开发编写好的代码 电脑不能识别的软件包

rpm命令

1. 查询RPM软件、包文件的相关信息

2. 安装、升级、卸载RPM软件包

3. 维护RPM数据库信息

RPM查询

格式:rpm -q[子选项] [软件名]

-q :后面跟软件名称,查询是否已经安装*

[root@localhost ~]# rpm -q postfix

postfix-2.10.1-6.el7.x86_64

[root@localhost ~]# rpm -q samba

未安装软件包 samba

-qa:查看系统中已安装的所有RPM软件包列表(all)*

[root@localhost ~]# rpm -qa

[root@localhost ~]# rpm -qa postfix #显示所有

postfix-2.10.1-6.el7.x86_64

-qi:查看指定软件的详细信息(information)*

[root@localhost ~]# rpm -qi postfix

Name : postfix

Epoch : 2

Version : 2.10.1

Release : 6.el7

Architecture: x86_64

Install Date: 2019年12月17日 星期二 16时38分27秒

Group : System Environment/Daemons

Size : 12773475

License : IBM and GPLv2+

-ql:查询指定软件包所安装的目录、文件列表 (list)

[root@localhost ~]# rpm -ql postfix

/etc/pam.d/smtp

-qc:仅显示指定软件包安装的配置文件(/etc下的)

[root@localhost ~]# rpm -qc postfix

/etc/pam.d/smtp.postfix

/etc/postfix/access

/etc/postfix/canonical

/etc/postfix/generic

/etc/postfix/header_checks

/etc/postfix/main.cf

/etc/postfix/master.cf

/etc/postfix/relocated

/etc/postfix/transport

/etc/postfix/virtual

/etc/sasl2/smtpd.conf

-qd:仅显示指定软件包安装的文档文件(directory)*

[root@localhost ~]# rpm -qd postfix

/usr/share/doc/postfix-2.10.1/COMPATIBILITY

-qf :后面跟文件名称,找出该文件属于哪一个已经安装的软件*

[root@localhost ~]# rpm -qf /usr/share/man/man8/virtual.8.gz

postfix-2.10.1-6.el7.x86_64

[root@localhost ~]# rpm -qc samba

未安装软件包 samba

所以这里的rpm -q 只是针对于安装好的软件 未安装的软件在这里不生效

查询未安装的RPM包文件

首先要学会挂载 挂载相当于插u盘

[root@localhost ~]# mkdir /mnt/mount

[root@localhost ~]# ls /mnt/mount/

[root@localhost ~]# mount /dev/sr0 /mnt/mount/

mount: /dev/sr0 写保护,将以只读方式挂载

[root@localhost ~]# cd /mnt/mount/

[root@localhost mount]# ls

CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7

EFI images Packages RPM-GPG-KEY-CentOS-Testing-7

EULA isolinux repodata TRANS.TBL

卸载:

[root@localhost mount]# umount /dev/sr0

umount: /mnt/mount:目标忙。 #自己现在处于挂载目录下

(有些情况下通过 lsof(8) 或 fuser(1) 可以

找到有关使用该设备的进程的有用信息)

[root@localhost mount]# pwd

/mnt/mount

[root@localhost mount]# cd

[root@localhost ~]# umount /dev/sr0

#光盘和目录联系在一起 如果光盘是只读 所以目录也是只读

[root@localhost ~]# mount /dev/sr0 /mnt/mount/

mount: /dev/sr0 写保护,将以只读方式挂载

[root@localhost ~]# mkdir /mnt/mount/aa

mkdir: 无法创建目录"/mnt/mount/aa": 只读文件系统

#挂载是可以挂在多个地方的

mount /dev/sr0 /media/ #显示在桌面上

#要想查看未安装的rpm包 首先进行挂载 因为光盘当中有未安装的安装包、

[root@localhost ~]# cd /mnt/mount/

[root@localhost mount]# ls

CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7

EFI images Packages RPM-GPG-KEY-CentOS-Testing-7

EULA isolinux repodata TRANS.TBL

[root@localhost mount]# cd Packages/ #这个目录里面存放着安装包

格式:rpm -qp[子选项] RPM包文件

-qpi:通过.rpm包文件查看该软件的详细信息

[root@localhost Packages]# rpm -qpi zziplib-0.13.62-5.el7.x86_64.rpm

警告:zziplib-0.13.62-5.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

Name : zziplib

Version : 0.13.62

Release : 5.el7

Architecture: x86_64

Install Date: (not installed)

-qpl:查看.rpm安装包内所包含的目录、文件列表

[root@localhost Packages]# rpm -qpl zziplib-0.13.62-5.el7.x86_64.rpm

警告:zziplib-0.13.62-5.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

/usr/lib64/libzzip-0.so.10

/usr/lib64/libzzip-0.so.11

/usr/lib64/libzzip-0.so.12

-qpc:查看.rpm安装包内包含的配置文件列表

[root@localhost Packages]# rpm -qpc zsh-5.0.2-28.el7.x86_64.rpm

警告:zsh-5.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

/etc/skel/.zshrc

/etc/zlogin

/etc/zlogout

/etc/zprofile

-qpd:查看.rpm安装包内包含的文档文件列表

[root@localhost Packages]# rpm -qpd zsh-5.0.2-28.el7.x86_64.rpm

警告:zsh-5.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

/usr/share/doc/zsh-5.0.2/BUGS

/usr/share/doc/zsh-5.0.2/CONTRIBUTORS

/usr/share/doc/zsh-5.0.2/FAQ

rpm的安装 安装的是rpm包

安装或升级RPM软件

格式:rpm [选项] RPM包文件...

用法:不同选项适用于不同情况

-i:安装一个新的rpm软件包

-U:升级某个rpm软件,若原本未装,则进行安装

-F:更新某个rpm软件,若原本未装,则放弃更新

卸载指定的RPM软件

格式:rpm -e 软件名

辅助选项

--force:强制安装所指定的rpm软件包

--nodeps:安装、升级或卸载软件时,忽略依赖关系

-h:以“#”号显示安装的进度

-v:显示安装过程中的详细信息

一般情况下我们会使用ivh来进行

rpm -e lynx --nodeps

安装必须进入到Packages这个目录下

[root@localhost ~]# cd /mnt/mount/Packages/

[root@localhost Packages]# rpm -i zsh-5.0.2-28.el7.x86_64.rpm

警告:zsh-5.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

[root@localhost Packages]# cd

[root@localhost ~]# rpm -i zsh-5.0.2-28.el7.x86_64.rpm

错误:打开 zsh-5.0.2-28.el7.x86_64.rpm 失败: 没有那个文件或目录

[root@localhost ~]# rpm -e zsh #卸载卸软件名 任意目录都可以

#带vh的安装步骤

[root@localhost Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm

警告:zsh-5.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:zsh-5.0.2-28.el7 ################################# [100%]

[root@localhost Packages]# rpm -evh zsh

准备中... ################################# [100%]

正在清理/删除...

1:zsh-5.0.2-28.el7 ################################# [100%]

升级选项

[root@localhost Packages]# rpm -Fvh zsh-5.0.2-28.el7.x86_64.rpm

警告:zsh-5.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

[root@localhost Packages]# rpm -q zsh

未安装软件包 zsh

[root@localhost Packages]#

[root@localhost Packages]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm

警告:zsh-5.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:zsh-5.0.2-28.el7 ################################# [100%]

忽略依赖关系:

[root@localhost Packages]# rpm -ivh samba-4.7.1-6.el7.x86_64.rpm

警告:samba-4.7.1-6.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

错误:依赖检测失败:

libxattr-tdb-samba4.so()(64bit) 被 samba-0:4.7.1-6.el7.x86_64 需要

libxattr-tdb-samba4.so(SAMBA_4.7.1)(64bit) 被 samba-0:4.7.1-6.el7.x86_64 需要

samba-common-tools = 4.7.1-6.el7 被 samba-0:4.7.1-6.el7.x86_64 需要

samba-libs = 4.7.1-6.el7 被 samba-0:4.7.1-6.el7.x86_64 需要

[root@localhost Packages]# rpm -ivh samba-4.7.1-6.el7.x86_64.rpm --nodeps

警告:samba-4.7.1-6.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:samba-0:4.7.1-6.el7 ################################# [100%]

--force 辅助选项主要应用于以下两种情况:

1)缺失某个软件包的文件时,需要进行覆盖安装以找回丢失文件

2)安装一个比现有软件版本陈旧的软件包(多为测试用途)

rpm不能解决依赖关系.

维护RPM数据库:

格式:rpm --rebuilddb

或者:rpm --initdb

[root@localhost Packages]# rpm --rebuilddb #把package目录中的安装包恢复到最初始的状态

导入验证公钥:

[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[root@localhost /]# locate GPG-KEY

/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7

/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Testing-7

[root@localhost Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm #再次安装没有警告

准备中... ################################# [100%]

正在升级/安装...

1:zsh-5.0.2-28.el7 ################################# [100%]

yum命令

安装 yum应用程序

yum这个程序是用来去抓包 可以把数据库里面的软件包缓存在自己的本地

[root@localhost ~]# rpm -qa | grep yum

yum-langpacks-0.4.2-7.el7.noarch

yum-3.4.3-158.el7.centos.noarch

yum-utils-1.1.31-45.el7.noarch

PackageKit-yum-1.1.5-1.el7.centos.x86_64

yum-metadata-parser-1.1.4-10.el7.x86_64

yum-plugin-fastestmirror-1.1.31-45.el7.noarch

最小化安装没有yum 需要自己通过rpm来安装

yum抓包 rpm安装包 yum来安装软件包 安装的是rpm软件包

有配置文件

[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# ls

CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo

CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo

网络yum源非常的重要 一定不能删除

必须联网才能使用

yum安装好以后里面就会有网络yum

如果已经删除掉 新建虚拟机 从其他地方拷贝 scp /etc/yum.repo.d/* root@192.168.2.10:/etc/yum.repo.d

[root@localhost yum.repos.d]# vim CentOS-Base.repo #查看样例 这个里面是网络yum

[root@localhost yum.repos.d]# mkdir data

[root@localhost yum.repos.d]# mv C* data/

[root@localhost yum.repos.d]# ls

data

[root@localhost yum.repos.d]# vim aa.repo

[aa]

name=aa

baseurl=file:///mnt/mount #光盘的挂载点

enabled=1

gpgcheck=0

使用yum

yum list #列出当前能获取到的包

[root@localhost yum.repos.d]# yum clean all #清除缓存

已加载插件:fastestmirror, langpacks

正在清理软件源: aa

Cleaning up everything

Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos

Cleaning up list of fastest mirrors

Yum查询的命令:

格式:yum [option] [查询工作项目] [相关参数]

【option】主要的参数有:

-y 当需要等待用户输入的时候,这个选项可以自动的提供yes响应

--installroot=/some/path 将软件安装在指定的目录而不是默认路径

[root@localhost yum.repos.d]# yum -y install samba #能够解决依赖关系

yum安装只用写想要安装服务的名称

卸载软件:

[root@localhost yum.repos.d]# yum -y remove samba

升级:

Yum update 升级

yum -y update samba

【查询工作项目】

search:搜索某个软件名称名称或是描述的重要关键字

[root@localhost yum.repos.d]# yum search samba

已加载插件:fastestmirror, langpacks

samba-client-libs.x86_64 : Samba client libraries

samba-common.noarch : Files used by both Samba servers and clients

samba-common-libs.x86_64 : Libraries used by both Samba servers and clients

samba-common-tools.x86_64 : Tools for Samba servers and

list:列出目前yum所管理的所有的软件名称与版本

yum list

info:同上

[root@localhost yum.repos.d]# yum info samba

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

已安装的软件包

名称 :samba

架构 :x86_64

版本 :4.7.1

provides:查看包内内容,一般用来查找未安装的命令

[root@localhost yum.repos.d]# yum provides finger

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

finger-0.17-52.el7.x86_64 : The finger client

例:

yum list 查询到yum服务器上锁提供的所有软件名称

yum list update 列出yum服务器上可以更新的软件名称

yum search firefox 搜索火狐

yum list Firefox 查询火狐

yum info Firefox 查询火狐的具体信息

yum grouplist 列出所有可用的软件组列表

yum groupremove [软件包名] 卸载指定软件组

yum groupinstall 【软件包名】 安装指定软件组

[root@localhost yum.repos.d]# yum grouplist httpd

已加载插件:fastestmirror, langpacks

没有安装组信息文件

Maybe run: yum groups mark convert (see man yum)

Loading mirror speeds from cached hostfile

源代码编译安装 安装是源代码包 服务官网

开发直接写出来的包 没有经过经过编译的包

gcc* 它是用来编译的 yum -y install gcc*

1.解压

2.配置 可以指定安装路径

3.编译 二进制文件

4.安装

首先

yum -y install gcc* 才能有编译的功能

1.解压

tar -zxf httpd-2.2.17.tar\(1\)\(1\).gz -C /usr/src/

2.配置

cd /usr/src/httpd-2.2.17/

./configure --prefix=/usr/local/httpd

3.编译

make

4.安装

make install

方便起见 (make && make install)

[root@localhost httpd-2.2.17]# cd /usr/local/httpd/

[root@localhost httpd]# ls

bin cgi-bin error icons lib man modules

build conf htdocs include logs manual

磁盘配置和文件系统

硬盘的物理结构

盘片:硬盘有多个盘片,每盘片2面

磁头:每面一个磁头

硬盘的数据结构

扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据

磁道:同一盘片不同半径的同心圆

柱面:不同盘片相同半径构成的圆柱面

硬盘存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数

磁盘接口类型

IDE(并口) 传输的速度快 但是数据量小

SATA(串口) 传输的数据量大 速度慢

SCSI 速度快 传输的数据量大

主引导记录(MBR:Master Boot Record)

MBR位于硬盘第一个物理扇区处

MBR中包含硬盘的主引导程序和硬盘分区表

分区表有4个分区记录区,每个分区记录区占16个字节

加电自检---加载主引导程序(硬盘当中的第一个扇区)---加载内核 ---启动第一个程序(init)

硬盘在centos系统中的命名方式

/dev/sda1

/dev/设备存放的目录

sd 代表 scsi硬盘

hd 代表 ide硬盘

a 第几块硬盘 b c d 按照顺序依次排列

1 分区号 2 3 4 按照顺序依次排列

硬盘不能直接使用 需要分区才能使用

比如 自身的物理机上有一块硬盘 想要它 需要分分区 也就是 c盘 d盘 。。。。

centos 也是可以分分区

主分区的个数只能有4个 因为MBR引导扇区的分区位置只有4个

如果想要创建更多的分区 只能将第四个分区变为扩展分区 在扩展分区中创建逻辑分区

逻辑分区的个数是不受限制的 所以逻辑分区是包含在扩展分区里面的

逻辑分区不能比扩展分区大 逻辑区的大小受扩展分区的限制

逻辑分区的标号是都是从5开始的 前面的标号会给主分区留位置

扩展分区只是一个空间不能使用 只有逻辑分区和主分区能够正常的使用

文件系统类型

分区完硬盘,不能直接的使用 需要给分区一个文件系统

u盘 已经做好分区 和文件系统 FAT32

要求 EXT3 EXT4 xfs

Kernel 2.4.8 2.6.28

Block大小 4K 4K

文件大小 2TB 16TB

文件系统大小16TB 1EB

子目录 32000 无限

inode 128字节 256字节

无日志 否 是

Linux支持的其它文件系统类型

FAT16、FAT32、NTFS

EXT4、JFS……

默认的文件系统

XFS 文件系统

存放文件和目录数据的分区

高性能的日志型文件系统

CentOS 7系统中默认使用的文件系统

交换文件系统

也就是为电脑预留出来的一部分空间

fdisk命令

查看或管理磁盘分区

fdisk -l [磁盘设备]

fdisk [磁盘设备]

[root@localhost ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区

[root@localhost ~]# fdisk -l /dev/sda

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区

交互模式中的常用指令

m、p、n、d、t、w、q

m 查看帮助信息

p 打印当前分区列表

n 添加分区

d 删除分区

w 保存并退出

q 不保存退出

t 更改分区的系统类型

添加一块硬盘 需要重启虚拟机

重启

shutdown -r now

shutdown -r +15 “警告:系统将于15分钟后重启”

reboot

关机

shutdown -h now

halt

halt -p

Poweroff

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

[root@www ~]# fdisk /dev/sdb

命令(输入 m 获取帮助):m #获取帮助信息

命令操作

n add a new partition 添加一个新的分区

命令(输入 m 获取帮助):n

Partition type:

p primary (0 primary, 0 extended, 4 free) #主分区

e extended #扩展分区

Select (default p): p

分区号 (1-4,默认 1):

起始 扇区 (2048-41943039,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G

分区 1 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):p #打印当前分区

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x458022bf

设备 Boot Start End Blocks Id System

/dev/sdb1 2048 4196351 2097152 83 Linux

/dev/sdb2 4196352 8390655 2097152 83 Linux

/dev/sdb3 8390656 12584959 2097152 83 Linux

/dev/sdb4 12584960 16779263 2097152 83 Linux

命令(输入 m 获取帮助):d #删除分区

分区号 (1-4,默认 4):4

分区 4 已删除

命令(输入 m 获取帮助):n

Partition type:

p primary (3 primary, 0 extended, 1 free)

e extended

Select (default e): #扩展分区

Using default response e

已选择分区 4

起始 扇区 (12584960-41943039,默认为 12584960):

将使用默认值 12584960

Last 扇区, +扇区 or +size{K,M,G} (12584960-41943039,默认为 41943039):

将使用默认值 41943039

分区 4 已设置为 Extended 类型,大小设为 14 GiB

命令(输入 m 获取帮助):n

All primary partitions are in use

添加逻辑分区 5

起始 扇区 (12587008-41943039,默认为 12587008):

将使用默认值 12587008

Last 扇区, +扇区 or +size{K,M,G} (12587008-41943039,默认为 41943039):+2G

分区 5 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):q 不保存退出

命令(输入 m 获取帮助):w 保存并退出

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

[root@www ~]# fdisk -l /dev/sdb

设备 Boot Start End Blocks Id System

/dev/sdb1 2048 4196351 2097152 83 Linux

/dev/sdb2 4196352 8390655 2097152 83 Linux

/dev/sdb3 8390656 12584959 2097152 83 Linux

/dev/sdb4 12584960 41943039 14679040 5 Extended

/dev/sdb5 12587008 16781311 2097152 83 Linux

[root@www ~]# mkfs -t ext4 /dev/sdb1 -t 类型

mke2fs 1.42.9 (28-Dec-2013)

文件系统标签=

[root@www ~]# mkfs.xfs /dev/sdb2

meta-data=/dev/sdb2 isize=512 agcount=4, agsize=131072 blks

[root@www ~]# mkdir /mnt/sdb2

[root@www ~]# mount /dev/sdb2 /mnt/sdb2

[root@www ~]# cd /mnt/sdb2/ #挂载完之后就可以正常使用 只要在这个目录中存入内容,就相当于存储到硬盘中

[root@www sdb2]# mkdir /mnt/sdb3/

[root@www sdb2]# mount /dev/sdb3 /mnt/sdb3 #当前的硬盘没有格式

mount: /dev/sdb3 写保护,将以只读方式挂载

mount: 文件系统类型错误、选项错误、/dev/sdb3 上有坏超级块、

缺少代码页或助手程序,或其他错误

有些情况下在 syslog 中可以找到一些有用信息- 请尝试

dmesg | tail 这样的命令看看。

如果不小心格式化错误 可以再次格式化 就覆盖掉了

[root@www sdb2]# mkfs -t ext3 /dev/sdb1

mke2fs 1.42.9 (28-Dec-2013)

[root@www sdb2]# mkfs.ext4 /dev/sdb1

[root@www sdb2]# mkfs.xfs -f /dev/sdb1

meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks

自动挂载

因为使用mount挂载 是临时挂载 当虚拟机重启之后 挂载会消失

要让其实现自动挂载

[root@www sdb2]# vim /etc/fstab

/dev/sdb2 /mnt/sdb2 xfs defaults 0 0

需要挂载的设备 挂载点 类型 默认配置 检测 权限 标签

[root@www sdb2]# mount -a

将/etc/fstab这个文件中内容全部重新挂载一遍

[root@www sdb2]# blkid /dev/sdb2

/dev/sdb2: UUID="d961f96c-b057-4f37-9508-6e1daabbed7e" TYPE="xfs"

[root@www sdb2]# vim /etc/fstab

UUID=d961f96c-b057-4f37-9508-6e1daabbed7e /mnt/sdb2 xfs defaults 0 0

[root@www sdb2]# mount -a

光盘自动挂载

[root@www sdb2]# mount /dev/sr0 /mnt/mount/

mount: /dev/sr0 写保护,将以只读方式挂载

[root@www sdb2]# umount /dev/sr0

[root@www sdb2]# mount /dev/cdrom /mnt/mount/

mount: /dev/sr0 写保护,将以只读方式挂载

属于临时挂载 挂载光盘 yum 如果关机 yum就不能正常使用 采取自动挂载的方式

[root@www sdb2]# vim /etc/fstab

/dev/sr0 /mnt/mount iso9660 defaults 0 0

光盘的类型是iso9660 所以这里不能写错

[root@www sdb2]# blkid /dev/sr0

/dev/sr0: UUID="2018-05-03-20-55-23-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"

自动挂载进入到安全模式(解决办法)

/etc/fstab 这个文件非常的重要 里面的内容不能写错

如果写错 机子将不能正常启动, 开机的时候会加载fstab里面的文件

[root@www sdb2]# vim /etc/fstab

/dev/sr0 /mnt/mount xfs defaults 0 0 #写错的内容

直接进入到安全模式中

control-D 直接输入密码

[root@www sdb2]# vim /etc/fstab

#/dev/sr0 /mnt/mount xfs defaults 0 0 注释掉错误的内容

再次重启

交换分区添加分区自动挂载

[root@www ~]# fdisk -l /dev/sdb

/dev/sdb5 12587008 16781311 2097152 83 Linux

将第二块硬盘中的第5个分区的空间 加到交换分区中

[root@www ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

命令(输入 m 获取帮助):t #更改分区的系统类型

分区号 (1-5,默认 5):5

83 Linux 默认系统类型

82 Linux 交换 交换分区的系统类型

8e Linux LVM 逻辑卷分区的系统类型

fd Linux raid 自动 raid磁盘阵列的系统类型

Hex 代码(输入 L 列出所有代码):82

已将分区“Linux”的类型更改为“Linux swap / Solaris”

[root@www ~]# partprobe /dev/sdb #将磁盘进行重新加载 也就是将数据手动写入到内核中

[root@www ~]# mkswap /dev/sdb5 #格式化

正在设置交换空间版本 1,大小 = 2097148 KiB

无标签,UUID=ecfca53c-8896-4b13-a8c5-3112bab6a079

[root@www ~]# swapon -s #查看

文件名 类型 大小 已用 权限

/dev/dm-1 partition 2097148 116224 -1

[root@www ~]# cat /proc/meminfo | grep SwapTotal

SwapTotal: 2097148 kB

[root@www ~]# swapon /dev/sdb5 #添加交换分区

[root@www ~]# swapon -s

文件名 类型 大小 已用 权限

/dev/dm-1 partition 2097148 123392 -1

/dev/sdb5 partition 2097148 0 -2

[root@www ~]# cat /proc/meminfo | grep SwapTotal

SwapTotal: 4194296 kB

去除添加的交换分区

[root@www ~]# swapoff /dev/sdb5 #去掉添加的交换分区

[root@www ~]# swapon -s

文件名 类型 大小 已用 权限

/dev/dm-1 partition 2097148 122452 -1

[root@www ~]# cat /proc/meminfo | grep SwapTotal

SwapTotal: 2097148 kB

自动挂载:

[root@www ~]# vim /etc/fstab

/dev/sdb5 swap swap defaults 0 0

swap 交换分区

swap 交换分区的类型

[root@www ~]# mount -a

查看磁盘的使用空间

df命令

df [选项] [文件]

-h 以更易读的形式显示

[root@www ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

/dev/mapper/centos-root 17G 6.8G 11G 40% /

devtmpfs 471M 0 471M 0% /dev

tmpfs 488M 0 488M 0% /dev/shm

tmpfs 488M 8.6M 479M 2% /run

tmpfs 488M 0 488M 0% /sys/fs/cgroup

/dev/sdb2 2.0G 33M 2.0G 2% /mnt/sdb2

/dev/sda1 1014M 157M 858M 16% /boot

tmpfs 98M 4.0K 98M 1% /run/user/42

tmpfs 98M 20K 98M 1% /run/user/0

/dev/sr0 4.2G 4.2G 0 100% /run/media/root/CentOS 7 x86_64

-T 显示文件系统类型

[root@www ~]# df -hT

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/mapper/centos-root xfs 17G 6.8G 11G 40% /

devtmpfs devtmpfs 471M 0 471M 0% /dev

tmpfs tmpfs 488M 0 488M 0% /dev/shm

tmpfs tmpfs 488M 8.6M 479M 2% /run

tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup

/dev/sdb2 xfs 2.0G 33M 2.0G 2% /mnt/sdb2

/dev/sda1 xfs 1014M 157M 858M 16% /boot

tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42

tmpfs tmpfs 98M 20K 98M 1% /run/user/0

/dev/sr0 iso9660 4.2G 4.2G 0 100% /run/media/root/CentOS 7 x86_64

安装虚拟机

lvm (Logical Volume Manager) 逻辑卷管理

逻辑卷 另一种的分区方式

fdisk分区 (普通分区) 这种是固定的 没有办法随意的增加容量或者减少

逻辑卷 它可以在使用的过程中 随意的增容或者缩容

还能够做逻辑卷快照

安装虚拟机 自动(普通) 手动(lvm分区)

制作逻辑卷 比较的麻烦

逻辑卷 物理卷 --- 卷组----逻辑卷

pv物理卷(相当于把水打开)---vg卷组(相当于把水融合)---lv逻辑卷(相当于分出来的水)

pe(相当于把两瓶水混在一起,融合的水分子的大小 )这里的大小可以自己指定,也可以是采取默认的

逻辑卷的大小 不能比卷组的大小大

只添加了一块硬盘 使用两个分区来做 和两块硬盘是一样的

[root@www ~]# fdisk /dev/sdc #3个主分区 每个给2G 并将所有的系统类型变成8e

设备 Boot Start End Blocks Id System

/dev/sdc1 2048 4196351 2097152 8e Linux LVM

/dev/sdc2 4196352 8390655 2097152 8e Linux LVM

/dev/sdc3 8390656 12584959 2097152 8e Linux LVM

命令(输入 m 获取帮助):n

Partition type:

p primary (2 primary, 0 extended, 2 free)

e extended

Select (default p):

Using default response p

分区号 (3,4,默认 3):

起始 扇区 (8390656-41943039,默认为 8390656):

将使用默认值 8390656

Last 扇区, +扇区 or +size{K,M,G} (8390656-41943039,默认为 41943039):+2G

分区 3 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):t

分区号 (1-3,默认 3):2

Hex 代码(输入 L 列出所有代码):8e

已将分区“Linux”的类型更改为“Linux LVM”

删除 d

创建逻辑卷的步骤

一,制作物理卷

[root@www ~]# pvcreate /dev/sdc1 /dev/sdc2

Physical volume "/dev/sdc1" successfully created.

Physical volume "/dev/sdc2" successfully created.

#扫描 查看物理卷的个数

[root@www ~]# pvscan

PV /dev/sda2 VG centos lvm2 [<19.00 GiB / 0 free]

PV /dev/sdc2 lvm2 [2.00 GiB]

PV /dev/sdc1 lvm2 [2.00 GiB]

Total: 3 [<23.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 2 [4.00 GiB]

#显示详情 会将物理卷中详情给显示出来

[root@www ~]# pvdisplay

--- Physical volume ---

PV Name /dev/sda2

VG Name centos

PV Size <19.00 GiB / not usable 3.00 MiB

Allocatable yes (but full)

PE Size 4.00 MiB

Total PE 4863

Free PE 0

Allocated PE 4863

PV UUID P6fh6Y-K13f-4NEv-fwqn-Zex7-T5lU-blagan

[root@www ~]# pvremove /dev/sdc1 #删除物理卷

Labels on physical volume "/dev/sdc1" successfully wiped.

二、制作卷组 卷组的名称叫vg

[root@www ~]# vgcreate vg /dev/sdc1 /dev/sdc2 如果不指定pe大小 默认为4M vg是名称

Volume group "vg" successfully created

#扫描

[root@www ~]# vgscan

Reading volume groups from cache.

Found volume group "vg" using metadata type lvm2

Found volume group "centos" using metadata type lvm2

#显示详情

[root@www ~]# vgdisplay

--- Volume group ---

VG Name vg

System ID

Format lvm2

Metadata Areas 2

Metadata Sequence No 1

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 0

Open LV 0

Max PV 0

Cur PV 2

Act PV 2

VG Size 3.99 GiB

PE Size 4.00 MiB

Total PE 1022

Alloc PE / Size 0 / 0

Free PE / Size 1022 / 3.99 GiB

VG UUID mxE583-bYIi-dPLh-C4eB-INKo-0HYB-Wfc2rS

#向卷组中添加物理卷

[root@www ~]# pvcreate /dev/sdc3

Physical volume "/dev/sdc3" successfully created.

[root@www ~]# vgextend vg /dev/sdb3

Physical volume "/dev/sdb3" successfully created.

Volume group "vg" successfully extended

#从卷组中删除物理卷

[root@www ~]# vgreduce vg /dev/sdb3

Removed "/dev/sdb3" from volume group "vg"

#删除卷组

[root@www ~]# vgremove vg

Volume group "vg" successfully removed

#创建的时候指定pe的大小

[root@www ~]# vgcreate vg /dev/sdc1 /dev/sdc2 -s 16M -s 指定pe的大小

Volume group "vg" successfully created

[root@www ~]# vgdisplay

PE Size 16.00 MiB

#pe的大小是自定义

[root@www ~]# vgremove vg

Volume group "vg" successfully removed

[root@www ~]# vgcreate vg /dev/sdc1 /dev/sdc2 -s 7M

Volume group "vg" successfully created

三、创建逻辑卷

[root@www ~]# lvcreate -L 1G -n lv /dev/vg

Logical volume "lv" created.

-L指定大小 后面跟容量 这个的大小会自动调整为pe的整数倍

-n 逻辑卷的名称

[root@www ~]# lvcreate -l 20 -n lv1 /dev/vg

Logical volume "lv1" created.

-l 指定多少个pe 后面跟个数

# 扫描

[root@www ~]# lvscan

ACTIVE '/dev/centos/swap' [2.00 GiB] inherit

ACTIVE '/dev/centos/root' [<17.00 GiB] inherit

ACTIVE '/dev/vg/lv' [1.00 GiB] inherit

ACTIVE '/dev/vg/lv1' [320.00 MiB] inherit

#显示详情

[root@www ~]# lvdisplay

--- Logical volume ---

LV Path /dev/vg/lv

LV Name lv

VG Name vg

LV UUID EWST7o-8Aey-oLmX-CrtW-omdn-6jsp-sP9HyN

LV Write Access read/write

LV Creation host, time www.qqq, 2020-02-25 14:53:04 +0800

LV Status available

# open 0

LV Size 1.00 GiB

Current LE 64

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 8192

Block device 253:2

当前的逻辑卷还没有被使用的情况下 添加大小

#增加逻辑卷的大小 -L(容量) -l(个数)

[root@www ~]# lvextend -L +1G /dev/vg/lv

Size of logical volume vg/lv changed from 1.00 GiB (64 extents) to 2.00 GiB (128 extents).

Logical volume vg/lv successfully resized.

[root@www ~]# lvextend -l +1 /dev/vg/lv

Size of logical volume vg/lv changed from 2.00 GiB (128 extents) to <2.02 GiB (129 extents).

Logical volume vg/lv successfully resized.

#减少逻辑卷的大小 -L(容量) -l(个数)

[root@www ~]# lvreduce -L -512M /dev/vg/lv

WARNING: Reducing active logical volume to <1.52 GiB.

THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce vg/lv? [y/n]: y

Size of logical volume vg/lv changed from <2.02 GiB (129 extents) to <1.52 GiB (97 extents).

Logical volume vg/lv successfully resized.

[root@www ~]# lvreduce -l -1 /dev/vg/lv

WARNING: Reducing active logical volume to 1.50 GiB.

THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce vg/lv? [y/n]: y

Size of logical volume vg/lv changed from <1.52 GiB (97 extents) to 1.50 GiB (96 extents).

Logical volume vg/lv successfully resized.

#删除逻辑卷

[root@www ~]# lvremove /dev/vg/lv1

Do you really want to remove active logical volume vg/lv1? [y/n]: y

Logical volume "lv1" successfully removed

四、这里的逻辑卷 也是分区 想使用分区 必须先格式化 挂载

[root@www ~]# mkfs -t xfs /dev/vg/lv

meta-data=/dev/vg/lv isize=512 agcount=4, agsize=98304 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=0, sparse=0

data = bsize=4096 blocks=393216, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=1

log =internal log bsize=4096 blocks=2560, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

五、挂载

[root@www ~]# mkdir /mnt/lv

[root@www ~]# mount /dev/vg/lv /mnt/lv/

查看:

[root@www ~]# df -hT

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/mapper/centos-root xfs 17G 6.8G 11G 40% /

devtmpfs devtmpfs 471M 0 471M 0% /dev

tmpfs tmpfs 488M 0 488M 0% /dev/shm

tmpfs tmpfs 488M 8.6M 479M 2% /run

tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup

/dev/sdb2 xfs 2.0G 33M 2.0G 2% /mnt/sdb2

/dev/sda1 xfs 1014M 157M 858M 16% /boot

tmpfs tmpfs 98M 28K 98M 1% /run/user/0

/dev/sr0 iso9660 4.2G 4.2G 0 100% /run/media/root/CentOS 7 x86_64

/dev/mapper/vg-lv xfs 1.5G 33M 1.5G 3% /mnt/lv

/dev/mapper/ 是负责专门管理逻辑卷的目录

/dev/mapper/vg-lv = /dev/vg/lv

[root@www ~]# blkid /dev/vg/lv

/dev/vg/lv: UUID="5be96f46-6eff-4b6e-8f87-9dc15138248f" TYPE="xfs"

[root@www ~]# blkid /dev/mapper/vg-lv

/dev/mapper/vg-lv: UUID="5be96f46-6eff-4b6e-8f87-9dc15138248f" TYPE="xfs"

自动挂载的写法:

[root@www ~]# vim /etc/fstab

/dev/vg/lv /mnt/lv xfs defaults 0 0

[root@www ~]# mount -a

在使用的情况下给增容

[root@www ~]# df -hT

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/mapper/vg-lv xfs 1.5G 33M 1.5G 3% /mnt/lv

[root@www ~]# lvextend -L +500M /dev/vg/lv

Rounding size to boundary between physical extents: 512.00 MiB.

Size of logical volume vg/lv changed from 1.50 GiB (96 extents) to 2.00 GiB (128 extents).

Logical volume vg/lv successfully resized.

[root@www ~]# xfs_growfs /dev/vg/lv #命令比较特殊 需要记一下 因为当前的逻辑卷正在使用,使用的部分进行了格式化 添加进来的部分没有格式化 所以要使用xfs_growfs来将所有的空间再次格式化,从而达到空间真正的添加进来

[root@www ~]# df -hT

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/mapper/vg-lv xfs 2.3G 33M 2.3G 2% /mnt/lv

如果是ext4 则使用resize2fs 再次进行格式化

磁盘配额

磁盘配额 配额必须要把当前的分区格式化成xfs的类型

#查看当前主机上是否磁盘配额的功能

[root@hky ~]# rpm -qa | grep quota

quota-4.01-14.el7.x86_64

quota-nls-4.01-14.el7.noarch

#随意的一个分区 不能正在使用

#在磁盘中分区挂载时,进行手动写入 有时候识别不了分区

root@hky ~]# partprobe /dev/sdb

[root@hky ~]# mkfs -t xfs /dev/sdb4 配额必须要把当前的分区格式化成xfs的类型

[root@hky ~]# mkdir /mnt/sdc5

[root@hky ~]# mount /dev/sdb4 /mnt/sdb5

[root@hky ~]# mount

/dev/sdc5 on /mnt/sdc5 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

#之后来实现配额 配额是针对用户而言的 配额功能怎么开启 是通过挂载来让目录实现配额功能

[root@www ~]# umount /dev/sdc5

[root@www ~]# mount -o usrquota,grpquota /dev/sdc5 /mnt/sdc5

[root@www ~]# mount

/dev/sdc5 on /mnt/sdc5 type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)

#之后实现inode节点的限额 也就是对创建目录/文件的限额

#创建用户

[root@www ~]# useradd ufo

[root@www ~]# xfs_quota -x -c 'limit -u isoft=4 ihard=5 ufo' /dev/sdc5

[root@www ~]# xfs_quota -x -c 'limit -u isoft=4 ihard=5 ufo' /mnt/sdc5

-x 专家模式

-c 执行后面的命令

limit 限制

-u 针对用户

isoft 对inode节点的软限制

ihard 对inode节点的硬限制

ufo 用户名

/dev/sdc5 /mnt/sdc5 设备名 (目录 磁盘)

验证:

先加权限:

[root@www ~]# chmod 777 /mnt/sdc5

[root@www ~]# su ufo

[ufo@www root]$ cd /mnt/sdc5/

[ufo@www sdc5]$ touch {1..7}

touch: 无法创建"6": 超出磁盘限额

touch: 无法创建"7": 超出磁盘限额

[ufo@www sdc5]$ ls

1 2 3 4 5

实现对占用空间的限额

[root@www ~]# xfs_quota -x -c 'limit -u bsoft=4M bhard=5M ufo' /mnt/sdc5

bsoft 软 block块进行限额 也就是对空间进行空间

bhard 硬

[root@www ~]# cd /mnt/sdc5/

[root@www sdc5]# su ufo

[ufo@www sdc5]$ rm -rf 5

#能写入1M

[ufo@www sdc5]$ dd if=/dev/zero of=test.data bs=1M count=1

记录了1+0 的读入

记录了1+0 的写出

1048576字节(1.0 MB)已复制,0.00165227 秒,635 MB/秒

[ufo@www sdc5]$ rm -rf 2

写入不了6M

[ufo@www sdc5]$ dd if=/dev/zero of=test.data bs=1M count=6

dd: 写入"test.data" 出错: 超出磁盘限额

记录了6+0 的读入

记录了5+0 的写出

5242880字节(5.2 MB)已复制,0.00799046 秒,656 MB/秒

dd 复制

/dev/zero 可以无限生成空字符

of 生成的文件名称

bs 一次写入多大的内容

count 使用几次写入

自动挂载实现当前的磁盘配额的功能

[root@www ~]# vim /etc/fstab

/dev/sdc5 /mnt/sdc5 xfs defaults,usrquota,grpquota 0 0

[root@www ~]# mount -a

#如何查看当前的配额

[root@www ~]# xfs_quota -x -c 'quota ufo' /mnt/sdc5 #对空间的限额

Disk quotas for User ufo (1062)

Filesystem Blocks Quota Limit Warn/Time Mounted on

/dev/sdc5 5120 4096 5120 00 [6 days] /mnt/sdc5

[root@www ~]# xfs_quota -x -c 'quota -i ufo' /mnt/sdc5 #对于目录/文件个数的限额

Disk quotas for User ufo (1062)

Filesystem Files Quota Limit Warn/Time Mounted on

/dev/sdc5 4 4 5 00 [--------] /mnt/sdc5

逻辑卷快照:

给逻辑卷做备份:

1.做逻辑卷

设备 Boot Start End Blocks Id System

/dev/sdd1 2048 4196351 2097152 8e Linux LVM

/dev/sdd2 4196352 8390655 2097152 8e Linux LVM

[root@www ~]# pvcreate /dev/sdd1 /dev/sdd2

Physical volume "/dev/sdd1" successfully created.

Physical volume "/dev/sdd2" successfully created.

[root@www ~]# vgcreate vg0 /dev/sdd1 /dev/sdd2

Volume group "vg0" successfully created

[root@www ~]# lvcreate -L 1G -n lv1 /dev/vg0

Logical volume "lv1" created.

[root@www ~]# mkfs.xfs /dev/vg0/lv1 #要做磁盘配额 所以必须格式化成xfs的类型

meta-data=/dev/vg0/lv1 isize=512 agcount=4, agsize=65536 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=0, sparse=0

data = bsize=4096 blocks=262144, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=1

log =internal log bsize=4096 blocks=2560, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

拍摄的快照是当前数据的变化量

[root@www ~]# lvcreate -s -n lv1-1 -L 1G /dev/vg0/lv1 #保留当前数据的状态

Logical volume "lv1-1" created.

-s 拍摄快照

-n指定快照的名称

-L 指定大小 -l 指定多少pe

/dev/vg0/lv1 拍个哪个逻辑卷的快照

[root@www ~]# cd /dev/mapper/

[root@www mapper]# ls

centos-root control vg0-lv1--1 vg0-lv1-real

centos-swap vg0-lv1 vg0-lv1--1-cow vg-lv

[root@www mapper]# ls /dev/vg0

lv1 lv1-1

恢复快照 一定记得卸载

[root@www mapper]# lvconvert --merge /dev/vg/lv1-1 #恢复快照

Failed to find logical volume "vg/lv1-1"

[root@www mapper]# lvconvert --merge /dev/vg0/lv1-1

Merging of volume vg0/lv1-1 started.

vg0/lv1: Merged: 100.00%

[root@www mapper]# ls /dev/vg0 #这里的快照只能使用一次

lv1

磁盘配额:

限制:

1.对用户所占空间 针对用户 block

2.还可以限制用户创建文件的个数 inode

isoft ihard 软限制 硬限制

bsoft bhard

先对个数进行限制

[root@www ~]# rpm -qa | grep quota

quota-nls-4.01-17.el7.noarch

quota-4.01-17.el7.x86_64

配额功能的开启要通过挂载的方式

手动

[root@www ~]# mkdir /media/lv1

[root@www ~]# mount -o usrquota,grpquota /dev/vg0/lv1 /media/lv1

[root@www ~]# mount

自动

[root@www ~]# vim /etc/fstab

/dev/vg0/lv1 /media/lv1 xfs defaults,usrquota,grpquota 0 0

[root@www ~]# mount -a

激活磁盘的功能相对于对磁盘进行配置 -o 就是在defaults后面加配置

创建用户 有的话可以不用创建

[root@www ~]# useradd test2

[root@www ~]# xfs_quota -x -c 'limit -u isoft=3 ihard=5 test2' /dev/vg0/lv1

[root@www ~]# xfs_quota -x -c 'limit -u isoft=3 ihard=5 test2' /media/lv1

xfs_quota 配额

-x 进入到专家模式

-c 执行后面的命令

'limit 限制

-u 用户

isoft=3 ihard=5 限制创建文件个数

test2 用户名

' /dev/vg0/lv1 / 目录 对那个磁盘限额

验证:

[root@www ~]# chmod 777 /media/lv1

[root@www ~]# su test2

[test2@www root]$ cd /media/lv1

[test2@www lv1]$ touch {1..6}

touch: 无法创建"6": 超出磁盘限额

[test2@www lv1]$ ls

1 2 3 4 5

对于空间的限额:

root@www ~]# rpm -qa | grep quota

quota-nls-4.01-17.el7.noarch

quota-4.01-17.el7.x86_64

配额功能的开启要通过挂载的方式

手动

[root@www ~]# mkdir /media/lv1

[root@www ~]# mount -o usrquota,grpquota /dev/vg0/lv1 /media/lv1

[root@www ~]# mount

自动

[root@www ~]# vim /etc/fstab

/dev/vg0/lv1 /media/lv1 xfs defaults,usrquota,grpquota 0 0

[root@www ~]# mount -a

激活磁盘的功能相对于对磁盘进行配置 -o 就是在defaults后面加配置

创建用户 有的话可以不用创建

[root@www ~]# useradd test2

[root@www ~]# xfs_quota -x -c 'limit -u bsoft=3M bhard=5M test2' /media/lv1

[root@www ~]# xfs_quota -x -c 'limit -u bsoft=3M bhard=5M test2' /dev/vg0/lv1

bsoft=3M bhard=5M 对空间的应限制和软限制

验证

[root@www ~]# cd /media/lv1

[root@www lv1]# rm -rf *

[root@www lv1]# su test2

[test2@www lv1]$ cd /media/lv1

[test2@www lv1]$ dd if=/dev/zero of=data bs=1M count=1

记录了1+0 的读入

记录了1+0 的写出

1048576字节(1.0 MB)已复制,0.00121171 秒,865 MB/秒

dd 不间断的复制

if=/dev/zero 来自于不断创建空字符 /dev/null 黑洞

of=data 写入文件的名称 写入本目录下

bs=1M 一次写入1M的内容

count=1 写一次

[test2@www lv1]$ ls -lh data

-rw-rw-r--. 1 test2 test2 1.0M 2月 26 14:46 data

[test2@www lv1]$ dd if=/dev/zero of=data bs=1M count=6

dd: 写入"data" 出错: 超出磁盘限额

记录了6+0 的读入

记录了5+0 的写出

5242880字节(5.2 MB)已复制,0.100362 秒,52.2 MB/秒

[test2@www lv1]$ ls -lh data

-rw-rw-r--. 1 test2 test2 5.0M 2月 26 14:46 data

磁盘:

1.普通分区

fdisk 分区 4个 扩展分区 逻辑分区

fdisk /dev/sdb

n 添加 p 打印 t修改类型 d删除 q退出 w保存并退出 m查看帮助

格式化

挂载

2.给交换分区中添加空间

分区 /dev/sdb1

mkswap /dev/sdb1

swapon /dev/sdb1 swapoff

swapon -s

挂载 自动 挂载点和类型都是swap

3.逻辑卷

制作逻辑卷 pvcreate vgcreate lvcreate

逻辑卷的增容和缩容

(1) 在没有的时候进行增加减少

lvextend lvreduce

(2) 在使用的时候进行增加减少

lvextend lvreduce

再次格式化 xfs_grows (xfs) resize2f(ext4)

逻辑卷快照

快照照的是当前拍摄快照这一段时间内数据的改变 而不是整个的大小 写时复制(在正在写入的时候进行复制)

4.磁盘配额

quota

分区格式化成xfs

1.对创建个数的配额 2.对空间进行配额

基础命令 目录

文件

用户

权限

安装 3方式

raid 磁盘冗余阵列

1.增加磁盘的容量

2.提高硬盘的读写

3.保证数据的安全

分为两种

硬raid

买磁盘阵列卡 直接往里面插入硬盘 raid (/dev/md1) (lvm)空间可以随意的调整

软raid

自己去配置的raid

raid的类型:

raid0 raid1 raid01 raid10 raid5 raid50

raid0:最少需要两块硬盘

相当于把数据分开存储 单纯的提高了当前读写的效率(工作的速度)

缺点:不太安全 当一块硬盘坏掉 数据会直接丢失

raid1:最少需要两块硬盘

相当于把数据进行备份 安全性比较高 容错机制 可以坏掉一块硬盘 不影响数据

缺点:读写性能不会增加

工作机制:实际上还是一块硬盘在进行工作,另一块去复制数据,当其中一块硬盘坏掉之后,另一块硬盘才能工作

raid5:最少需要三块硬盘

提高了读写的效率 保证数据的安全 有容错机制 当一块硬盘坏掉以后,不影响整个数据 但是不能同时坏掉两块硬盘

因为raid0和raid1各有优点 所以把他们结合

raid01 最少需要4块硬盘

提高了读写效率 保证数据的安全 同时坏掉两块硬盘 不影响数据

同组的数据可以都坏掉 但是不同组的同数据硬盘不能都坏掉

raid10 最少需要4块硬盘

提高了读写效率 保证数据的安全 同时坏掉两块硬盘 不影响数据

同组的硬盘不能都坏掉 不同组的硬盘可以都坏掉

raid50 最少需要6块硬盘

提高了读写效率 保证数据的安全 同时坏掉两块硬盘 不影响数据

同组的硬盘不能都坏掉 不同组的硬盘可以都坏掉

raid5

sdb(2个区) sdc(2个区) sdd(2个区) sde(1个区)

t fd

命令(输入 m 获取帮助):n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p):

Using default response p

分区号 (1-4,默认 1):

起始 扇区 (2048-41943039,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G

分区 1 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):t

已选择分区 1

Hex 代码(输入 L 列出所有代码):fd

已将分区“Linux”的类型更改为“Linux raid autodetect”

[root@localhost ~]# fdisk -l

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

设备 Boot Start End Blocks Id System

/dev/sdb1 2048 4196351 2097152 fd Linux raid autodetect

/dev/sdb2 4196352 8390655 2097152 fd Linux raid autodetect

磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区

设备 Boot Start End Blocks Id System

/dev/sdd1 2048 4196351 2097152 fd Linux raid autodetect

/dev/sdd2 4196352 8390655 2097152 fd Linux raid autodetect

磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区

设备 Boot Start End Blocks Id System

/dev/sde1 2048 4196351 2097152 fd Linux raid autodetect

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区

设备 Boot Start End Blocks Id System

/dev/sdc1 2048 4196351 2097152 fd Linux raid autodetect

/dev/sdc2 4196352 8390655 2097152 fd Linux raid autodetect

1.查看是否有磁盘增列的工具

[root@localhost ~]# rpm -qa | grep mdadm

mdadm-4.0-13.el7.x86_64

2.创建raid5

[root@localhost ~]# mdadm -Cv /dev/md5 -a yes -n3 -l5 /dev/sdb1 /dev/sdc1 /dev/sdd1

mdadm: layout defaults to left-symmetric

mdadm: layout defaults to left-symmetric

mdadm: chunk size defaults to 512K

mdadm: size set to 2094080K

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md5 started.

#如果遇到 continue? 请输入y

-C 创建

-v 显示详情

/dev/md5 给当前的raid起的名称 必须卸载dev下 名字必须md开头

-a yes 后端创建的设备让它能够自动创建

-n 使用了几块硬盘或分区

-l 等级 raid5 5 raid0 0 raid1 1

dev/sdb1 /dev/sdc1 /dev/sdd1 使用那几块硬盘去做的当前raid

3.查看是否创建成功

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md5 : active raid5 sdd1[3] sdc1[1] sdb1[0]

4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

如何删除raid #这里的磁盘阵列 相当于把硬盘组合在一起使用 数据还是存放在硬盘当中 当磁盘阵列停止(删除) 数据是不会丢失的。

硬盘若损坏 数据才会丢失

[root@localhost ~]# mdadm -S /dev/md5 #这里的删除 一定要先卸载

mdadm: stopped /dev/md5

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

unused devices: <none>

4.格式化

[root@localhost ~]# mkfs -t xfs /dev/md5

meta-data=/dev/md5 isize=512 agcount=8, agsize=130944 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=0, sparse=0

data = bsize=4096 blocks=1047040, imaxpct=25

= sunit=128 swidth=256 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=1

log =internal log bsize=4096 blocks=2560, version=2

= sectsz=512 sunit=8 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

5.挂载

[root@localhost ~]# mkdir /media/md5

[root@localhost ~]# mount /dev/md5 /media/md5/

raid0+1

先做出两块raid0 把两块raid0合成raid1

创建出两块raid0 名字 /dev/md0 /dev/md1

[root@localhost ~]# mdadm -Cv /dev/md0 -a yes -n2 -l0 /dev/sdb2 /dev/sdc2

[root@localhost ~]# mdadm -Cv /dev/md1 -a yes -n2 -l0 /dev/sdd2 /dev/sde1

再把两块raid0合成raid1

[root@localhost ~]# mdadm -Cv /dev/md2 -a yes -n2 -l1 /dev/md0 /dev/md1

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4] [raid0] [raid1]

md2 : active raid1 md1[1] md0[0]

4185088 blocks super 1.2 [2/2] [UU]

md1 : active raid0 sde1[1] sdd2[0]

4188160 blocks super 1.2 512k chunks

md0 : active raid0 sdc2[1] sdb2[0]

4188160 blocks super 1.2 512k chunks

md5 : active raid5 sdd1[3] sdc1[1] sdb1[0]

4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

#格式化 挂载

[root@localhost ~]# mkfs -t xfs /dev/md2

meta-data=/dev/md2 isize=512 agcount=8, agsize=130688 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=0, sparse=0

data = bsize=4096 blocks=1045504, imaxpct=25

= sunit=128 swidth=256 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=1

log =internal log bsize=4096 blocks=2560, version=2

= sectsz=512 sunit=8 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

[root@localhost ~]# mkdir /media/md2

[root@localhost ~]# vim /etc/fstab

/dev/md2 /media/md2 xfs defaults 0 0

[root@localhost ~]# mount -a

引导过程:

开启的过程 :

加电自检---MBR引导(引导程序,分区表)--grub菜单(boot)(开启linux的程序)--加载内核--init进程(init3)

init 进程

由 Linux 内核加载运行 /sbin/init 程序

是系统中第一个进程

PID(进程标记)号永远为1

system的单元类型

Service .service 描述一个系统服务

Device .device 描述一个内核识别的设备文件

Mount .mount 描述一个文件系统的挂载点

运行级别 Systemd的target 说明

0 target 关机状态,使用该级别时将会关闭主机

1 rescue.target 单用户模式,不需要密码验证即可登录系统,多用于系统维护

2 multi-user.target 用户定义/域特定运行级别。默认等同于3

3 multi-user.target 字符界面的完整多用户模式,大多数服务器主机运行在此级别

4 multi-user.target 用户定义/域特定运行级别。默认等同于3

5 graphical.target 图形界面的多用户模式,提供了图形桌面操作环境

6 reboot.target 重新启动,使用该级别时将会重启主机

查看当前的运行级别

[root@localhost ~]# runlevel

N 5

N 上一次的运行级别

5 当前的运行级别

切换运行级别

[root@localhost ~]# init 3

[root@localhost ~]# runlevel

3 5

安装程序

[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# mkdir data

[root@localhost yum.repos.d]# mv C* data/

[root@localhost yum.repos.d]# vim aa.repo

[root@localhost yum.repos.d]# cat aa.repo

[aa]

name=aa

baseurl=file:///mnt/mount

enabled=1

gpgcheck=0

[root@localhost yum.repos.d]# mkdir /mnt/mount

[root@localhost yum.repos.d]# mount /dev/sr0 /mnt/mount/

mount: /dev/sr0 写保护,将以只读方式挂载

[root@localhost yum.repos.d]# yum -y install httpd

启动程序

[root@localhost yum.repos.d]# systemctl start httpd

[root@localhost yum.repos.d]# systemctl status httpd #查看当前的运行状态

● httpd.service - The Apache HTTP Server

Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)

Active: active (running) since 三 2020-02-26 18:16:01 CST; 35s ago

Docs: man:httpd(8)

关闭程序

[root@localhost yum.repos.d]# systemctl stop httpd

[root@localhost yum.repos.d]# systemctl status httpd

● httpd.service - The Apache HTTP Server

Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)

Active: inactive (dead)

重启:

[root@localhost yum.repos.d]# systemctl restart httpd

[root@localhost yum.repos.d]# systemctl status httpd

● httpd.service - The Apache HTTP Server

Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)

Active: active (running) since 三 2020-02-26 18:19:25 CST; 6s ago

[root@localhost yum.repos.d]# systemctl reload httpd #重新加载

#在可以使用重新加载的情况下,就不用重启,因为重启会关掉服务,会让客户端有一段时间不能访问,从而造成用户的流失。

加入到开机自启中

[root@localhost yum.repos.d]# systemctl enable httpd

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

从开启自启中移除

[root@localhost yum.repos.d]# systemctl disable httpd

Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.

查看是否在开机自启中

[root@localhost yum.repos.d]# systemctl is-enabled httpd

disabled #不在开机自启中

#对于一些不必要的服务 就不用在加入到开机自启当中,因为服务过多的加入到开机自启当中,会造成开机的速度非常的慢

系统服务的启动和控制

[root@localhost yum.repos.d]# cd /etc/rc.d/init.d/

[root@localhost init.d]# ls

functions netconsole network README

[root@localhost init.d]# ntsysv #可以查看系统服务是否开启自启

tab 空格(添加/减去) 上下键

如何让把一个服务加入到系统服务中

[root@localhost ~]# rpm -ql httpd

[root@localhost ~]# cp /usr/sbin/apachectl /etc/rc.d/init.d/httpd #把启动脚本添加到系统命令的脚本存放的目录下

[root@localhost ~]# chkconfig --add httpd #把服务添加到系统服务当中

服务 httpd 不支持 chkconfig

[root@localhost ~]# vim /etc/rc.d/init.d/httpd

# chkconfig:2345 98 42 #让它支持chkconfig的命令 2345init 开启的优先级 关闭的优先级

[root@localhost ~]# chkconfig --add httpd

[root@localhost init.d]# ntsysv #可以查看httpd服务是否在系统命令中

进程 计划任务

程序 :微信

进程 :运行微信 在整个系统当中 pid(进程号)

父进程:整个服务父进程

子进程:隶属于父进程下面开启的线程

父进程能够管理子进程 父进程结束 子进程也会结束

线程 :一个进程一个线程 (一个员工干活)

一个进程多个线程 (多个员工干活)

查看进程的信息

ps

查看静态的进程统计信息

[root@localhost ~]# ps aux

a 显示当前终端下所有的进程

u 使用用户为主的形式显示

x 详细列出所有的信息

[root@localhost ~]# ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.4 202024 4624 ? Ss 16:45 0:07 /usr/lib/systemd/sys

-e 显示系统中所有的进程

-l 以长格式的形式显示

-f 以完整的形式显示详情信息

[root@localhost ~]# ps -elf

F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD

4 S root 1 0 0 80 0 - 50506 ep_pol 16:45 ? 00:00:07 /usr/lib/

1 S root 2 0 0 80 0 - 0 kthrea 16:45 ? 00:00:00 [kthreadd

不加- 表示当前正在root用户运行的 F 4 超级用户

[root@localhost ~]# ps elf

F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND

4 0 5815 5802 20 0 117012 2824 do_wai Ss pts/0 0:00 bash USER=root

4 0 8478 5815 20 0 153196 1760 - R+ pts/0 0:00 \_ ps elf XDG_

4 0 4507 4492 20 0 370912 39620 ep_pol Ssl+ tty1 0:57 /usr/bin/X :0 -

top命令

查看动态的进程排名信息

[root@localhost ~]# top

cpu 占用cpu的空间%

mem 占用内存的空间%

swap 占用交换空间的空间%

空格 刷新

P 按照占cpu的百分比进行排序

M 按照占内存的百分比进行排序

T 按照运行的时间进行排序

h 获取帮助信息

q 退出

pgrep命令

根据特定条件查询进程 PID 信息

-l 显示进程名

[root@localhost ~]# pgrep "log"

438

696

812

817

822

1146

3415

3729

[root@localhost ~]# pgrep -l "log"

438 xfs-log/dm-0

696 xfs-log/sda1

812 abrt-watch-log

817 abrt-watch-log

822 systemd-logind

1146 rsyslogd

3415 xfs-log/md5

3729 xfs-log/md2

-U:指定特定用户

-t:指定终端

[root@localhost ~]# pgrep -l "log" -U root

438 xfs-log/dm-0

696 xfs-log/sda1

812 abrt-watch-log

817 abrt-watch-log

822 systemd-logind

1146 rsyslogd

3415 xfs-log/md5

3729 xfs-log/md2

pstree命令

以树形结构列出进程信息

-a:显示完整信息

-u:列出对应用户名

-p:列出对应PID号

[root@localhost ~]# pstree

systemd─┬─ModemManager───2*[{ModemManager}]

├─NetworkManager───2*[{NetworkManager}]

├─VGAuthService

[root@localhost ~]# pstree -aup

systemd,1 --switched-root --system --deserialize 22

├─ModemManager,778

│ ├─{ModemManager},788

│ └─{ModemManager},791

├─NetworkManager,881 --no-daemon

tree 树形查看

[root@localhost ~]# tree

bash: /usr/bin/tree: 没有那个文件或目录

[root@localhost ~]# yum provides tree

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

tree-1.6.0-10.el7.x86_64 : File system tree viewer

[root@localhost ~]# yum -y install tree

[root@localhost ~]# tree /home

进程的前后台调度

& 在后台运行

[root@localhost ~]# ls -R /home &

[1] 8878

Ctrl+Z 组合键

将当前进程挂起,即调入后台并停止执行

[1]+ 已停止 top

jobs 命令

查看处于后台的任务列表

[root@localhost ~]# jobs

[1]+ 已停止 top

fg 命令

将后台进程恢复到前台运行,可指定任务序号

[root@localhost ~]# fg 1

停止程序

systemctl stop httpd

终止进程

ctrl+c

kill、killall 命令

kill用于终止指定PID号的进程

-9 选项用于强制终止

[root@localhost ~]# systemctl start httpd

[root@localhost ~]# pgrep -l httpd

6379 httpd

6380 httpd

6381 httpd

6382 httpd

6383 httpd

6385 httpd

[root@localhost ~]# kill 6379

[root@localhost ~]# pgrep -l httpd

[root@localhost ~]# pgrep -l httpd

9126 httpd

9127 httpd

9128 httpd

9129 httpd

9130 httpd

9131 httpd

[root@localhost ~]# kill -9 9126

[root@localhost ~]# pgrep -l httpd

9127 httpd

9128 httpd

9129 httpd

9130 httpd

9131 httpd

HUP 1 重新读取配置文件 reload

[root@localhost ~]# kill -HUP 9330

[root@localhost ~]# pgrep -l httpd

INT 2 中断(同ctrl+c)

QUIT 3 退出

TERM 15 终止

KILL 9 强制终止

CONT 18 持续

STOP 19 暂停

killall用于终止指定名称的所有进程

-9 选项用于强制终止

[root@localhost ~]# killall httpd

[root@localhost ~]# pgrep -l httpd

pkill命令

根据特定条件终止相应的进程

常用命令选项

-U:根据进程所属的用户名终止相应进程

-t:根据进程所在的终端终止相应进程

[root@localhost ~]# pkill -9 -U "zsy"

计划任务:

at命令

一次性计划任务

[root@localhost ~]# at 18:30 2020-02-28 #先写时间点

at> reboot<EOT> #回车 命令 #ctrl+d 提交

job 1 at Fri Feb 28 18:30:00 2020

[root@localhost ~]# atq #查看一次计划计划任务的列表

1 Fri Feb 28 18:30:00 2020 a root

[root@localhost ~]# atrm 1 #删除一次计划任务(删除时记得要删id)

crontab命令

进入公司的第一步 查看计划任务 数据备份的计划任务

主要设置文件

全局配置文件,位于文件:/etc/crontab

系统默认的设置,位于目录:/etc/cron.*/

用户定义的设置,位于文件:/var/spool/cron/用户名

分钟 取值为从0到59之间的任意整数

小时 取值为从0到23之间的任意整数

日期 取值为从1到31之间的任意整数

月份 取值为从1到12之间的任意整数

星期 取值为从0到7之间的任意整数,0或7代表星期日

命令 要执行的命令或程序脚本

时间数值的特殊表示方法

* 表示该范围内的任意时间

, 表示间隔的多个不连续时间点

- 表示一个连续的时间范围

/ 指定间隔的时间频率

0 17 * * 1-5 周一到周五每天17:00

30 8 * * 1,3,5 每周一、三、五的8点30分

0 8-18/2 * * * 8点到18点之间每2小时

0 * */3 * * 每3天

自己指定计划任务

#计划任务表当中是空的 需要自己写 每个用户有自己的一个计划任务表

[root@localhost ~]# crontab -e #设定计划任务 不写-u 默认用户为root

* * * * * touch /iiiiiiiiiii

no crontab for root - using an empty one

crontab: installing new crontab

[root@localhost ~]# crontab -l #查看计划任务

* * * * * touch /iiiiiiiiiii

[root@localhost ~]# ls / #已经执行好的计划任务

bin dev home lib media opt root sbin sys usr

boot etc iiiiiiiiiii lib64 mnt proc run srv tmp var

#删除计划任务 会删除掉所有的计划任务

[root@localhost ~]# crontab -r

[root@localhost ~]# crontab -e -u zsy

* * * * * echo 11111 >> /yyyyyyyyy

[root@localhost ~]# crontab -l -u root

no crontab for root

[root@localhost ~]# crontab -l -u zsy

* * * * * echo 11111 >> /yyyyyyyyy

[root@localhost ~]# crontab -r -u zsy

[root@localhost ~]# crontab -l -u zsy

no crontab for zsy

#查看内核版本

[root@localhost ~]# uname -r

3.10.0-862.el7.x86_64

#查看安装系统的版本

[root@localhost etc]# cat /etc/centos-release

CentOS Linux release 7.5.1804 (Core)

十进制转二进制 二进制转十进制

十进制:1-9

二进制:计算机语言 0101 逢2进1

58 二进制

ip地址

二进制语言 是由4个8位组成

10101011 10101011 10101011 00001011

为了方便起见 二进制转换为十进制

192.168.2.50

ip地址分为5类

A:0-126 10.0.0.1/8

B:128-191 172.12.12.5

C:192-255 192.168.2.40

D:

E:

127 是本地回环地址 代表的是本机

ip地址有关:

IP地址分为网络位和主机位

A:10:0:0:1 第一位网络位 后面全是主机位 255.255.255

B:172.12.0.0 前两位是网络位 后两位是主机位 255.255

C:192.168.2.0 前三位是网络位 后一位是主机位 255

子网掩码: 网络位都为1 主机位都为0

A:10.0.0.1/8 11111111 00000000 00000000 00000000 255.0.0.0

B:172.12.0.0/16 11111111 11111111 00000000 00000000 255.255.0.0

C:192.168.2.20/24 11111111 11111111 11111111 00000000 255.255.255.0

C类地址:

同网段的ip地址是可以连通的(前三位一致,就能够ping通)

192.168.2.10 192.168.2.20

192.168.3.10

192.168.2.0-192.168.2.255

网段地址:192.168.2.0 (网络位相同的第一个ip)

广播地址:192.168.2.255 (网络位相同的最后一位ip)

子网掩码:255.255.255.0 (主机位最多255)

每个公司 拿着一个网段 可以给255主机分ip

公司使用255个主机地址 使用不了

对于资源比较浪费

为了让ip地址能够充分的使用 使用了子网划分

什么子网划分 就是让同网段的地址 平均分成几个区域 同区域之间的能够ping通

配置ip

主机之间能够通讯 是因为有ip

同网段之间是能够ping通的

那么如何给主机配置ip

ip是在网卡上面配置的

查看当前的网卡

[root@hky11 ~]# ifconfig

ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 #对外服务的网卡

ether 00:0c:29:b4:ce:5c txqueuelen 1000 (Ethernet) #00:0c:29:b4:ce:5c mac地址 网卡的身份证号

RX packets 1750 bytes 110882 (108.2 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 #本地回环网卡

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

loop txqueuelen 1 (Local Loopback)

virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 #桥接网卡 负责和物理机相连的

inet 192.168.122.1 netmask 255.255.255.0 broadcast #inet: ip netmask:子网掩码 广播地址

如何关闭网卡 或者开启网卡

[root@hky11 ~]# ifconfig ens32 down #停止关掉网卡

[root@hky11 ~]# ifconfig #查看活动的网卡

[root@hky11 ~]# ifconfig -a #查看所有的网卡

[root@hky11 ~]# ifconfig ens32 up #当前的网卡开启

配置ip

临时ip 永久ip 虚拟ip

学会配置临时ip

[root@localhost ~]# ifconfig ens33 192.168.2.30/24 #配置临时ip

[root@localhost ~]# ifconfig ens33

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.2.30 netmask 255.255.255.0 broadcast 192.168.2.255

ether 00:0c:29:cc:97:6d txqueuelen 1000 (Ethernet)

RX packets 605 bytes 56493 (55.1 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 11 bytes 1775 (1.7 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

两台主机的连通

要想让两台主机之间连通 首先要配置ip

第一台主机:

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# vim ifcfg-ens33

BOOTPROTO=none

DEVICE=ens33

ONBOOT=yes

IPADDR=192.168.2.10

NETMASK=255.255.255.0

GATEWAY=192.168.2.1

[root@localhost network-scripts]# systemctl restart network

[root@localhost network-scripts]# ip a

第二台主机:

[root@localhost ~]# nmcli connection delete ens33

成功删除连接 'ens33'(18adb7ef-4b2e-4c46-b86a-3b426fc4b841)。

[root@localhost ~]# nmcli connection add type ethernet ifname ens33 con-name ens33

连接“ens33”(6d563dd0-ca8e-4e9b-964c-7741aa0c1a3c) 已成功添加。

[root@localhost ~]# nmcli connection modify ens33 ipv4.addresses 192.168.2.20/24

[root@localhost ~]# nmcli connection modify ens33 ipv4.gateway 192.168.2.1

[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual

[root@localhost ~]# systemctl restart network

测试是否连通

第一台:

[root@localhost network-scripts]# ping 192.168.2.20

PING 192.168.2.20 (192.168.2.20) 56(84) bytes of data.

64 bytes from 192.168.2.20: icmp_seq=1 ttl=64 time=1.71 ms

第二台:

[root@localhost ~]# ping 192.168.2.10

PING 192.168.2.10 (192.168.2.10) 56(84) bytes of data.

64 bytes from 192.168.2.10: icmp_seq=1 ttl=64 time=0.510 ms

64 bytes from 192.168.2.10: icmp_seq=2 ttl=64 time=0.557 ms

[root@localhost network-scripts]# ping -c 2 192.168.2.20 -c 次数

PING 192.168.2.20 (192.168.2.20) 56(84) bytes of data.

64 bytes from 192.168.2.20: icmp_seq=1 ttl=64 time=0.531 ms

64 bytes from 192.168.2.20: icmp_seq=2 ttl=64 time=0.529 ms

ip地址 必须在一个网段内(子网) 才能连通

ping不同 不处于同一个子网内

192.168.4.20/27 255.255.255.224

192.168.4.90/27

第一台主机

[root@localhost network-scripts]# nmcli connection modify ens33 ipv4.addresses 192.168.4.10/27

[root@localhost network-scripts]# systemctl restart network

第二台主机

[root@localhost ~]# nmcli connection modify ens33 ipv4.addresses 192.168.4.90/27

[root@localhost ~]# systemctl restart network

[root@localhost network-scripts]# ping 192.168.4.90

PING 192.168.4.90 (192.168.4.90) 56(84) bytes of data.

如果想要ping同 要处于同一个子网内 更改第二台

[root@localhost ~]# nmcli connection modify ens33 ipv4.addresses 192.168.4.11/27

[root@localhost ~]# systemctl restart network

[root@localhost network-scripts]# ping 192.168.4.11

PING 192.168.4.11 (192.168.4.11) 56(84) bytes of data.

64 bytes from 192.168.4.11: icmp_seq=1 ttl=64 time=0.745 ms

ping不同 网络适配器不一致

192.168.2.10 nat

192.168.2.20 桥接

第一台 网络适配器 nat

[root@localhost network-scripts]# nmcli connection modify ens33 ipv4.addresses 192.168.2.10/24

[root@localhost network-scripts]# systemctl restart network

第二台 网络适配器 桥接

[root@localhost ~]# nmcli connection modify ens33 ipv4.addresses 192.168.2.20/24

[root@localhost ~]# systemctl restart network

[root@localhost network-scripts]# ping 192.168.2.20

PING 192.168.2.20 (192.168.2.20) 56(84) bytes of data.

From 192.168.2.10 icmp_seq=1 Destination Host Unreachable

ping 不处于同一个网段

192.168.2.10/24

192.168.3.10/24

第一台

[root@localhost network-scripts]# nmcli connection modify ens33 ipv4.addresses 192.168.2.10/24

[root@localhost network-scripts]# systemctl restart network

第二台

[root@localhost ~]# nmcli connection modify ens33 ipv4.addresses 192.168.3.10/24

[root@localhost ~]# systemctl restart network

[root@localhost network-scripts]# ping 192.168.3.10

PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.

配ip注意

1.网络适配器一致

2.处于同一个网段

快照 1. 本地yum

2. yum -y install gcc*

3. 配置ip (192.168.1.10/24 192.168.1.11/24) 最多不能超多255

修改主机名:

临时

[root@localhost network-scripts]# hostname www

[root@localhost network-scripts]# bash

永久修改

第一种

[root@www network-scripts]# hostnamectl set-hostname www

[root@www network-scripts]# bash

第二种 修改这个配置文件

[root@www network-scripts]# vim /etc/hostname

主机名 不要随便修改 有时候回因为修改主机名 而造成无法完成实验

查看路由表

[root@www network-scripts]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 192.168.2.1 0.0.0.0 UG 100 0 0 ens33

192.168.2.1 0.0.0.0 255.255.255.255 UH 100 0 0 ens33

192.168.4.0 0.0.0.0 255.255.255.224 U 100 0 0 ens33

192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

如何实现不同网段的ip ping同

192.168.2.10/24

192.168.3.10/24

同一个网络适配器

第一台

[root@www network-scripts]# nmcli connection modify ens33 ipv4.addresses 192.168.2.10/24

[root@www network-scripts]# nmcli connection modify ens33 ipv4.gateway 192.168.2.1

[root@www network-scripts]# nmcli connection modify ens33 ipv4.method manual

[root@www network-scripts]# systemctl restart network

第二台

[root@localhost ~]# nmcli connection modify ens33 ipv4.addresses 192.168.3.10/24

[root@localhost ~]# nmcli connection modify ens33 ipv4.gateway 192.168.3.1

[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual

[root@localhost ~]# systemctl restart network

第一台ping第二台

[root@www network-scripts]# ping 192.168.3.10

PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.

第一台和第二台都需要去做

[root@www network-scripts]# vim /etc/sysctl.conf #打开路由转发

net.ipv4.ip_forward = 1

[root@www network-scripts]# sysctl -p #让其立即生效

net.ipv4.ip_forward = 1

第一台上:

[root@www network-scripts]# route add -net 192.168.3.0/24 ens33

[root@www network-scripts]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 192.168.2.1 0.0.0.0 UG 100 0 0 ens33

192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33

192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33

192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

第二台:

[root@localhost ~]# route add -net 192.168.2.0/24 ens33

[root@localhost ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 192.168.3.1 0.0.0.0 UG 100 0 0 ens33

192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33

192.168.3.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33

192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

测试:

[root@www network-scripts]# ping 192.168.3.10

PING 192.168.3.10 (192.168.3.10) 56(84) bytes of data.

64 bytes from 192.168.3.10: icmp_seq=1 ttl=64 time=0.751 ms

[root@localhost ~]# ping 192.168.2.10

PING 192.168.2.10 (192.168.2.10) 56(84) bytes of data.

如何添加网卡 并且给网卡配置ip

第一种

点击设置 --添加 --网络适配器 --确定

[root@www ~]# ifconfig

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

[root@www ~]# cd /etc/sysconfig/network-scripts/

#因为原来是没有ens37 添加网卡的配置文件的 现在把这个配置文件复制一份 作为ens37的配置文件 注意 这里的网卡配置文件的名称和设备名要一致

[root@www network-scripts]# cp ifcfg-ens33 ifcfg-ens37

[root@www network-scripts]# vim ifcfg-ens37

BOOTPROTO=none

NAME=ens37

删除uuid

DEVICE=ens37

ONBOOT=yes

IPADDR=192.168.2.20

NETMASK=255.255.255.0

GATEWAY=192.168.2.1

[root@www network-scripts]# systemctl restart network

[root@www network-scripts]# ifconfig ens37

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.2.20 netmask 255.255.255.0 broadcast 192.168.2.255

inet6 fe80::1f63:eade:68d2:6180 prefixlen 64 scopeid 0x20<link>

ether 00:0c:29:cc:97:77 txqueuelen 1000 (Ethernet)

RX packets 72 bytes 9640 (9.4 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 67 bytes 9703 (9.4 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

第二种:

点击设置 --添加 --网络适配器 --确定

[root@localhost ~]# ifconfig

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

[root@localhost ~]# nmcli connection

NAME UUID TYPE DEVICE

ens33 6d563dd0-ca8e-4e9b-964c-7741aa0c1a3c ethernet ens33

virbr0 dead7ea1-2b6a-4c3a-85b2-7c6223510040 bridge virbr0

有线连接 2 251b630c-6846-3c23-b88e-5e1034c6dd88 ethernet ens37

有线连接 1 79282489-5242-391c-a7c6-f70b409cfce4 ethernet --

[root@localhost ~]# nmcli connection delete 251b630c-6846-3c23-b88e-5e1034c6dd88

成功删除连接 '有线连接 2'(251b630c-6846-3c23-b88e-5e1034c6dd88)。

[root@localhost ~]# nmcli connection delete 79282489-5242-391c-a7c6-f70b409cfce4

成功删除连接 '有线连接 1'(79282489-5242-391c-a7c6-f70b409cfce4)。

[root@localhost ~]# nmcli connection add type ethernet ifname ens37 con-name ens37

连接“ens37”(2e755008-f48a-446d-be17-c504eebe948f) 已成功添加。

[root@localhost ~]# nmcli connection modify ens37 ipv4.addresses 192.168.3.20/24

[root@localhost ~]# nmcli connection modify ens37 ipv4.gateway 192.168.3.1

[root@localhost ~]# nmcli connection modify ens37 ipv4.method manual

[root@localhost ~]# systemctl restart network

[root@localhost ~]# ifconfig ens37

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.3.20 netmask 255.255.255.0 broadcast 192.168.3.255

inet6 fe80::83d9:56d5:6180:e972 prefixlen 64 scopeid 0x20<link>

ether 00:0c:29:89:1a:d3 txqueuelen 1000 (Ethernet)

RX packets 70 bytes 7711 (7.5 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 103 bytes 15258 (14.9 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

虚拟机联网

桥接模式联网

把网络适配器改为桥接模式 并且复制物理机的网络连接状态

[root@www network-scripts]# nmcli connection delete ens33

成功删除连接 'ens33'(a2ee43b0-c533-423b-a451-c2f428d2d7a4)。

[root@www network-scripts]# nmcli connection add type ethernet ifname ens33 con-name ens33

连接“ens33”(942d71c1-6996-4b47-a296-8f1e5584fbdf) 已成功添加。

[root@www network-scripts]# systemctl restart network

[root@www network-scripts]# ifconfig ens37 down

[root@www network-scripts]# dhclient -r #删除自动获取的ip

[root@www network-scripts]# dhclient -d #自动获取ip

Internet Systems Consortium DHCP Client 4.2.5

[root@www network-scripts]# ping www.baidu

PING www.a.shifen (61.135.169.121) 56(84) bytes of data.

64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=128 time=3.63 ms

nat模式联网

1.更改网络适配器 更改nat

[root@www network-scripts]# dhclient -r

[root@www network-scripts]# nmcli connection modify ens33 ipv4.addresses 192.168.2.10/24

[root@www network-scripts]# nmcli connection modify ens33 ipv4.gateway 192.168.2.1

[root@www network-scripts]# nmcli connection modify ens33 ipv4.method manual

[root@www network-scripts]# systemctl restart network

[root@www network-scripts]# systemctl restart network

2.编辑---虚拟网络适配器---更改设置---nat模式--子网(网段地址,和ip同一个网段)--子网掩码--nat设置--网关和虚拟机网关一致

3.物理机的网络

wifi--网络和intnet的设置,---更改网络适配器---vnet8---属性 ---iPv4(tcp)---属性 ---使用手动配置的ip---ip(不常用的ip 不能和虚拟机里面的ip冲突 和虚拟机是一个网段的)---子网掩码--网关(和虚拟机里面一致)

[root@www network-scripts]# vim /etc/resolv.conf

nameserver 114.114.114.114

[root@www network-scripts]# ping www.baidu

PING www.a.shifen (61.135.169.121) 56(84) bytes of data.

64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=128 time=4.87 ms

学会使用xhell

安装xhell 安装在windows上

xhell 远程终端 可以直接连接虚拟机

可以在xhell上面操控虚拟机

物理机的内存不够 虚拟机的内存很小 虚拟机会卡顿

远程来连接虚拟机 不会有任何的卡顿

公司里

本身有的服务器(ip)

远程终端(xhell) 来去连接服务器 从而对服务器进行操作

新的服务器

第一步需要先安装系统

第二步配置ip

第三步使用远程登录连接服务器

1.桥接模式 想要连接xhell 首先要保证 要能连上网

网卡改为桥接模式

[root@www ~]# nmcli connection delete ens33

成功删除连接 'ens33'(942d71c1-6996-4b47-a296-8f1e5584fbdf)。

[root@www ~]# nmcli connection add type ethernet ifname ens33 con-name ens33

连接“ens33”(450f52f4-e9cf-4299-8222-de091372dff1) 已成功添加。

[root@www ~]# systemctl restart network

[root@www ~]# dhclient -d

[root@www ~]# ping www.baidu

PING www.a.shifen (61.135.169.125) 56(84) bytes of data.

64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=56 time=2.80 ms

在xhell上进行连接

C:\~]$ ssh root@192.168.1.123

nat模式连接xhell

1.更改网络适配器 更改nat

[root@www network-scripts]# dhclient -r

[root@www ~]# nmcli connection delete ens33

成功删除连接 'ens33'(942d71c1-6996-4b47-a296-8f1e5584fbdf)。

[root@www ~]# nmcli connection add type ethernet ifname ens33 con-name ens33

连接“ens33”(450f52f4-e9cf-4299-8222-de091372dff1) 已成功添加。

[root@www network-scripts]# nmcli connection modify ens33 ipv4.addresses 192.168.2.10/24

[root@www network-scripts]# nmcli connection modify ens33 ipv4.gateway 192.168.2.1

[root@www network-scripts]# nmcli connection modify ens33 ipv4.method manual

[root@www network-scripts]# systemctl restart network

[root@www network-scripts]# systemctl restart network

2.编辑---虚拟网络适配器---更改设置---nat模式--子网(网段地址,和ip同一个网段)--子网掩码--nat设置--网关和虚拟机网关一致

3.物理机的网络

wifi--网络和intnet的设置,---更改网络适配器---vnet8---属性 ---iPv4(tcp)---属性 ---使用手动配置的ip---ip(不常用的ip 不能和虚拟机里面的ip冲突 和虚拟机是一个网段的)---子网掩码--网关(和虚拟机里面一致)

[C:\~]$ ssh root@192.168.2.10

dhcp服务

作用 :给未配置ip的主机分配ip地址的

好处:1.减轻管理人员的压力

2.避免输入错误的可能

3.避免ip地址冲突

4.提高ip的地址的利用效率

流程:1.客户端发送一个广播消息 询问有那个服务可以分配ip地址

2.dhcp会返回一个响应 并且告诉客户端可分配的ip

3.客户端会选择一个ip

4.dhcp服务将会把这个ip响应给客户端

dhcp服务器分配的ip地址 是由时效的,不是永久的 是有租约时间的 服务端规定租约时间

租约是自动续约的 除非客户端不在需要这个ip 服务端会在租约时间到达50% 就会给客户端发送 租约时间即将到期的信息

模拟公司的里面的主机分配ip

dhcp服务:

需要分配ip的主机:

dhcp服务器上的操作:

dhcp服务器上是由ip的

[root@localhost ~]# nmcli connection delete ens33

成功删除连接 'ens33'(6d563dd0-ca8e-4e9b-964c-7741aa0c1a3c)。

[root@localhost ~]# nmcli connection add type ethernet ifname ens33 con-name ens33

连接“ens33”(d9ea780c-f9eb-47f3-8b8b-da7d15f7885c) 已成功添加。

[root@localhost ~]# nmcli connection modify ens33 ipv4.addresses 192.168.2.10/24

[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual

[root@localhost ~]# systemctl restart network

配置好yum:

[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# mkdir data

[root@localhost yum.repos.d]# mv C* data/

[root@localhost yum.repos.d]# vim aa.repo

[root@localhost yum.repos.d]# cat aa.repo

[aa]

name=aa

baseurl=file:///mnt/mount

enabled=1

gpgcheck=0

[root@localhost yum.repos.d]# mkdir /mnt/mount

mkdir: 无法创建目录"/mnt/mount": 只读文件系统

[root@localhost yum.repos.d]# umount /dev/sr0

[root@localhost yum.repos.d]# mkdir /mnt/mount

[root@localhost yum.repos.d]# mount /dev/sr0 /mnt/mount/

安装dhcp服务:

[root@localhost yum.repos.d]# yum -y install dhcp

[root@localhost mount]# rpm -qa | grep dhcp

[root@localhost ~]# cd /etc/dhcp/ #配置文件的路径

[root@localhost dhcp]# cat dhcpd.conf #主配置文件的名称

#

# DHCP Server Configuration file.

# see /usr/share/doc/dhcp*/dhcpd.conf.example #去查看样例文件的路径

# see dhcpd.conf(5) man page

#

[root@localhost dhcp]# mv dhcpd.conf dhcpd.bak #把提示作一个备份

[root@localhost dhcp]# cp /usr/share/doc/dhcp*/dhcpd.conf.example ./dhcpd.conf #样例文件复制作为主配置文件

当对服务进行设置时,就是改它的配置文件

[root@localhost dhcp]# vim dhcpd.conf #修改主配置文件

7 option domain-name "www.kgc"; #默认搜索域

8 option domain-name-servers 192.168.2.20; #dhcp的服务的地址

9

10 default-lease-time 21600; #默认租约时间

11 max-lease-time 43200; #最大租约时间

26 subnet 192.168.2.0 netmask 255.255.255.0 { #声明一个网段 本机ip的网段 子网掩码

27 range 192.168.2.50 192.168.2.200; #服务器的地址池

28 option subnet-mask 255.255.255.0; #分配地址的子网掩码

29 option routers 192.168.2.1; #分配地址的网关

30 }

[root@localhost dhcp]# systemctl restart dhcpd

客户端和服务端 这里两台主机必须处于同一个网络适配器

点击编辑 ----虚拟网络编辑器---添加网络--vnet3---勾掉下面的两个勾(为了不使用本地的dhcp,使用自己配置的dhcp)

客户端和服务端两边都修改成vnet3的网络适配器 设置--网络适配器

客户端操作

由客户端发起 需要ip地址

[root@localhost network-scripts]# dhclient -d -d 后台运行

DHCPOFFER from 192.168.2.20

DHCPACK from 192.168.2.20 (xid=0x53c617c1)

bound to 192.168.2.51 -- renewal in 8243 seconds.

[root@localhost network-scripts]# dhclient -r #删除获取到的ip

分配一个固定的ip地址

基于上一个实验的

服务端:

[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf

65 host kgc { #kgc 是名称 随便起

66 hardware ethernet 00:0c:29:37:44:5e; #客户端的mac地址

67 fixed-address 192.168.2.100; #分配的固定ip是什么

68 }

[root@localhost dhcp]# systemctl restart dhcpd

客户端:

[root@localhost network-scripts]# dhclient -d

DHCPOFFER from 192.168.2.20

DHCPACK from 192.168.2.20 (xid=0xa72f85a)

bound to 192.168.2.100 -- renewal in 9235 seconds.

[root@localhost network-scripts]# ifconfig ens33

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.2.100 netmask 255.255.255.0 broadcast 192.168.2.255

[root@localhost network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

#动态ip dhcp/none

static

[root@localhost dhcp]# netstat -anput | grep dhcpd

udp 0 0 0.0.0.0:67 0.0.0.0:* 88816/dhcpd

-a 显示所有

-n 以数字的形式显示

-p 显示pid

-u 查看udp连接

-t 查看tcp连接

[root@localhost dhcp]# systemctl stop dhcpd

[root@localhost dhcp]# netstat -anput | grep dhcpd

查看当前的服务有没有启动 可以查看pid

route添加网关 不是永久的 重启网络服务 网关丢失

[root@localhost dhcp]# route add default gw 192.168.2.1

[root@localhost dhcp]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 ens32

[root@localhost dhcp]# route del default gw 192.168.2.1

服务端 192.168.8.10

51 nmcli connection modify ens32 ipv4.addresses 192.168.8.10/24

52 nmcli connection modify ens32 ipv4.gateway 192.168.8.1

53 nmcli connection modify ens32 ipv4.method manual

54 systemctl restart network

55 yum -y install dhcp

56 mount /dev/sr0 /mnt/mount/

57 yum -y install dhcp

[root@one dhcp]# cd /etc/dhcp

[root@one dhcp]# vim dhcpd.conf

subnet 192.168.8.0 netmask 255.255.255.0 {

range 192.168.8.11 192.168.8.50;

option subnet-mask 255.255.255.0;

option routers 192.168.8.1;

}

[root@one dhcp]# systemctl restart dhcpd

[root@one dhcp]# netstat -anput | grep dhcpd

udp 0 0 0.0.0.0:67 0.0.0.0:* 11380/dhcpd

修改网络适配器 都是同一个

[root@one dhcp]# vim dhcpd.conf

subnet 192.168.8.0 netmask 255.255.255.0 {

range 192.168.8.11 192.168.8.50;

option subnet-mask 255.255.255.0;

option routers 192.168.8.1;

}

host client1 {

hardware ethernet 00:0c:29:65:14:50;

fixed-address 192.168.8.20;

}

host client2 {

hardware ethernet 00:0c:29:37:44:5e;

fixed-address 192.168.8.30;

}

[root@one dhcp]# systemctl restart dhcpd

[root@one dhcp]# netstat -anput | grep dhcpd

udp 0 0 0.0.0.0:67 0.0.0.0:* 11786/dhcpd

client1:

[root@localhost network-scripts]# dhclient -d

DHCPOFFER from 192.168.8.10

DHCPACK from 192.168.8.10 (xid=0x16202335)

bound to 192.168.8.20 -- renewal in 20868 seconds

client2

[root@localhost network-scripts]# dhclient -d

DHCPOFFER from 192.168.8.10

DHCPACK from 192.168.8.10 (xid=0x76397bbd)

bound to 192.168.8.30 -- renewal in 16297 seconds.

共享

nfs (network file system) 网络文件系统

属于文件系统 可以远程共享

nfs 可以将文件、目录 改成对应的文件系统

nfs 实现远程共享 rpc服务 负责传输的

rpc服务的软件:rpc-bind

nfs服务的软件:nfs-utils

主配置文件 : /etc/exports

实验:

服务端 :192.168.2.20

客户端: 192.168.2.30

服务端:

安装服务:

rpm的安装:

[root@localhost ~]# mount /dev/sr0 /mnt/mount/

[root@localhost ~]# cd /mnt/mount/Packages/

[root@localhost Packages]# rpm -ivh nfs-utils-1.3.0-0.54.el7.x86_64.rpm

警告:nfs-utils-1.3.0-0.54.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

准备中... ################################# [100%]

软件包 nfs-utils-1:1.3.0-0.54.el7.x86_64 已经安装

[root@localhost Packages]# rpm -ivh rpcbind-0.2.0-44.el7.x86_64.rpm

警告:rpcbind-0.2.0-44.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

准备中... ################################# [100%]

软件包 rpcbind-0.2.0-44.el7.x86_64 已经安装

yum的安装:

[root@localhost Packages]# yum -y install rpcbind

[root@localhost Packages]# yum -y install nfs-utils

1.共享目录只允许一台主机访问

[root@localhost Packages]# mkdir /share

[root@localhost Packages]# vim /etc/exports

/share 192.168.2.30(rw,sync,no_root_squash)

/share #共享目录

192.168.2.30 #可以查看到共享目录的主机

(rw,sync,no_root_squash) #可读可写 #将数据写入到硬盘中 #让访问的用户具有root的权限

[root@localhost Packages]# exportfs -rv #让配置文件立即生效

-r 重新共享所有的nfs

-v 显示详情

exporting 192.168.2.30:/share

-au 失效

-a 所有共享目录

-u 取消nfs共享文件系统的共享

[root@localhost Packages]# systemctl restart nfs

[root@localhost Packages]# systemctl restart rpcbind

[root@localhost Packages]# showmount -e localhost

Export list for localhost:

/share 192.168.2.30

showmount 代表列出nfs相关的配置

-e 输出清单

客户端:

[root@localhost ~]# showmount -e 192.168.2.20

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

服务端:放行防火墙

[root@localhost Packages]# firewall-cmd --add-service=nfs --permanent #让其永久生效

success

[root@localhost Packages]# firewall-cmd --add-service=rpc-bind --permanent

success

[root@localhost Packages]# firewall-cmd --add-service=mountd --permanent

success

[root@localhost Packages]# firewall-cmd --reload

success

[root@localhost Packages]# firewall-cmd --list-all

public (active)

target: default

icmp-block-inversion: no

interfaces: ens32

sources:

services: ssh dhcpv6-client nfs rpc-bind mountd

[root@localhost Packages]# netstat -anput | grep 2049

nfs的默认端口 2049 mountd默认端口20048 rpcbind默认端口111

客户端:

[root@localhost ~]# showmount -e 192.168.2.20

Export list for 192.168.2.20:

/share 192.168.2.30

[root@localhost ~]# mkdir /client

[root@localhost ~]# mount -t nfs 192.168.2.20:/share /client #进行挂载

验证:

服务端:

[root@localhost Packages]# cd /share/

[root@localhost share]# mkdir 1

客户端:

[root@localhost ~]# cd /client/

[root@localhost client]# ls

1

[root@localhost client]# touch 2

[root@localhost client]# ls

1 2

服务端

[root@localhost share]# ls

1 2

[root@localhost client]# vim /etc/fstab

192.168.2.20:/share /client nfs defaults 0 0

[root@localhost client]# mount -a

[root@localhost client]# df -hT

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/mapper/centos-root xfs 37G 4.0G 34G 11% /

devtmpfs devtmpfs 895M 0 895M 0% /dev

tmpfs tmpfs 911M 0 911M 0% /dev/shm

tmpfs tmpfs 911M 19M 893M 3% /run

tmpfs tmpfs 911M 0 911M 0% /sys/fs/cgroup

/dev/sda1 xfs 1014M 170M 845M 17% /boot

tmpfs tmpfs 183M 56K 183M 1% /run/user/0

/dev/sr0 iso9660 4.2G 4.2G 0 100% /mnt

192.168.2.20:/share nfs4 46G 5.2G 40G 12% /client

2.供一个网段的主机能够访问

服务端

[root@localhost ~]# mkdir /share1

[root@localhost ~]# vim /etc/exports

/share1 192.168.2.0/24(rw,sync,no_root_squash)

[root@localhost ~]# exportfs -rv

exporting 192.168.2.30:/share

exporting 192.168.2.0/24:/share1

[root@localhost ~]# showmount -e localhost

Export list for localhost:

/share1 192.168.2.0/24

/share 192.168.2.30

客户端

[root@localhost client]# mkdir /client1

[root@localhost client]# showmount -e 192.168.2.20

Export list for 192.168.2.20:

/share1 192.168.2.0/24

/share 192.168.2.30

[root@localhost client]# vim /etc/fstab

192.168.2.20:/share1 /client1 nfs defaults 0 0

[root@localhost client]# mount -a

[root@localhost client]# df -hT

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/mapper/centos-root xfs 37G 4.0G 34G 11% /

devtmpfs devtmpfs 895M 0 895M 0% /dev

tmpfs tmpfs 911M 0 911M 0% /dev/shm

tmpfs tmpfs 911M 19M 893M 3% /run

tmpfs tmpfs 911M 0 911M 0% /sys/fs/cgroup

/dev/sda1 xfs 1014M 170M 845M 17% /boot

tmpfs tmpfs 183M 56K 183M 1% /run/user/0

/dev/sr0 iso9660 4.2G 4.2G 0 100% /mnt

192.168.2.20:/share nfs4 46G 5.3G 40G 12% /client

192.168.2.20:/share1 nfs4 46G 5.3G 40G 12% /client1

如果出现这种情况 说明 该挂载不能成功 没有权限

[root@localhost client]# mount -t nfs 192.168.2.20:/share1 /client1

mount.nfs: Stale file handle

3.供所有主机能够访问 必须处于能ping的状态

[root@localhost ~]# mkdir /share2

[root@localhost ~]# vim /etc/exports

/share2 *(rw,sync,no_root_squash)

[root@localhost ~]# exportfs -rv

exporting 192.168.2.30:/share

exporting 192.168.3.0/24:/share1

exporting *:/share2

[root@localhost ~]# systemctl restart nfs

[root@localhost ~]# systemctl restart rpcbind

客户端:

[root@localhost client]# showmount -e 192.168.2.20

Export list for 192.168.2.20:

/share2 *

/share1 192.168.3.0/24

/share 192.168.2.30

[root@localhost client]# showmount -e 192.168.2.20

Export list for 192.168.2.20:

/share2 *

/share1 192.168.3.0/24

/share 192.168.2.30

[root@localhost client]# mkdir /client3

[root@localhost client]# mount -t nfs 192.168.2.20:/share2 /client3

[root@localhost client]# df -hT

df: "/client1": 失效文件句柄

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/mapper/centos-root xfs 37G 4.0G 34G 11% /

devtmpfs devtmpfs 895M 0 895M 0% /dev

tmpfs tmpfs 911M 0 911M 0% /dev/shm

tmpfs tmpfs 911M 19M 893M 3% /run

tmpfs tmpfs 911M 0 911M 0% /sys/fs/cgroup

/dev/sda1 xfs 1014M 170M 845M 17% /boot

tmpfs tmpfs 183M 56K 183M 1% /run/user/0

/dev/sr0 iso9660 4.2G 4.2G 0 100% /mnt

192.168.2.20:/share nfs4 46G 5.3G 40G 12% /client

192.168.2.20:/share2 nfs4 46G 5.3G 40G 12% /client3

配置阿里云的yum

下载yum仓库

第一种用阿里配置好的

wget http://mirrors.aliyun/repo/Centos-7.repo

[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# wget http://mirrors.aliyun/repo/Centos-7.repo

[root@localhost yum.repos.d]# ls

aa.repo Centos-7.repo data

[root@localhost yum.repos.d]# vim Centos-7.repo

把所有的gpgcheck更改为0

[root@localhost yum.repos.d]# mv aa.repo aa.bak

[root@localhost yum.repos.d]# yum -y install httpd

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun

* extras: mirrors.aliyun

* updates: mirrors.aliyun

base | 3.6 kB 00:00:00

extras | 2.9 kB 00:00:00

updates | 2.9 kB 00:00:00

(1/2): updates/7/x86_64/primary_db | 6.7 MB 00:00:02

(2/2): base/7/x86_64/primary_db | 6.0 MB 00:00:05

软件包 httpd-2.4.6-90.el7.centos.x86_64 已安装并且是最新版本

无须任何处理

第二种方式:

http://mirrors.aliyun/centos/$releasever/os/$basearch/ yum仓库的地址

[root@localhost yum.repos.d]# ls

aa.bak Centos-7.repo data

[root@localhost yum.repos.d]# mv Centos-7.repo Centos-7.bak

[root@localhost yum.repos.d]# ls

aa.bak Centos-7.bak data

[root@localhost yum.repos.d]# mv aa.bak aa.repo

[aa]

name=aa

baseurl=http://mirrors.aliyun/centos/$releasever/os/$basearch/

enabled=1

gpgcheck=0

[root@localhost yum.repos.d]# yum -y install httpd

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

aa | 3.6 kB 00:00:00

软件包 httpd-2.4.6-90.el7.centos.x86_64 已安装并且是最新版本

无须任何处理

默认情况下 防火墙是开启的状态

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl start firewalld

selinux 内部负责保护系统的程序

selinux

临时关闭

[root@localhost ~]# setenforce 0 宽容

[root@localhost ~]# setenforce 1

[root@localhost ~]# vim /etc/selinux/config

严格模式

宽容模式

关闭模式

SELINUX=permissive

[root@localhost ~]# getenforce

Permissive

[root@localhost ~]# ls -Z

-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

samba 文件共享服务

不需要借助其他服务

nfs 主要应用于同系统之间的

samba 应用于不同系统之间

两台虚拟机

服务端 192.168.2.30

客户端 192.168.2.40

一、匿名用户登录 没有密码没有用户 能够之间得到共享

服务端:

[root@localhost ~]# yum -y install samba

[root@localhost ~]# rpm -qa | grep samba

samba-common-4.7.1-6.el7.noarch

samba-common-libs-4.7.1-6.el7.x86_64

samba-common-tools-4.7.1-6.el7.x86_64

samba-client-libs-4.7.1-6.el7.x86_64

samba-4.7.1-6.el7.x86_64

samba-client-4.7.1-6.el7.x86_64

samba-libs-4.7.1-6.el7.x86_64

[root@localhost ~]# vim /etc/samba/smb.conf

[global] #全局配置

7 workgroup = SAMBA #工作组

8 security = user #级别

9 map to guest = Bad User #支持匿名用户登录

38 [pub] #目录模块名

39 comment = pub #详细说明

40 path = /samba #真实的目录

41 public = yes #是否允许匿名用户登录

42 writable = yes # 让用户具有可写的权限

43 browseable = yes #让用户具有可读(可浏览)的权限

[root@localhost ~]# mkdir /samba

[root@localhost ~]# systemctl start smb

[root@localhost ~]# smbclient -L localhost -L list 列出所有的samba共享目录

Enter SAMBA\root's password:

Sharename Type Comment

--------- ---- -------

print$ Disk Printer Drivers

pub Disk pub

IPC$ IPC IPC Service (Samba 4.7.1)

Reconnecting with SMB1 for workgroup listing.

Server Comment

--------- -------

Workgroup Master

--------- -------

客户端:

[root@localhost ~]# smbclient -L 192.168.2.30

Connection to 192.168.2.20 failed (Error NT_STATUS_IO_TIMEOUT)

这个问题时防火墙没有放行

服务端:

[root@localhost ~]# firewall-cmd --add-service=samba --permanent

success

[root@localhost ~]# firewall-cmd --reload

success

[root@localhost ~]# netstat -anput | grep smb

tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 95787/smbd

tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 95787/smbd

客户端

[root@localhost ~]# smbclient -L 192.168.2.30

Enter SAMBA\root's password:

Sharename Type Comment

--------- ---- -------

print$ Disk Printer Drivers

pub Disk pub

IPC$ IPC IPC Service (Samba 4.7.1)

Reconnecting with SMB1 for workgroup listing.

Server Comment

--------- -------

Workgroup Master

--------- -------

临时挂载

[root@localhost ~]# mount -t cifs //192.168.2.30/pub /client -o guest

-t 使用cifs的文件系统类型

//192.168.2.30/pub 要写模块名pub

-o guest 使用匿名用户进行挂载

自动挂载:

[root@localhost client]# vim /etc/fstab

//192.168.2.30/pub /client cifs defaults,guest 0 0

[root@localhost client]# mount -a #将/etc/fstab 全部重新挂载一次

验证:

服务端:

[root@localhost samba]# setenforce 0 #关闭所有的沙盒

[root@localhost samba]# setenforce 1

[root@localhost samba]# chcon -R -t samba_share_t /samba/ #只关闭一个服务的沙盒

[root@localhost samba]# ls -Z

-rw-r--r--. root root unconfined_u:object_r:samba_share_t:s0 1

只关闭对应服务的沙盒 让黑客只访问到有限的资源 访问不到整个系统

unconfined_u 所有用户的身份标识

:object_r 角色 文件资源

:samba_share_t 类型

[root@localhost ~]# cd /samba/

[root@localhost samba]# touch 1

[root@localhost samba]# ls

1

客户端:

[root@localhost ~]# cd /client/

[root@localhost client]# ls

1

二:本地用户登录

服务端:

[root@localhost ~]# vim /etc/samba/smb.conf

9 #map to guest = Bad User

44 [public]

45 comment = public

46 path = /samba-share #实际的路径

47 public = no #不在是公共的

48 writable = yes

49 browseable = yes

[root@localhost ~]# systemctl restart smb

[root@localhost ~]# mkdir /samba-share

[root@localhost ~]# useradd test

[root@localhost ~]# smbpasswd -a test

New SMB password:

Retype new SMB password:

Added user test.

smbpasswd -x test

[root@localhost ~]# smbclient -L localhost -U test

Enter SAMBA\test's password:

Sharename Type Comment

--------- ---- -------

print$ Disk Printer Drivers

pub Disk pub

public Disk public

IPC$ IPC IPC Service (Samba 4.7.1)

test Disk Home Directories

Reconnecting with SMB1 for workgroup listing.

Server Comment

--------- -------

Workgroup Master

--------- -------

客户端:

[root@localhost ~]# mkdir /client-share

[root@localhost ~]# smbclient -L 192.168.2.30 -U test

Enter SAMBA\test's password:

[root@localhost ~]# mount -t cifs -o user=test,password=123 //192.168.2.30/public /client-share/

//192.168.2.30/public /client-share cifs defaults,user=test,password=123 0 0

[root@localhost ~]# mount -a

[root@localhost ~]# df -hT

文件系统 类型 容量 已用 可用 已用% 挂载点

//192.168.2.30/pub cifs 37G 5.1G 32G 14% /client

//192.168.2.30/public cifs 37G 5.1G 32G 14% /client-share

验证:

服务端:

[root@localhost ~]# cd /samba-share/

[root@localhost samba-share]# ls

[root@localhost samba-share]# chcon -R -t samba_share_t /samba-share/

[root@localhost samba-share]# touch 1

[root@localhost samba-share]# ls

1

客户端:

[root@localhost ~]# cd /client-share/

[root@localhost client-share]# ls

1

ssh远程登录

[root@localhost ~]# ssh root@192.168.2.40

root@192.168.2.40's password:

Last login: Wed Mar 4 16:48:01 2020 from 192.168.2.30

[root@localhost ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet 192.168.2.200/32 brd 192.168.2.200 scope global lo:0

[root@localhost ~]# exit

登出

Connection to 192.168.2.40 closed.

[root@localhost ~]# netstat -anput | grep ssh

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1175/sshd

tcp6 0 0 :::22 :::* LISTEN 1175/sshd

ssh的端口22号

实现免密登录

可以不用输入密码 然后登录到2.40的主机上

做免密登录使用的软件

[root@localhost ~]# rpm -qa | grep openssh

openssh-server-7.4p1-16.el7.x86_64

openssh-7.4p1-16.el7.x86_64

openssh-clients-7.4p1-16.el7.x86_64

原理

要实现免密登录 首先需要在主控端上生成一对密钥 然后主控端把公钥发送给被控端,当主控端想要连接的时候,被控端将会随机生成一串字符给主控端,主控端会用自己的私钥进行加密,传递给被控端,被控端拿着解密字符用公钥解密,如果和自己生成的字符一致,则就实现免密登录

[root@localhost ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:g+cYOziIhox2fqosozuiIOikPuZ33Agjnp6i7hzkaPw root@localhost.localdomain

The key's randomart image is:

+---[RSA 2048]----+

| |

| |

| |

| . |

| . o S |

|Xo + . * . |

|XX+.* * . |

|^=*. * o |

|^/+E+ |

+----[SHA256]-----+

[root@localhost ~]# cd /root/.ssh/

[root@localhost .ssh]# ls

id_rsa id_rsa.pub

[root@localhost .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.2.40

yes 123

被控端

[root@localhost ~]# ls /root/.ssh/

authorized_keys

[root@localhost .ssh]# ssh root@192.168.2.40

sign_and_send_pubkey: signing failed: agent refused operation

  1. root@192.168.2.40's password: #如果遇到问题 使用这个

[root@localhost .ssh]# ssh-add

Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

免密登录成功

[root@localhost .ssh]# ssh root@192.168.2.40

Last login: Wed Mar 4 16:48:59 2020 from 192.168.2.30

[root@localhost ~]# exit

登出

Connection to 192.168.2.40 closed.

远程传输:

[root@localhost ~]# echo "11111" > hahaha

本文标签: 基础liunx