系统服务杂记

文章目录

  • 一、高级命令扩展
    • find
    • touch
    • dd创建一个符合条件的空文件
    • tree
    • scp
    • date
    • tar备份
    • ln
  • 二、软件包管理
    • 1、源码安装
    • 2、rpm安装
    • 3、yum安装
  • 三、服务
    • 1.ssh
    • 2.rsync
    • ftp
  • 常用的命令
    • 端口

一、高级命令扩展

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

你可能感兴趣的:(个人笔记,服务器,linux,apache)