[root@localhost /]# umask
0022
[root@localhost /]# umask
0022
[root@localhost /]# mkdir 22
[root@localhost /]# ls -ld 22
drwxr-xr-x. 2 root root 6 7月 26 09:08 22
[root@localhost /]# touch 33
[root@localhost /]# ls -l 33
-rw-r--r--. 1 root root 0 7月 26 09:09 33
[root@localhost /]# umask 0255
[root@localhost /]# mkdir 44
[root@localhost /]# ls -ld 44
dr-x-w--w-. 2 root root 6 7月 26 09:10 44
[root@localhost /]# touch 55
[root@localhost /]# ls -l 55
-r---w--w-. 1 root root 0 7月 26 09:10 55
[root@localhost /]# umask 0022
rwxrwxrwx
777
022 w w
755
rw-rw-rw-
666
255 w rx rx
r---w--w-
系统:
window 下载安装包---安装
内核+应用程序
linux上也可以安装应用程序
linux安装包 .rpm--二进制文件 ---直接安装---命令安装
.tar.gz tar.bz2(源码包)--- 二进制文件---安装
rpm包
管理rpm包的工具 rpm
1.查询 系统中安装的应用程序
查询以安装的程序信息
rpm -q[子选项] [软件名]
-qa 查看所有的安装程序 1300程序
[root@localhost ~]# rpm -qa
[root@localhost ~]# rpm -qa | wc -l
1422
-qi 查看程序的信息
[root@localhost ~]# rpm -qi postfix
Name : postfix
Epoch : 2
Version : 2.10.1
Release : 6.el7
Architecture: x86_64
-ql 列出程序的所有内容
[root@localhost ~]# rpm -ql postfix
-qc 查看配置
-qd 查看文档类的文件
[root@localhost ~]# rpm -qc postfix
/etc/pam.d/smtp.postfix
[root@localhost ~]# rpm -qd postfix
-qf 查看文件属于哪一个程序
[root@localhost ~]# rpm -qf /etc/sasl2/smtpd.conf
postfix-2.10.1-6.el7.x86_64
-q 也可以单独使用 可以查看程序是否安装
[root@localhost ~]# rpm -q postfix 程序名
postfix-2.10.1-6.el7.x86_64
[root@localhost ~]# rpm -qa | grep -i "^a"
查看未安装包的信息
rpm - qp[子选项] RPM包文件
挂载:
光盘 /dev/sr0 /dev/cdrom
[root@localhost ~]# mkdir /mnt/mount
[root@localhost ~]# mount /dev/sr0 /mnt/mount/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# cd /mnt/mount/
[root@localhost mount]# ls
CentOS_BuildTag images repodata
EFI isolinux RPM-GPG-KEY-CentOS-7
EULA LiveOS RPM-GPG-KEY-CentOS-Testing-7
GPL Packages TRANS.TBL
[root@localhost mount]# mount
/dev/sr0 on /mnt/mount type iso9660 (ro,relatime,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500)
卸载 不能在光盘目录中 否则会提示被占用
[root@localhost mount]# cd
[root@localhost ~]# umount /dev/sr0
[root@localhost ~]# ls /mnt/mount/
一个光盘可以挂载在多个地方
但是一个目录不能挂载多个光盘
[root@localhost ~]# cd /mnt/mount/
[root@localhost mount]# cd Packages/
[root@localhost Packages]# ls | wc -l
3972
-i信息
[root@localhost Packages]# rpm -qpi zziplib-0.13.62-5.el7.x86_64.rpm
-c 配置文件
[root@localhost Packages]# rpm -qpc ypserv-2.31-10.el7.x86_64.rpm
-d文档文件
[root@localhost Packages]# rpm -qpd ypserv-2.31-10.el7.x86_64.rpm
-l 所有的内容
[root@localhost Packages]# rpm -qpl ypserv-2.31-10.el7.x86_64.rpm
2.安装
安装或升级RPM软件
常用选项
-i、 -U、 -F --force、--nodeps、
安装: 安装 要有安装包
挂载点下 /mnt/mount/Package
rpm
[root@localhost Packages]# pwd
/mnt/mount/Packages
-i安装
[root@localhost Packages]# rpm -ivh postfix-2.10.1-6.el7.x86_64.rpm
警告:postfix-2.10.1-6.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:postfix-2:2.10.1-6.el7 ################################# [100%]
[root@localhost Packages]# rpm -q postfix
postfix-2.10.1-6.el7.x86_64
-U 升级程序 当前程序未安装 会把这个程序直接安装
[root@localhost Packages]# rpm -evh postfix
[root@localhost Packages]# rpm -Uvh postfix-2.10.1-6.el7.x86_64.rpm
-F 升级程序 当前程序未安装 放弃升级
[root@localhost Packages]# rpm -evh postfix
[root@localhost Packages]# rpm -Fvh postfix-2.10.1-6.el7.x86_64.rpm
--force 强制安装 安装的程序一般都不能使用
--nodeps 忽略依赖关系
[root@localhost Packages]# rpm -ivh postfix-2.10.1-6.el7.x86_64.rpm --force
[root@localhost Packages]# rpm -ivh postfix-2.10.1-6.el7.x86_64.rpm --nodeps
3.卸载 程序名
evh
e卸载
v显示详情
h带#号
[root@localhost Packages]# rpm -evh postfix
准备中... ################################# [100%]
正在清理/删除...
1:postfix-2:2.10.1-6.el7 ################################# [100%]
4.维护rpm包
重新建立仓库
[root@localhost ~]# rpm --rebuilddb
[root@localhost ~]# rpm --initdb
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum安装 yum应用程序
[root@localhost ~]# rpm -qa | grep yum
最小化安装 yum程序 使用rpm把yum程序安装好
yum-3.4.3-158.el7.centos.noarch
yum 类似于 手机上的应用商店
yum安装程序 抓包的
yum分为两种
一种是本地yum 连接的是挂载点
还有一种网络yum 连接是网络上的仓库
也就是 yum可以安装本地的包
也可以直接去网上下载包进行安装 (虚拟的联网)
yum 应用程序
/etc/ 如果想要更改应用程序的配置 需要修改其配置文件
[root@localhost ~]# cd /etc/yum.repos.d/
yum 自带网络yum的
本地yum和网络yum是冲突的
网络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]# mount /dev/sr0 /mnt/mount/
[root@localhost yum.repos.d]# vim aa.repo
[aa]
name=this is local repo
baseurl=file:///mnt/mount
enabled=1
gpgcheck=0
[root@localhost yum.repos.d]# yum list
安装vsftpd应用程序
[root@localhost yum.repos.d]# yum -y install vsftpd
[root@localhost yum.repos.d]# rpm -q vsftpd
vsftpd-3.0.2-22.el7.x86_64
卸载
[root@localhost yum.repos.d]# yum -y remove vsftpd
查看命令属于属于哪一个安装包
[root@localhost yum.repos.d]# yum provides finger
finger-0.17-52.el7.x86_64 : The finger client
[root@localhost yum.repos.d]# yum -y install finger
[root@localhost yum.repos.d]# finger
制作缓存 抓包 网络下
相当于把包临时保留在yum程序当中(加速)
[root@localhost yum.repos.d]# yum makecache
清空缓存
[root@localhost yum.repos.d]# yum clean all
自己配置一个本地yum源 名称为自己的名字
挂载点为/自己的名字
制作缓存
安装samba服务
源码安装
虚拟机和物理机是互联的 所以文件之间可以直接复制
把安装包复制到虚拟机的主文件夹中
主文件的位置 如果使用root用户登录 在/root中
如果是普通用户登录 则在/home/普通用户
这里我复制的/root
源码安装 tar.gz
1.解压
2.配置 指定其安装的路径。。。。
3.编译 把其转换为二进制文件 让电脑能识别
4.安装
源码安装httpd
安装编译的程序 gcc gcc-c++ yum安装
[root@localhost ~]# yum -y install gcc*
解压源码包
[root@localhost ~]# tar -zxf httpd-2.2.17.tar\(1\).gz
[root@localhost ~]# cd httpd-2.2.17/
配置 指定安装目录
使用源代码包中 configure的可执行文件
运行可执行文件 sh 文件名 或 ./文件名
[root@localhost httpd-2.2.17]# ./configure --prefix=/usr/local/httpd
#指定安装目录
编译:
[root@localhost httpd-2.2.17]# make
安装
[root@localhost httpd-2.2.17]# make install
echo $? 可以检查上一条命令是否成功 如果反馈0 没有没问题
&& 执行完前一条命令 在执行后一条命令
[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
硬盘 / 磁盘
window 1T 512G (手机空间)
内存 8G 16G (运行内存)
linux
硬盘 (scsi) 20G 1G
磁盘的类型
区分接口
类型
PATA/IDE : 并口
SATA : 串口 主要应用于家用电器 或者比较老的服务器(电脑)
SCSI: 串口 现在主要应用于服务器和小型计算机
并口 一条路 8个车道 数据的阻塞
串口 一条路 1个车道 传输的速度比较快
linux
并口类型 hd
串口类型 sd
SCSI---串口 ----sd
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:42.9 GB
100m 20m 50m
网卡传输数据的最小单位是b bit
文件系统的最小存储单位是 B Byte 100/8 12.5M 50 6M 3-4M
1字节--8bit
1Byte--8bit
1024B--1KB
1024KB--1MB
1024MB--1GB
1024GB--1TB
MBR扇区:磁盘当中的第一个扇区 225字节 64个字节是保存分区信息的(分盘信息 (c盘)) 每一个分区16字节
硬盘只能去划分为4个主分区
串口
sd
sda sdb sdc
sda1 c盘 sda2 d盘 sda3 F盘
第三块盘的第三个分区
sdc3
硬盘中的主分区数目只有 4 个 sda1 sda2 sda3 sda4(扩展分区)
因此主分区和扩展分区的序号也就限制在1~4
扩展分区再分为逻辑分区
逻辑分区的序号将始终从 5 开始
分盘 分区
sda
添加一块硬盘
设置--添加--硬盘--默认的设置(单个存储)---必须重启(reboot)(在实际环境中需要在服务器关机时添加硬盘)
1、reboot 普通重启
2、shutdown -r now 立刻重启(root用户使用)
3、shutdown -r 10 过10分钟自动重启(root用户使用)
4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)
如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启
5、init 1为重启
Linux centos关机命令:
1、halt 立刻关机
2、poweroff 立刻关机
3、shutdown -h now 立刻关机(root用户使用)
4、shutdown -h 10 10分钟后自动关机
5、init 0为关机
[root@localhost ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):m
d delete a partition
l list known partition types
m print this menu
n add a new partition
p print the partition table
q quit without saving changes
w write table to disk and exit
命令(输入 m 获取帮助):n
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):d
分区号 (1-4,默认 4):4
分区 4 已删除
3个主分区
Select (default e): 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
q直接退出不保存
w保存并退出
[root@localhost ~]# fdisk -l | grep sdb
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
/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
使用分区盘
首先需要把它格式化 设置系统文件类型
centos默认的文件类型 xfs
文件系统EXT3,EXT4和XFS的区别:
1. EXT3
(1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件
(2)Ext3目前只支持32000个子目录
(3)Ext3文件系统使用32位空间记录块数量和i-节点数量
(4)当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块
2. EXT4
EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本。
(1)Ext4的文件系统容量达到1EB,而文件容量则达到16TB
(2)理论上支持无限数量的子目录
(3)Ext4文件系统使用64位空间记录块数量和i-节点数量
(4)Ext4的多块分配器支持一次调用分配多个数据块
3. XFS
(1)根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
(2)采用优化算法,日志记录对整体文件操作影响非常小
(3) 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间
(4)能以接近裸设备I/O的性能存储数据
mkfs -t 文件系统类型 分区设备
[root@localhost ~]# mkfs -t xfs /dev/sdb1
[root@localhost ~]# mkfs -t ext4 /dev/sdb2
[root@localhost ~]# mkfs.
mkfs.btrfs mkfs.ext3 mkfs.minix mkfs.xfs
mkfs.cramfs mkfs.ext4 mkfs.msdos
mkfs.ext2 mkfs.fat mkfs.vfat
[root@localhost ~]# mkfs.xfs /dev/sdb3
更改文件系统类型
[root@localhost ~]# mkfs.xfs -f /dev/sdb2
挂载:
[root@localhost ~]# mkdir /sdb2
[root@localhost ~]# mount /dev/sdb2 /sdb2 临时挂载 重启之后挂载会不存在
[root@localhost ~]# cd /sdb2/
分区的步骤
添加硬盘---重启---分区---格式化(文件系统类型 xfs)---挂载
只要在挂载点下存放数据 相当于存放在对应的分区中
自动挂载
[root@localhost ~]# umount /dev/sdb2
[root@localhost ~]# vim /etc/fstab
/dev/sdb2 /sdb2 xfs defaults 0 0
挂载的设备 挂载点 文件系统类型 使用默认的配置 0 0
[root@localhost ~]# mount -a #将自动挂载文件中的内容再次挂载
光盘挂载
[root@localhost ~]# vim /etc/fstab
/dev/sr0 /mnt iso9660 defaults 0 0
查看设备块的uuid和类型
[root@localhost ~]# blkid /dev/sdb2
/dev/sdb2: UUID="b8680c6d-7413-4ade-a356-9848991e53ae" TYPE="xfs"
把sdc1分区指定文件类型为ext4
挂载点 /sdc1 使用自动挂载
交换分区的添加
[root@localhost ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 124672 -1
[root@localhost ~]# fdisk /dev/sdb
sdb5
更改分区的类型
命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):5
Hex 代码(输入 L 列出所有代码):L
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
/dev/sdb5 12587008 16781311 2097152 82 Linux swap / Solaris
命令(输入 m 获取帮助):w
[root@localhost ~]# partprobe /dev/sdb #再次保存
文件系统类型
[root@localhost ~]# mkswap /dev/sdb5
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=e44a8cdc-2703-4b0d-8f5e-0241ebf0e208
[root@localhost ~]# swapon -s #查看现在交换的分区的大小
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 135168 -1
[root@localhost ~]# swapon /dev/sdb5 #添加交换分区
[root@localhost ~]# swapon -s #查看
/dev/dm-1 partition 2097148 135168 -1
/dev/sdb5 partition 2097148 0 -2
永久添加
[root@localhost ~]# vim /etc/fstab
/dev/sdb5 swap swap defaults 0 0
把sdc盘分出2个主分区 2个逻辑分区
将第一个逻辑分区设定文件系统类型为xfs 挂载/aa 临时挂载
将第二个逻辑分区作为添加到交换分区当中 自动添加
lvm(logical volume manager) 逻辑卷管理
普通分区 fdisk
缺点: 分区的大小是固定的 没有办法增加 或者缩小分区的大小
逻辑卷 分区
优点:可以自己添加或者缩小分区的大小
还可以做逻辑卷快照 将当前的硬盘数据保存快照
安装虚拟机
自动(普通分区) 手动(lvm的分区方式)
逻辑卷分区
硬盘 8G 500 16G 1200
2个8G
逻辑卷
如何制作逻辑卷
/dev/sdb /dev/sdc
实验
两个分区
/dev/sdd1 /dev/sdd2
[root@localhost ~]# fdisk -l | grep sdd
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
分三个主分区 做逻辑卷 更改分区的类型
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
[root@localhost ~]# fdisk -l | grep sdd
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
/dev/sdd1 2048 4196351 2097152 8e Linux LVM
/dev/sdd2 4196352 8390655 2097152 8e Linux LVM
/dev/sdd3 8390656 12584959 2097152 8e Linux LVM
创建物理卷
[root@localhost ~]# pvcreate /dev/sdd1 /dev/sdd2
Physical volume "/dev/sdd1" successfully created.
Physical volume "/dev/sdd2" successfully created.
[root@localhost ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<39.00 GiB / 4.00 MiB free]
PV /dev/sdd1 lvm2 [2.00 GiB]
PV /dev/sdd2 lvm2 [2.00 GiB]
Total: 3 [<43.00 GiB] / in use: 1 [<39.00 GiB] / in no VG: 2 [4.00 GiB]
[root@localhost ~]# pvdisplay #详细查看
[root@localhost ~]# pvremove /dev/sdd1
Labels on physical volume "/dev/sdd1" successfully wiped.
[root@localhost ~]# pvcreate /dev/sdd1
创建卷组
[root@localhost ~]# vgcreate vg /dev/sdd1 /dev/sdd2
[root@localhost ~]# vgscan
[root@localhost ~]# vgdisplay
对卷组扩容
[root@localhost ~]# pvcreate /dev/sdd3
[root@localhost ~]# vgextend vg /dev/sdd3
[root@localhost ~]# vgscan
减少
[root@localhost ~]# vgreduce vg /dev/sdd3
Removed "/dev/sdd3" from volume group "vg"
[root@localhost ~]# vgdisplay
删除
[root@localhost ~]# vgremove vg
Volume group "vg" successfully removed
指定pe的大小 pe默认是4M 创建必须是pe的整数倍
[root@localhost ~]# vgcreate vg /dev/sdd1 /dev/sdd2 -s 16M
[root@localhost ~]# vgdisplay
逻辑卷
[root@localhost ~]# lvcreate -L 1G -n lv /dev/vg -L指定大小
Logical volume "lv" created.
[root@localhost ~]# lvcreate -l 20 -n lv1 /dev/vg -l 指定pe的个数
Logical volume "lv1" created.
[root@localhost ~]# lvscan
[root@localhost ~]# lvdisplay
逻辑卷的增容和缩容
[root@localhost ~]# lvextend -L +512M /dev/vg/lv
[root@localhost ~]# lvextend -l +3 /dev/vg/lv1
[root@localhost ~]# lvreduce -L -512M /dev/vg/lv
[root@localhost ~]# lvreduce -l -5 /dev/vg/lv1
删除
[root@localhost ~]# lvremove /dev/vg/lv1
格式化
[root@localhost ~]# mkfs -t xfs /dev/vg/lv
挂载
[root@localhost ~]# mkdir /lv
[root@localhost ~]# mount /dev/vg/lv /lv
[root@localhost ~]# df -hT 查看磁盘的占用率
/dev/vg/lv=/dev/mapper/vg-lv
-h 更易读显示
-T 显示文件系统类型
[root@localhost vg]# vim /etc/fstab
/dev/vg/lv /lv xfs defaults 0 0
/dev/mapper/vg-lv /lv xfs defaults 0 0
[root@localhost vg]# mount -a
逻辑卷
磁盘---普通---物理卷---卷组 ---逻辑卷---格式化---挂载
fdisk /dev/.. 分区类型改8e
pvcreate 普通分区
vgcreate 卷组名 物理卷
lvcreate -L/-l 大小/个数 -n 名字 卷组
格式化
挂载
逻辑卷正在使用
[root@localhost vg]# lvextend -L +512M /dev/vg/lv
[root@localhost vg]# df -hT
添加空间之后 空间没有添加到使用的空间当中 需要把添加的空间格式化
[root@localhost vg]# xfs_growfs /dev/vg/lv
[root@localhost vg]# df -hT
ext4 resize2fs /dev/vg/lv
缩容(xfs不支持)
[root@localhost sdb1]# lvcreate -s -n lv1 -L 1G /dev/vg/lv
Logical volume "lv1" created.
-s 拍摄快照
-n 指定快照名
-L 指定快照的大小
[root@localhost sdb1]# ls /dev/vg
lv lv1
恢复快照 只能使用一次 在没有挂载的情况下恢复
[root@localhost sdb1]# umount /dev/vg/lv
[root@localhost sdb1]# lvconvert --merge /dev/vg/lv1
Merging of volume vg/lv1 started.
vg/lv: Merged: 100.00%
[root@localhost sdb1]# ls /dev/vg
lv
使用sde盘和sdf盘创建逻辑卷
使用的分区/dev/sde1 /dev/sdf2
pe大小为8M 逻辑卷大小512M
逻辑卷和卷组的名称自己自定义
创建完逻辑卷后把其添加容量 增加512M
raid
磁盘阵列
提高硬盘的容量 提高硬盘的读写 保证数据的安全
实际环境当中
raid 磁盘阵列卡 磁盘阵列柜
软件设定磁盘阵列
raid raid0 raid1 raid5 raid01 raid10
raid0
相当于把数据分开存储 最少需要两块硬盘
优点:只是单纯提高了读写的效率
缺点:数据不安全 如果一块硬盘损坏 将会影响到所有的数据
raid1
相当于把数据复制了一份 最少需要两块硬盘
优点:可以保证数据的安全性 即使一块硬盘坏掉 数据也不会受到 影响
缺点:读写的速率并没有提高 因为还是只有一块硬盘在工作 另一块硬盘负责去复制前一块硬盘的数据 当工作中硬盘坏掉后,才会使用另一块硬盘
raid5
最少需要3块硬盘 采取的是奇偶校验机制 第一块硬盘中保存一部分数据 第二块硬盘中保留一部分数据 第三块硬盘中保留所有的数据
优点:提高了读写效率 有容错机制 当一块硬盘坏掉后,不影响整个数据
缺点:不能同时坏掉两块硬盘 费用比较大
raid01: raid0+1
两块做好的raid0 组成raid1 最少需要4块硬盘
优点:提高了读写效率 保证数据的安全 同时坏掉两块硬盘 不影响数据
同组硬盘可以都坏掉 不同组的不同数据硬盘可以同时坏 但是不同组的同数据硬盘不能都坏掉
raid10: raid1+0
两块做好的raid1 组成raid2 最少需要4块硬盘
优点:提高了读写效率 保证数据的安全 同时坏掉两块硬盘 不影响数据
同组的硬盘不能都坏掉 不同组的硬盘可以随便坏掉
raid50 6
raid0+1
sdb1 sdb2 sdc1 sdc2
[root@localhost ~]# fdisk /dev/sdb
[root@localhost ~]# fdisk -l | grep sdb
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
/dev/sdb1 2048 4196351 2097152 fd Linux raid autodetect
/dev/sdb2 4196352 8390655 2097152 fd Linux raid autodetect
[root@localhost ~]# fdisk /dev/sdc
[root@localhost ~]# fdisk -l | grep sdc
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
/dev/sdc1 2048 4196351 2097152 fd Linux raid autodetect
/dev/sdc2 4196352 8390655 2097152 fd Linux raid autodetect
[root@localhost ~]# rpm -qa | grep mdadm
mdadm-4.0-13.el7.x86_64
创建两个raid1
[root@localhost ~]# mdadm -Cv /dev/md1 -a yes -n2 -l1 /dev/sdb1 /dev/sdc1
Continue creating array? y
-C :创建
-v: 显示详情信息
/dev/md1: 创建raid1的名称
-a yes: 自动创建后端的设备
-n2: 使用的分区个数
-l1 :等级 raid1 1 raid0 0 raid5 5
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdc1[1] sdb1[0]
2094080 blocks super 1.2 [2/2] [UU]
unused devices: <none>
[root@localhost ~]# mdadm -Cv /dev/md2 -a yes -n2 -l1 /dev/sdb2 /dev/sdc2
[root@localhost ~]# mdadm -Cv /dev/md0 -a yes -n2 -l0 /dev/md1 /dev/md2
[root@localhost ~]# cat /proc/mdstat Personalities : [raid1] [raid0]
md0 : active raid0 md2[1] md1[0]
4184064 blocks super 1.2 512k chunks
md2 : active raid1 sdc2[1] sdb2[0]
2094080 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sdc1[1] sdb1[0]
2094080 blocks super 1.2 [2/2] [UU]
unused devices: <none>
[root@localhost ~]# mkdir /md0
[root@localhost ~]# mount /dev/md0 /md0
[root@localhost ~]# df -hT
删除raid
因为数据是在硬盘当中的 所以即使阵列不存在 数据也不会队列
[root@localhost ~]# umount /dev/md0
[root@localhost ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@localhost ~]# cat /proc/mdstat
raid5
n3 -l5
/dev/sdb3 /dev/sdc3 /dev/sdc5
0731复习
命令
shell 是命令解析器 /bin/bash 开发 --- shell脚本(命令的结合)逻辑思维 开发 逻辑
产品 游戏 登录 用户名
密码
网站--用户访问---日志
--切割---shell
第一章:
type
cd cd - cd cd..
su
ls -l --color -a -A -R -h -d
alias unalias
du -s -h -a
mkdir -p
touch
cp -r -f -p -i
mv
rm -r -f -i
pwd
ln -s
硬链接 同一个分区当中
软连接 不在同一个分区
which -a
find -name -size
-a -o
man
--help 外部
help 命令字 内部
第二章:
/
/boot:
/home:
/etc:
/root:
/dev:
/bin
/sbin:
/usr:
/mnt:
cat tac
more
less
tail head
gzip bzip2 -d 1-9 6
gunzip bunzip2
tar 目录压缩---目录---归档文件---压缩----归档压缩文件
-c -x -p -v -f -z -j
grep -v -i ^ $
echo
echo $PATH
< > >> 2> 2>> &> &>>
|
vim 文件编辑器 很重要
第三章 用户和组 权限
普通用户
程序用户
管理用户
组
基本组
附加组
用户必须依赖组
用户--基本组 只能有一个基本组 多个附加组
useradd 创建用户 默认会创建和用户同名的基本组
-u -g(必须存在) -G -e yyyy-mm--dd -M -s -d
/etc/passwd /etc/shadow /etc/group /etc/gshadow
passwd
-l -u -S -d
usermod
-U -L -l -d -s -e -G -g -u
userdel
-r
groupadd
-g
gpasswd 添加用户
-a -d -M
查看 id groups finger w who users
权限
ls -l ls -ld
访问权限 rwx
归属
chmod u/g/a/o +-rwx 文件/目录
数字
421 421 421 777
-R
chown 属主:属组 文件/目录
属主
:属组
chgrp
-R
set 借用属组或者属主的权限 x---s /usr/bin/passwd
粘滞位 o t x 公共目录777
s u4 g2 t1
7777
setfacl 权限微调 acl控制
针对一个用户设置权限
-m u:用户名:权限
g:组名:权限
-x
getfacl
ls -l +
umask 0022
目录 777 755
普通 666 644
可执行777
第四章:
安装程序
linux rpm 源码
rpm rpm命令
查看 查看安装好 查看未安装的
rpm -qa -d -f -i -c -l
rpm -qp -d -i -c -l
安装
rpm -ivh
force --nodeps
卸载
evh
重建 --rebuild
yum 一定要会
网络 本地
。。
本地 自己编写
[aa]
name=jjafa
baseurl=file:///mnt
enabled=1
gpgcheck=0
yum list
yum makecache
yum clean all
yum provide
yum -y install
yum -y remove
网络下载rpm
rpm -ivh
yum -y localinstall 安装当前目录下的rpm
yum -y groupinstall
源码编译安装 公司用的多
归档压缩包
解压
配置
编译
安装
可以规定程序安装在指定目录下 qq
yum安装依赖关系
源码包---程序
第五章:
分区
普通分区逻辑卷
fdisk
83
格式化挂载 xfs ext4
-l
fdisk
n
t
p
d
q
w
partprobe /dev/
sdb1 挂载
sdb2
逻辑卷分区
物理卷----卷组 ----逻辑卷
pe 4M整数倍
pvcreate
vgcreate
lvcreate -L
-l pe的个数
增加和缩小
如果逻辑卷使用 如何增加和缩小容量(ext4)
xfs----只支持增容
raid 磁盘阵列
买硬件 ---- lvm
raid0 raid1 raid5 raid01 raid10
分区
该类型
mdadm
-C v -n -l 0 1 5 -a yes
格式化
挂载
磁盘配额
磁盘 --- 目录
可以限制 aa---512M bb---512M
aa---10目录 bb--20目录
磁盘配额 文件系统类型必须是xfs
[root@localhost ~]# rpm -qa | grep quota
quota-nls-4.01-17.el7.noarch
quota-4.01-17.el7.x86_64
[root@localhost ~]# fdisk /dev/sdd
[root@localhost ~]# fdisk -l | grep sdd
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
/dev/sdd1 2048 4196351 2097152 83 Linux
[root@localhost ~]# mkfs -t xfs /dev/sdd1
[root@localhost ~]# mkdir /sdd1
[root@localhost ~]# mount /dev/sdd1 /sdd1/
如果直接挂载 是没有办法实现磁盘配额的功能
需要通过配置让其实现磁盘配额功能
[root@localhost ~]# umount /dev/sdd1
[root@localhost ~]# mount -o usrquota,grpquota /dev/sdd1 /sdd1/
[root@localhost ~]# mount
/dev/sdd1 on /sdd1 type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
创建文件或目录个数进行限额
inode 权限 名字。。。。 block 空间
inode
[root@localhost /]# xfs_quota -x -c 'limit -u isoft=4 ihard=5 aa' /dev/sdd1
-x 专家模式
-c 执行后面的命令
-limit 限制
-u 用户 isoft 对inode软限制 ihard 硬限制 aa 用户名
/dev/sdd1 磁盘 /sdd1 目录也可以写 因为现在是挂载[root@localhost /]# ls -ld /sdd1
drwxr-xr-x. 2 root root 6 8月 2 08:50 /sdd1
[root@localhost /]# chmod 777 /sdd1
[root@localhost /]# su aa
[aa@localhost /]$ cd /sdd1
[aa@localhost sdd1]$ touch {1..7}
touch: 无法创建"6": 超出磁盘限额
touch: 无法创建"7": 超出磁盘限额
[aa@localhost sdd1]$ ls
1 2 3 4 5
对占用的空间进行限额 block
[root@localhost /]# xfs_quota -x -c 'limit -u bsoft=4M bhard=5M aa' /dev/sdd1
[root@localhost /]# su aa
[aa@localhost /]$ cd /sdd1/
[aa@localhost sdd1]$ rm -rf *
[aa@localhost sdd1]$ ls
[aa@localhost sdd1]$ dd if=/dev/zero of=test bs=1M count=6
dd 无限复制
if 读取 /dev/zero 可以无限生成空字节 /dev/random 随机
of 生成文件名 写入文件
bs 一次写入多大的内容
count 次数
dd: 写入"test" 出错: 超出磁盘限额
记录了6+0 的读入
记录了5+0 的写出
5242880字节(5.2 MB)已复制,0.0451467 秒,116 MB/秒
[aa@localhost sdd1]$ ls
test
[aa@localhost sdd1]$ du -sh
5.0M .
自动挂载
[root@localhost /]# vim /etc/fstab
/dev/sdd1 /sdd1 xfs defaults,usrquota,grpquota 0 0
[root@localhost /]# mount -a
#如何查看当前的配额
[root@localhost /]# xfs_quota -x -c 'quota aa' /dev/sdd1
[root@localhost /]# xfs_quota -x -c 'quota -i aa' /dev/sdd1
linux开机的流程
开机自检 检查自己的硬件设备
加载硬盘---MBR 512字节 64字节 分区表
446个字节 引导程序
55AA 2个字节 结束符
引导程序----整个程序
GRUB菜单
加载内核 linux
[root@localhost /]# uname -r
3.10.0-862.el7.x86_64
启动第一个进程
init PID
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 重新启动,使用该级别时将会重启主机
init 5 图形界面
init 3 字符界面
init 0 关机
init 6 重启
系统服务的控制
程序
systemctl start 程序名 启动
systemctl stop 程序名 关闭
systemctl restart 程序名 重启
systemctl reload 程序名 重新加载
systemctl enabled 程序名 加入到开机自启当中
systemctl disabled 程序名 从开机自启中移除
systemctl status 程序名 查看程序的运行状况
systemctl is-enable 程序名 查看当前程序是否在开机自启当中
进程管理:
程序:存储在硬盘中的代码和数据文件
进程:程序运次那个后会派生进程,进程存在内存中,并且进程还会调用CPU等硬件资源
线程:调用进程资源实现程序的功能
一个进程可以派生多个线程
进程 父进程 子进程
PID 进程的编号
查看进程的信息
查看静态进程的统计信息
ps
a 显示当前终端下所有的进程
u 使用用户为主的形式表现
x 列出详情的所有信息
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
ps
-e 查看系统当中的所有的进程
-l 是以长格式的形式显示
-f 以完整的形式显示
[root@localhost ~]# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
[root@localhost ~]# ps -elf | grep 程序名
动态查看进程
[root@localhost ~]# top
cpu 使用cpu的空间%
mem 占用内存的%
swap 交换空间的%
空格是刷新
P 按照cpu的占用百分比进行排序
M 按照内存占用的百分比排序
T 安装运次的时间排序
h 查看帮助信息
q 退出
java编写的程序
[root@localhost ~]# jps
pgrep 过滤出指定条件的pid
[root@localhost ~]# pgrep -l "log" -l 列出程序名
401 xfs-log/dm-0
595 xfs-log/sda1
786 abrt-watch-log
791 abrt-watch-log
805 systemd-logind
1205 rsyslogd
3175 xfs-log/sdd1
-U:指定特定用户
[root@localhost ~]# pgrep -l "log" -U root
-t:指定终端
pgrep -l -U teacher -t tty1
pstree命令
以树形结构列出进程信息
pstree -aup
-a:显示完整信息
-u:列出对应用户名
-p:列出对应PID号
[root@localhost ~]# ls -R / &
pid
[root@localhost ~]# ls -R /etc &
进程的挂起 ctrl +z
top
[1]+ 已停止 top
jobs 查看挂起的程序
运行挂起的程序
fg 编号
[root@localhost ~]# pgrep -l "log"
401 xfs-log/dm-0
595 xfs-log/sda1
786 abrt-watch-log
791 abrt-watch-log
805 systemd-logind
1205 rsyslogd
3175 xfs-log/sdd1
pkill命令
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
kill pid
[root@localhost ~]# kill 1205
[root@localhost ~]# pgrep -l "log"
-9 kill 强制关闭 kill -9 kill -kill kill和killall的选项通用
-2 INT 中断(ctrl+c)
-3 QUIT 退出
-15 TERM 终止
-18 CONT 持续
-19 STOP 暂停
-1 HUP 重新加载
killall 程序名
[root@localhost ~]# systemctl start rsyslog
[root@localhost ~]# killall rsyslogd
[root@localhost ~]# pgrep -l "log"
ctrl+c 结束
计划任务:
一次性的计划任务:
at命令
[root@localhost ~]# at 12:30 2021-08-04 #先写时间点 回车
at> reboot<EOT> #ctrl+d提交
job 1 at Wed Aug 4 12:30:00 2021
[root@localhost ~]# atq #查看一次计划任务的列表
1 Wed Aug 4 12:30:00 2021 a root
[root@localhost ~]# atrm 1 #删除 删除的时候删除的是id
[root@localhost ~]# atq
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 #设定
10 8 * * * echo 11111 >> /xixi
[root@localhost ~]# crontab -l #查看
10 8 * * * echo 11111 >> /xixi
[root@localhost ~]# crontab -r #清空掉所有的计划任务
[root@localhost ~]# crontab -l
no crontab for root
如果只想删除一条 就需要进入编辑当中直接删除一行
[root@localhost ~]# useradd aa
[root@localhost ~]# crontab -e -u aa
* * * * * echo 111111 >> /home/aa/xixi
[root@localhost ~]# crontab -l -u aa
* * * * * echo 111111 >> /home/aa/xixi
[root@localhost ~]# crontab -r -u aa #清空掉所有的计划任务
IP
网络中都是通过IP来通信
iPv4 ipv6
iPv4
32位
10101010.10101010.10101010.10101010
二进制--十进制
0-9 192.168.2.1
ip地址5类
A: 0-126 255.0.0.0
B: 128-191 255.255.0.0
C: 192-255 255.255.255.0
D:
E:
127.0.0.1 是本地回环地址 代表的是本机
c类地址
前三位是网络为 后一位为主机位
192.168.2.50------192.168.2.60
网段
255 254
192.168.2.0---192.168.2.255
网段地址 广播地址 不能使用的
192.168.2.1-192.168.2.254/24
子网掩码 4位 网络为1 主机位为0
255.255.255.0
11111111.1111111.11111111.00000000
24
255个地址
子网掩码 网络位为1 主机位为0
255.255.255.0
网段地址 该网段当中的第一个地址
广播地址 该网段当中的最后一个地址
ip地址的配置
ip的配置文件
[root@localhost network-scripts]# ifconfig 查看网卡的信息 查看激活的网卡信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.50 netmask 255.25
-a 查看所有网卡的信息
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33
BOOTPROTO=none
dhcp 动态获取
static 静态
none 两种都可以
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]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255
使用命令配置
[root@localhost ~]# nmcli connection delete ens33
成功删除连接 'ens33'(79b5807b-bd17-4c39-a864-dfbc9fb7377b)。
[root@localhost ~]# nmcli connection add type ethernet ifname ens33 con-name ens33
连接“ens33”(e13aecc7-397b-4835-9436-acd8f05cf6cf) 已成功添加。
[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 ~]# nmtui
两台主机只能能ping同
两台主机使用的是同一个网络适配器
同一个网段
[root@localhost ~]# ping 192.168.2.50
4 bytes from 192.168.2.50: icmp_seq=1 ttl=64 time=1.01 ms
[root@localhost ~]# ping -c 2 192.168.2.50
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.2.1
killall kill
计划任务 at
crontab
三种配置ip的方式
一台基础环境 空环境 dhcp服务
dhcp服务
作用:给未配置ip的主机分配ip地址
优点:1.减轻管理人员的压力
2.避免输入错误的问题
3.避免ip地址的冲突
4.提高ip地址的利用效率
流程:1.客户端发送一个广播消息 询问那个服务可以分配IP地址
2.dhcp服务会返回一个响应 并且告诉客户端可以分配ip地址的范围
3.客户端选择一个ip
4.dhcp服务会先确认ip地址没有分配给其他主机,之后dhcp服务就会把这个ip响应给客户端
dhcp服务分配ip地址 不是永久的 是由租约时间的 服务端会规定默认的租约时间
租约是自动续约的 除非客户单不在需要这个ip地址
当租约时间剩余50% 会给客户端一次提醒
当租约时间剩余20% 会给客户端提醒 如果继续需要这个ip,那么会自动续约
模拟公司里向其他主机分配ip
服务端 ip dhcp 192.168.2.40
client 没有ip
服务端:安装dhcp服务
yum配置好
[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# rpm -qa | grep dhcp
dhcp-common-4.2.5-68.el7.centos.x86_64
dhcp-4.2.5-68.el7.centos.x86_64
dhcp-libs-4.2.5-68.el7.centos.x86_64
更改dhcp服务的配置
[root@localhost ~]# cd /etc/dhcp/
[root@localhost dhcp]# ls
dhclient.d dhcpd6.conf scripts
dhclient-exit-hooks.d dhcpd.conf
[root@localhost dhcp]# vim dhcpd.conf
# see /usr/share/doc/dhcp*/dhcpd.conf.example
样例文件
[root@localhost dhcp]# vim /usr/share/doc/dhcp*/dhcpd.conf.example
原来的空配置文件改名
[root@localhost dhcp]# mv dhcpd.conf dhcpd.bak
配置文件的样例文件复制一份到当前目录下 一定是dhcpd.conf这个名字
[root@localhost dhcp]# cp /usr/share/doc/dhcp*/dhcpd.conf.example dhcpd.conf
[root@localhost dhcp]# ls
dhclient.d dhcpd6.conf dhcpd.conf
dhclient-exit-hooks.d dhcpd.bak scripts
[root@localhost dhcp]# vim dhcpd.conf
7 option domain-name "www.aaa.com"; #默认搜索域
8 option domain-name-servers 192.168.2.40; #dns地址的ip 本机的ip
10 default-lease-time 21600; #默认租约时间
11 max-lease-time 43200; #最大租约时间
26 subnet 192.168.2.0 netmask 255.255.255.0 { #声明一个网段 本机的网段
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
同一个网络适配器
客户端
dhclient -d
[root@localhost ~]# ip a
[root@localhost ~]# dhclient -r 删除获取的ip
[root@localhost ~]# dhclient -d
DHCPOFFER from 192.168.2.40
DHCPACK from 192.168.2.40 (xid=0x2b7bca9e)
bound to 192.168.2.130 -- renewal in 10259 seconds.
分配一个固定的ip地址
基于上一个实验
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf
31 host aa {
32 hardware ethernet 00:0c:29:ac:88:fa;
33 fixed-address 192.168.2.100;
34 }
[root@localhost dhcp]# systemctl restart dhcpd
客户端
[root@localhost ~]# dhclient -r
[root@localhost ~]# dhclient -d
DHCPACK from 192.168.2.40 (xid=0x1c4c2ae1)
bound to 192.168.2.100 -- renewal in 10608 seconds.
[root@localhost ~]# ip a
server
192.168.8.10
范围:自己定
ftp服务 能够用来保存数据
提供共享的功能 共享目录
ftp c/s
ftp有上传和下载的功能
client可以通过用户名和密码登录到ftp主机上 下载或者上传数据
3个实验:
1.匿名登录
共享目录 /var/ftp vsftp
用户 ftp
server 192.168.2.40 yum
client 192.168.2.50 yum
server
[root@localhost ~]# yum -y install vsftpd
client
[root@localhost ~]# yum -y install ftp
server
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES #开启匿名用户登录
16 local_enable=NO #关闭本地用户登录
29 anon_upload_enable=YES
33 anon_mkdir_write_enable=YES #是否让匿名用户有上传和下载的功能
[root@localhost ~]# systemctl restart vsftpd
客户端:
[root@localhost ~]# ftp 192.168.2.40 #服务端的ip
server
[root@localhost ~]# systemctl stop firewalld #直接关闭防火墙
[root@localhost ~]# firewall-cmd --add-service=ftp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
client:
[root@localhost ~]# ftp 192.168.2.40
Connected to 192.168.2.40 (192.168.2.40).
220 (vsFTPd 3.0.2)
Name (192.168.2.40:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
server /var/ftp
[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# ls
pub
[root@localhost ftp]# touch hahahaha
client
ftp> ls
227 Entering Passive Mode (192,168,2,40,21,38).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Aug 05 01:41 hahahaha
本地用户登录 用户名和密码
共享目录 该用户的家目录
server端
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=NO
16 local_enable=YES
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# useradd user01
[root@localhost ~]# passwd user01
更改用户 user01 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
client:
[root@localhost ~]# ftp 192.168.2.40
Connected to 192.168.2.40 (192.168.2.40).
220 (vsFTPd 3.0.2)
Name (192.168.2.40:root): user01
331 Please specify the password.
Password:
230 Login successful.
使用本地用户登录 共享目录是在登录用户的家目录下
server
[root@localhost ~]# cd /home/user01/
[root@localhost user01]# touch hahahahahahaha
client
-rw-r--r-- 1 0 0 0 Aug 05 02:17 hahahahahahaha
虚拟用户登录
为了保证整个系统的安全 虚拟出一些用户作为ftp登录的用户 这些用户用于登录ftp 不能登录整个系统
server
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@localhost vsftpd]# vim users.list
one
123
two
456
three
789
[root@localhost vsftpd]# db_load -T -t hash -f users.list users.db
把自己编写的文件转换为电脑能识别的二进制文件
-T 转换 -t 类型 hash
-f 要更改的文件
[root@localhost vsftpd]# chmod 600 users* #基于安全考虑
虚拟用户需要基于本地用户
[root@localhost vsftpd]# mkdir /www
[root@localhost vsftpd]# useradd -d /www/qq -s /sbin/nologin qq
1.需要登录
2.ftp 共享目录 /www/qq
[root@localhost vsftpd]# chmod 755 /www/qq
[root@localhost vsftpd]# chown qq:qq /www/qq
[root@localhost vsftpd]# cd /etc/pam.d/
[root@localhost pam.d]# vim user.vu
#!PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/users #登录模块
account required pam_userdb.so db=/etc/vsftpd/users #登录测试的模块
[root@localhost pam.d]# vim /etc/vsftpd/vsftpd.conf
125 pam_service_name=user.vu #pam认证使用的文件名称
126 userlist_enable=YES
127 tcp_wrappers=YES
128 guest_enable=YES #开启虚拟用户
129 guest_username=qq #虚拟用户依赖的实际用户
130 allow_writeable_chroot=YES #虚拟用户有可写的权限
[root@localhost pam.d]# systemctl restart vsftpd
client:
[root@localhost ~]# ftp 192.168.2.40
Connected to 192.168.2.40 (192.168.2.40).
220 (vsFTPd 3.0.2)
Name (192.168.2.40:root): one
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
更改主机名
[root@localhost ~]# hostname xnj0806
[root@localhost ~]# bash
[root@aaa ~]# hostnamectl set-hostname aaa
[root@aaa ~]# bash