文章目录
- 一、高级命令扩展
-
- find
- touch
- dd创建一个符合条件的空文件
- tree
- scp
- date
- tar备份
- ln
- 二、软件包管理
-
- 三、服务
-
- 常用的命令
-
一、高级命令扩展
find
# find 搜索路径 [选项 选项的值] ...
-name :根据文件的名称搜索文件,支持*通配符
-type :f代表普通文件、d代表文件夹
-mtime :根据文件的最后修改时间搜索文件 - :几天内 + :几天前
* 通配符
xargs :遇到grep过滤文件的时候需要用到
exec : 第二种解决方案,效果同上
# find /var/log -name "*.log" -mtime +10 -exec rm -rf {} \;
touch
创建文件的命令,一般会用于修改时间
touch -m -d "2020-03-23 00:00" a.txt
dd创建一个符合条件的空文件
# dd if=/dev/zero of=moon.txt bs=1M count=1 创建一个1M的空文件
if代表输入文件
of代表输出文件
bs代表字节为单位的块大小。
count代表被复制的块。
其中/dev/zero是一个字符设备,会不断返回0值字节。
tree
功能:主要功能是创建文件列表,将所有文件以树的形式列出来
yum -y install tree
tree .
scp
作用是文件传输
-r 目录,递归
上传文件
# scp [选项] linux本地文件路径 用户名@linux主机地址:远程路径
scp 1.txt [email protected]: 不写路径,会上传到root家目录
下载文件
# scp [选项] 用户名@linux主机地址:资源路径 linux本地文件路径
scp [email protected]:/root/1.txt /root
date
#date
#date +"%F %T %Y %m %d %H %M %S"
%F : 2020-04-03
%T : 09:45:36
# date -s "2020-04-10" 设置计算机系统时间
# ntpdate cn.ntp.org.cn 手工同步时间
tar备份
自动备份 每天的凌晨2点0分把/etc目录备份一次/tmp目录下,要求把/etc打包成etc.tar.gz格式
# crontab -e
分 时 日 月 周 /usr/bin/tar -zcf /tmp/etc.tar.gz /etc
0 2 * * * /usr/bin/tar -zcf /tmp/etc.tar.gz /etc
0 2 * * * /usr/bin/tar -zcf /tmp/etc-$(date +"\%Y\%m\%d").tar.gz /etc #时间,不会覆盖
ln
ln -s /opt/axel/bin/axel /bin/axel 软连接
二、软件包管理
二进制软件包:已编译好,直接安装使用 rpm包
软件源码包:源代码,需要编译-->二进制软件包-->安装使用
二进制源码包 安装--》rpmbuild工具-->rpm包或者源码包--》安装使用
1、源码安装
源码安装需要的软件
yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
源码安装一共分为三步(三步走):
第一步:配置过程(配置软件的安装路径)./configure
第二步:编译过程(把软件由源代码编译成可以安装的程序) make
第三步:安装过程(把编译后的程序进行安装) make install
# ./configure && make && make install
windows下载的安装包,上传到了linux系统中
一、第一种方法,按照默认配置进行
# tar -xf 压缩包
# cd 软件包中
# ./configure && make && make install
二、第二种方法,修改了配置
--prefix=... Directories to put files in /usr/local 软件家目录
--bindir=... $prefix/bin 命令的目录
--etcdir=... $prefix/etc 配置文件的目录 httpd => /etc/httpd/httpd.conf
--mandir=... $prefix/share/man man 文档路径
--locale=... $prefix/share/locale 语言编码
# tar -xf 压缩包
# cd 软件包中
# ./configure --prefix=/opt/axel 这里将/usr/local地址换到了/opt/axel
#make (这里需要gcc,yum安装的时候报错就使用这个命令 yum -y install gcc* --skip-broken)
#make install
lsof -i:80 查看80端口
测试
这里因为改变了软件家目录,系统查不到axel命令
①软连接 ln -s /opt/axel/bin/axel /bin/axel (这里要看一下路径)
②环境配置
1.查看当前的系统变量 echo $PATH
2.将axel目录添加进去 vim /etc/profile,最后一行加上下面这一句
export PATH=$PATH:/opt/axel/bin
3.source /etc/profile 刷新
除了vim添加,还可以使用echo追加
#echo 'export PATH=$PATH:/opt/axel/bin' >> /etc/profile
#source /etc/profile
2、rpm安装
安装: rpm -ivh
卸载: rpm -e [--nodeps强制]
查询: rpm -qa | grep
升级: rpm -Uvh
3、yum安装
源的作用:软件包管理器
更换本地源
① 使用光盘镜像作为YUM源仓库
② 下载很多软件,使用软件包作为YUM源仓库
1.更换镜像源
2.将光盘挂载到某个目录下
3.把光盘挂载添加到开机启动文件中
# chmod +x /etc/rc.local
# echo 'mount -o ro /dev/sr0 /mnt' >> /etc/rc.local
4.编写本地yum源仓库
# cd /etc/yum.repos.d/
创建一个以*.repo结尾的文件,名称任意
# vim CentOS-Media.repo
[c7-media] [仓库标识名称],名称任意,在一个文件中可以拥有多个标识
name=local yum 仓库名称
baseurl=file:///mnt 仓库的路径,支持多种格式,file://本地路径,ftp://,http://或https://
gpgcheck=0 gpgcheck=gpg密钥,0不检测,1检测(下方还要定义一个gpgkey=密钥连接)
enabled=1 enabled=是否启动当前仓库,值可以0,也可以是1,默认为1,代表启动仓库
#基本源改名字
#mv CentOS-Base.repo CentOS-Base.repo.1
# yum clean all
# yum makecache
# yum repolist all
# yum list 查看仓库里的软件包
更换网络源 yum源--阿里云
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
yum install epel-release -y epel.repo文件 => 扩展源,是对官方YUM源的一个补充
特殊软件源
# cd /etc/yum.repos.d
# vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
三、服务
1.ssh
sshd服务数据传输是加密的,可以防止信息泄漏,数据传输是压缩的,可以提高传输速度
ssh服务有远程链接和sftp服务
ssh服务中的sftp传输数据比ftp更加安全可靠
搭建sshd服务
1.关闭防火墙
# 临时关闭 systemctl stop firewalld
# 关闭开机自启动 systemctl disable firewalld
# 关闭selinux
selinux是个比防火墙更高级的网络防护
# 临时关闭 setenforce 0
# 查看 getenforce
# 修改配置文件 永久关闭 vim /etc/selinux/config SELINUX=disabled
2.配置yum 源
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
3、openssh软件的安装
# yum install openssh -y
# rpm -qa |grep openssh 或# yum list installed |grep openssh 检查openssh是否安装成功
#rpm -qf /usr/sbin/sshd
#rpm -qf /usr/bin/ssh
4、查看并修改ssh服务端的配置文件
# man 5 sshd_config
RealServer:禁止root账号远程登录
PermitRootLogin => yes or no,默认为yes 代表允许通过root账号远程登录此服务器
38行 PermitRootLogin no
5、sshd服务管理
# systemctl restart sshd => 重启
# systemctl status sshd => 状态
# systemctl stop sshd => 停止
# systemctl start sshd => 启动
# systemctl enable sshd => 开机自启动
# systemctl disable sshd => 开机不自启
# ps -ef |grep sshd => 进程
或# netstat -tnlp |grep sshd => 端口 (lsof -i:端口号)
或# ss -naltp |grep sshd
6.更改SSH默认端口
# vim /etc/ssh/sshd_config
17行 Port 3712
7.重启SSH服务
# systemctl restart sshd 或# systemctl reload sshd reload不停止现有业务,只是重新加载sshd对应的配置文件
8.禁域名
#vi /etc/ssh/sshd_config
115 #UseDNS yes
#把上面的yes 改成no 禁止dns查询,加快连接sshd服务的速度
9.验证指纹
# vim /etc/ssh/ssh_config
35行 StrictHostKeyChecking no
root免密登录
1.在192.168.1.11上生成密钥对
#ssh-keygen -t dsa
2.查看生成的密钥对
#cd .ssh
#ls
3.将公钥发送给服务器192.168.1.12
ssh-copy-id -i .ssh/id_dsa.pub [email protected]
4.在服务器192.168.1.12上查看发送过来的公钥
#cd .ssh
#ls 测试可以远程执行命令
5.在192.168.1.11上免密码ssh登陆
#ssh 192.168.1.12
echo $? 测试上面的命令是否执行成功,结果是0表示成功,非0表示识别
普通账号免密登录
su - girl
ssh-keygen -t dsa
ssh-copy-id -i .ssh/id_dsa.pub [email protected] 将公钥发送给各个服务器
ssh [email protected] /usr/sbin/ip addr 测试可以远程执行命令
scp /etc/hosts [email protected]:/tmp/ 免密码传输文件
scp /etc/hosts [email protected]:/boot/ 权限被拒绝了或者说权限不够导致的
2.rsync
1.本地同步
# rsync -av /dir1/ /dir2 => 把/dir1目录中的所有文件拷贝到/dir2目录中
# rsync -av /dir1 /dir3 => 把/dir1目录整体同步到/dir3目录中
2.远程同步
# rsync .tmux.conf .vimrc .tcshrc [email protected]: 上传
# rsync -av -e "ssh -p 2222" [email protected]:/root/xxx.txt 下载
3.系统服务
# natstat naput | grep 2222 端口监听
# systemctl start rsyncd
# /usr/bin/rsync --daemon 后台启动
4.周期性任务备份文件 主机A备份到主机B
1.关防火墙(后期可以设置防火墙端口开放)
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
2.准备需要备份的目录--A主机需要备份的
# mkdir /app/java_project -p
# mkdir /app/java_project/aa{1..3}
# touch /app/java_project/file{1..9}.java
3. 服务器的模块设置--A主机模块
# vim /etc/rsyncd.conf
[app]
path=/app/java_project
log file=/var/log/rsync.log
# systemctl start rsyncd
# ps -ef |grep rsync
# netstat -tnlp |grep rsync
4.B主机进行创建备份目录
# mkdir /backup/app1_java -p
# rsync -a [email protected]::app 测试
-a:获取rsync服务对应的同步目录标签
# rsync -av [email protected]::app /backup/app1_java 下载文件到本地
5.编写周期任务--B主机进行编写
# crontab -e
3 1 * * * /root/rsync_java.sh
# vim rsync_java.sh
#!/bin/bash
rsync -av [email protected]::app /backup/app1_java &>/dev/null #表示错误重定向和正确重定向
# chmod +x rsync_java.sh
rsync集合inotify工具
1.主机A-->主机B(备份机)
A主机
# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
# tar xf inotify-tools-3.13.tar.gz -C /usr/local/
# cd /usr/local/inotify-tools-3.14
# ./configure
# make
# make install
# vim inotify.sh
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /app/java_project |while read events
do
rsync -av --delete /app/java_project/ [email protected]:/backup/app1_java 2>&1
echo "`date +%F\ %T`出现事件$events" >> /var/log/rsync.log 2>&1
done
# chmod +x inotify.sh
# nohup ./inotify.sh &
& : 让inotify.sh在计算机后台运行,可以使用jobs命令查看,kill %编号结束,当我们退出终端时,这个执行会自动结束
nohup : 让程序一直在后台运行,即使我们关闭了终端
# cat /var/log/rsync.log 查看rsync.log日志文件
2.主机b-->主机A(备份机)
A主机
# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
# tar xf inotify-tools-3.13.tar.gz -C /usr/local/
# cd /usr/local/inotify-tools-3.14
# ./configure
# make
# make install
# vim inotify.sh
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /backup/app1_java |while read events
do
rsync -av --delete /backup/app1_java [email protected]:/app/java_project 2&>1
echo "`date +%F\ %T`出现事件$events" >> /var/log/rsync.log 2>&1
done
# chmod +x inotify.sh
# nohup ./inotify.sh &
ftp
一、搭建ftp服务--创建指定用户在指定目录
1.关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
2.配置yum源
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
3.服务器安装vsftpd软件
# yum install vsftpd -y
# systemctl start vsftpd
# systemctl enable vsftpd
4.配置
# grep -v ^# /etc/vsftpd/vsftpd.conf>vsftpd.conf.1
# vim vsftpd.conf.1
修改内容
anonymous_enable=NO #禁止匿名用户访问
local_enable=YES
write_enable=YES
local_root=/data/wu #指定账号访问的目录
chroot_local_user=YES #限定wu/123只能在/data/wu目录下活动
allow_writeable_chroot=YES #版本问题,不添加会报错
local_umask=022
dirmessage_enable=YES #启用消息功能
xferlog_enable=YES #开启或启用xferlog日志
connect_from_port_20=YES #支持主动模式(默认被动模式)
xferlog_std_format=YES
listen=YES #ftp服务独立模式下的监听
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO #开启白名单,黑名单
tcp_wrappers=YES
排错指南
重启vsftpd服务时,报错
#systemctl status vsftpd 下面是failed ,
这里检查两个,一个是配置文件vsftpd.conf 一个是进程21
losf -i:21 直接kill
配置文件检查里面是否有写错的地方,如果没有明显错误,就检查有没有空格,每行的后面也要检查
#cat vsftpd.conf.1 >/etc/vsftpd/vsftpd.conf
5.创建可登录用户和创建家目录--测试
# useradd wu
# useradd zs
# useradd lisi
# echo 123 |passwd --stdin wu
# echo 123 |passwd --stdin zs
# echo 123 |passwd --stdin lisi
# mkdir /data/wu -p
如果无法上传:# setfacl -R -m u:wu:rwx /data/wu
6.重启服务
# systemctl restart vsftpd
7.特殊权限用户
# vim /etc/vsftpd/vsftpd.conf
105行 chroot_list_enable=YES 开启用户列表文件
107行 chroot_list_file=/etc/vsftpd/chroot_list 指定用户列表文件
echo wu >> /etc/vsftpd/chroot_list 代表wu这个账号不会被禁锢在指定目录
# systemctl restart vsftpd
二、windows链接和linux链接,上传下载文件
windows
浏览器、文件管理器
ftp://192.168.8.137
要可以上网的地址
linux
1.下载ftp以及lftp
yum install ftp lftp -y
ftp 192.168.8.137
三、ftp客户端管理工具
1.ftp
单个文件:
上传: put 文件名
下载: get 文件名
多个文件:
上传多个文件(支持通配符):mput 文件名1 文件名2
下载多个文件(支持通配符):mget 文件名1 文件名2
整个目录:
上传文件夹:mirror -R 文件夹名
下载文件夹:mirror 下载文件夹存放到本地目录的位置
2.lftp工具:批量操作
针对某个命令求帮助:help + 命令
1、登录ftp
lftp用户名:密码@ftp地址:传送端口(默认为21)
lftp wu:[email protected]回车
2、下载文件
下载文件前首先要设置还本地的目录,用来存放下载的文件
lcd /home/ivy/doc ##设置本地存放目录get filename (如1.txt,ppt, pdf)
//下载单个文件mget *.txt
//下载一组文件,也即是批量下载所有的txt文件
get -c 1.txt //断点续传下载
mget -c *.txt //断点续传
pget -c n 10 file.dat //最多10个线程以允许断点续传的方式下载file.dat
mget -d dirname/(通配符*) //下载目录
mirror dirname //将目录的整个下载下来,子目录也会自动复制到,本地自动建立目录
3、 上传文件put 1.txt
mput *.txt
mirror -R miao //上传整个目录
mput -d dirname/* #上传目录
基本使用方法:
1)、下载服务器端文件:
# mirror –vn RCD LCD //RCD为远程路径,LCD为本地路径
2)、上传文件:
# mirror –R LCD RCD4.从远程主机上下载目录文件通过sftp下载目录:
lftp sftp://user@host -p port lftp :> mirror my_path
四、黑名单白名单,网络限速,禁止ip,网段
1.ip
# vim /etc/hosts.deny
服务程序:主机
vsftpd:all 全部拒绝
vsftpd:all EXCEPT 192.168.0.2 拒绝所有除了192.168.0.2
vsftpd:192.168.0.254 拒绝单个IP地址
vsftpd:192.168.0.254:allow
//以上是允许192.168.0.254访问,类似/etc/hosts.allow里增加vsftpd:192.168.0.254
vsftpd:192.168.0.0/255.255.255.0 拒绝某个网段
vsftpd:192.168.0.0/255.255.255.0 EXCEPT 192.168.0.254 拒绝某个网段,但是除了某个ip地址
注意:子网掩码不支持192.168.0.0/24这种写法
vim /etc/hosts.deny
vsftpd,sshd:10.1.1.1
2.黑名单,白名单
ftpusers 黑名单
user_list 默认是黑名单(可以成为白名单)
user_list要成为白名单,需要再配置文件里增加:
userlist_deny=NO
注意:如果user_list是白名单,那么必须在该文件里的用户才可以访问ftp服务。
3.限制流量
# vim /etc/vsftpd/vsftpd.conf
local_max_rate=0
0代表不限速
local_max_rate=数值 + 字节
local_max_rate=1024K
常用的命令
端口
netstat -naput | grep 端口
lsof 可列出各种进程打开的文件信息,一般可以通过结合参数来获取更加精确的信息
lsof -i:22
lsof -i tcp:22