运维学习(第六周)

一、总结sudo配置文件格式,总结相关示例

1.sudoers文件格式总结

1.1.基本结构

  • 每一行一条规则,#开头为注释
  • 行末用 \ 可续行
  • 字段通常用空格或制表符分隔

1.2.主要语法

1.2.1.用户权限规则
<用户或用户别名> <主机别名>=<运行身份> <命令别名>
  • <用户或用户别名>:可以是用户名、用户组(以%开头)、或别名
  • <主机别名>:主机名或别名,通常为ALL
  • <运行身份>:以()括起来,指定以哪个用户身份运行,通常为(ALL)
  • <命令别名>:允许执行的命令或命令别名
1.2.2.别名定义
  • 用户别名:User_Alias
  • 主机别名:Host_Alias
  • 命令别名:Cmnd_Alias
  • 运行身份别名:Runas_Alias

示例:

User_Alias  ADMINS = alice, bob
Host_Alias  SERVERS = server1, server2
Cmnd_Alias  SHUTDOWN = /sbin/shutdown, /sbin/reboot
Runas_Alias OP = root, operator

1.3.其他常用配置

  • NOPASSWD:不需要输入密码
  • PASSWD:强制输入密码
  • !:取反,禁止执行

2.常见sudoers配置示例

2.1.允许用户alice以root身份在所有主机上执行所有命令

alice ALL=(ALL) ALL

2.2.允许组wheel的用户以root身份在所有主机上执行所有命令

%wheel ALL=(ALL) ALL

2.3.允许bob在server1上以root身份重启系统,不需要密码

bob server1=(root) NOPASSWD: /sbin/reboot

2.4.定义别名,允许ADMINS组在SERVERS上以OP身份执行SHUTDOWN命令

User_Alias  ADMINS = alice, bob
Host_Alias  SERVERS = server1, server2
Runas_Alias OP = root, operator
Cmnd_Alias  SHUTDOWN = /sbin/shutdown, /sbin/reboot

ADMINS SERVERS = (OP) SHUTDOWN

2.5.禁止用户liu执行/bin/rm命令

liu ALL=(ALL) ALL, !/bin/rm

2.6.允许用户组admin以root身份执行/usr/bin/apt-get,不需要密码

%admin ALL=(root) NOPASSWD: /usr/bin/apt-get

二、搭建时间同步服务器,详细总结配置和搭建过程

NTP服务器搭建与配置

安装NTP服务

  • CentOS:
sudo yum install ntp -y
  • Ubuntu:
sudo apt update
sudo apt install ntp -y

配置NTP服务器

编辑配置文件/etc/ntp.conf

主要配置项说明

  • server:上游NTP服务器(可用公网NTP服务器)
  • restrict:访问控制
  • driftfile:本地时钟漂移文件
  • logfile:日志文件

示例配置

# 上游NTP服务器(可选,建议保留)
server 0.cn.pool.ntp.org iburst
server 1.cn.pool.ntp.org iburst
server 2.cn.pool.ntp.org iburst
server 3.cn.pool.ntp.org iburst

# 允许局域网内主机同步时间
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# 允许本机
restrict 127.0.0.1

# 禁止其他主机
restrict default kod nomodify notrap nopeer noquery

# 漂移文件和日志
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp.log

启动并设置开机自启

sudo systemctl enable ntpd
sudo systemctl start ntpd

配置防火墙

NTP使用UDP123端口

  • CentOS:
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload
  • Ubuntu:
sudo ufw allow 123/udp

客户端配置

在客户端/etc/ntp.conf文件中添加你的NTP服务器地址:

server 你的NTP服务器IP iburst

然后重启NTP服务:

sudo systemctl restart ntp

检查同步状态

  • 服务器端/客户端:
ntpq -p

三、总结常见的日志服务管理的常见日志服务

1.Linux常见日志服务及管理方式

日志服务/工具主要功能/作用常见配置文件路径常用管理命令/方式典型日志文件路径
rsyslog系统日志收集、转发/etc/rsyslog.confsystemctl restart rsyslog/var/log/messages, /var/log/secure
syslog-ng高级日志收集、转发/etc/syslog-ng/syslog-ng.confsystemctl restart syslog-ng/var/log/messages
systemd-journald二进制日志收集、结构化日志/etc/systemd/journald.confjournalctl, systemctl restart systemd-journald/var/log/journal/(二进制)
logrotate日志轮转、压缩、清理/etc/logrotate.conf, /etc/logrotate.d/logrotate -f /etc/logrotate.conf作用于各类日志文件
ELK Stack日志收集、分析、可视化各组件自有配置systemctl 管理各组件自定义,常见为/var/log/elk/
Fluentd/Fluent Bit日志收集、转发/etc/fluentd/, /etc/fluent-bit/systemctl 管理服务自定义
Graylog集中式日志管理/etc/graylog/systemctl 管理服务自定义
应用程序日志各服务自有日志各服务配置文件按服务管理(如nginx, mysql等)/var/log/nginx/, /var/log/mysql/

2.常见日志文件及说明

日志文件路径说明
/var/log/messages系统通用日志
/var/log/secure 或 /var/log/auth.log认证/安全日志
/var/log/kern.log内核日志
/var/log/maillog邮件服务日志
/var/log/audit/audit.log审计日志
/var/log/cron定时任务日志
/var/log/boot.log启动日志
/var/log/httpd/Apache日志
/var/log/nginx/Nginx日志
/var/log/mysql/MySQL日志

四、总结日志分类, 优先级别。图文并茂解释应用如何将日志发到rsyslog,并写到目标

1.日志分类

Liunx系统日志通常分为以下几类:

日志类别说明常见日志文件
内核日志内核相关事件/var/log/kern.log
系统日志系统运行、服务、硬件等/var/log/messages
安全/认证用户登录、认证、权限等/var/log/secure, /var/log/auth.log
审计日志SELinux、系统审计/var/log/audit/audit.log
应用日志各类应用(如nginx、mysql等)/var/log/nginx/, /var/log/mysql/
邮件日志邮件服务相关/var/log/maillog
计划任务定时任务相关/var/log/cron
自定义日志应用自定义输出由应用指定

2.日志优先级别

Syslog协议定义了8个日志优先级(从高到低):

数字英文级别中文说明典型用途
0emerg紧急系统不可用
1alert警报必须立即处理
2crit严重严重情况
3err错误错误事件
4warning警告警告信息
5notice注意正常但重要
6info信息普通信息
7debug调试调试信息

3.应用如何将日志发到rsyslog并写到目标

3.1.rsyslog工作原理简图

+-------------------+         +-------------------+         +-------------------+
|   应用程序/服务   |  --->   |    rsyslog服务    |  --->   |   目标日志文件    |
+-------------------+         +-------------------+         +-------------------+
         |                             |                             |
         |  syslog() API/UDP 514/TCP   |  规则匹配、过滤、转发      |  写入磁盘/远程发送

3.2.应用日志发送到rsyslog的方式

方式一:命令工具logger

logger命令可以直接向rsyslog发送日志:

logger -p local0.info "This is a test log from app"
方式二:应用配置文件指定日志输出到syslog

如Nginx配置:

error_log syslog:server=localhost:514,facility=local1,tag=nginx_error;

3.3.rsyslog配置写入目标文件

配置文件路径:

  • /etc/rsyslog.conf
  • /etc/rsyslog.d/*.conf

配置语法:

<facility>.<priority>    <目标文件路径>

示例:

local0.info    /var/log/myapp.log
  • local0:日志设施,通常应用自定义使用local0~local7
  • info:日志级别
  • /var/log/myapp.log:目标日志文件

五、完成功能,将3个主机(要求主机名为ip)的ssh日志,通过rsyslog服务将ssh日志写入到集中的主机上的rsyslog服务,写入到/var/log/all-ssh.log文件

1.环境说明

  • 有3台主机:A、B、C(主机名分别为各自IP,192.168.1.10、192.168.1.11、192.168.1.12)
  • 集中日志主机:D(192.168.1.100)
  • 目标:A/B/C的SSH日志(/var/log/secure或/var/log/auth.log)通过rsyslog转发到D,D统一写入/var/log/all-ssh.log

2.配置步骤

2.1.集中日志主机(D)配置

2.1.1.开启rsyslog接收远程日志

编辑/etc/rsyslog.conf或/etc/rsyslog.d/romote.conf:

# 接收UDP和TCP日志
module(load="imudp")
input(type="imudp" port="514")

module(load="imtcp")
input(type="imtcp" port="514")
2.1.2.配置ssh日志写入指定文件

在/etc/rsyslog.d/all-ssh.conf添加:

# 匹配所有主机发来的ssh日志,写入/var/log/all-ssh.log
if ($programname == 'sshd') then /var/log/all-ssh.log
& stop
2.1.3.重启rsyslog服务
systemctl restart rsyslog

2.2.发送端主机(A/B/C)配置

2.2.1.设置主机名为IP

编辑/etc/hostname,内容为本机IP(如192.168.1.10),并执行:

hostnamectl set-hostname 192.168.1.10
2.2.2.配置rsyslog转发ssh日志

在/etc/rsyslog.d/ssh-forward.conf添加:

# 只转发sshd日志到集中主机
if ($programname == 'sshd') then @@192.168.1.100:514
& stop
2.2.3.重启rsyslog服务
systemctl restart rsyslog

六、总结/var/log/目录下常用日志文件作用

日志文件/目录作用说明
/var/log/messages记录系统大多数通用信息和错误日志,包括内核、服务、应用等(RedHat/CentOS常见)
/var/log/syslog记录系统通用日志,类似messages,Debian/Ubuntu常见
/var/log/secure记录与安全、认证相关的日志,如登录、su、sudo等(RedHat/CentOS常见)
/var/log/auth.log记录认证相关日志(如ssh登录、sudo等),Debian/Ubuntu常见
/var/log/kern.log记录内核产生的日志信息
/var/log/dmesg记录内核启动时的环节信息(可用dmesg命令查看)
/var/log/boot.log记录系统启动过程中的信息
/var/log/cron记录定时任务(crontab)相关的日志
/var/log/maillog记录邮件服务相关日志(如postfix、sendmail等)
/var/log/mail.log同上,Debian/Ubuntu常见
/var/log/audit/audit.log记录SELinux和auditd的安全审计日志
/var/log/httpd/Apache Web服务器相关日志目录(RedHat/CentOS)
/var/log/apache2/Apache Web服务器相关日志目录(Debian/Ubuntu)
/var/log/nginx/Nginx Web服务器相关日志目录
/var/log/mysql/MySQL数据库相关日志目录
/var/log/btmp记录失败的登录尝试(二进制文件,需用lastb命令查看)
/var/log/wtmp记录所有登录、注销事件(二进制文件,需用last命令查看)
/var/log/lastlog记录每个用户最近一次登录信息(二进制文件,需用lastlog命令查看)
/var/log/faillog记录失败的登录尝试(二进制文件,需用faillog命令查看)
/var/log/yum.log记录yum包管理器的操作日志(RedHat/CentOS)
/var/log/apt/记录apt包管理器的操作日志(Debian/Ubuntu)
/var/log/Xorg.0.log记录X Window系统(图形界面)相关日志
/var/log/utmp记录当前登录的用户信息(二进制文件)
/var/log/sudo.log记录sudo命令的使用情况(部分系统)

七、使用inotify + rsync和sersync实现文件的同步,并且总结两种方式的优缺点

1.inotify+rsync实现文件同步

1.1.原理说明

  • inotify:Liunx内核提供的文件系统事件监控机制,可以实时监控文件/目录的变化
  • rsync:高效的文件同步工具,支持增量同步、断点续传等

1.2.实现步骤

安装依赖

# Debian/Ubuntu
sudo apt install inotify-tools rsync

# CentOS/RHEL
sudo yum install inotify-tools rsync

编写同步脚本,假设要同步/data目录到远程服务器192.168.1.2:/backup:

#!/bin/bash
SRC="/data"
DEST="user@192.168.1.2:/backup"
inotifywait -mrq -e modify,create,delete,move $SRC | while read line
do
    rsync -az --delete $SRC $DEST
done
  • inotifywait:持续监听目录变化
  • rsync -az --delete:增量同步并删除目标端多余文件

后台运行

nohup ./sync.sh &

2.sersync实现文件同步

2.1.原理说明

  • sersync:基于inotify和rsync的C++实现,自动监听目录变化并调用rsync同步,适合大规模生产环境
  • 支持多线程、日志、邮件报警等功能

2.2.实现步骤

下载与安装

# 以二进制包为例
wget https://github.com/axgle/SerSync/releases/download/v2.5.4/sersync2.5.4_64bit_binary_stable_final.tar.gz
tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
cd GNU-Linux-x86

配置(编辑confxml.xml,设置本地监控目录和远程目标)

<localpath watch="/data">
    <remote ip="192.168.1.2" name="backup"/>
</localpath>

启动sersync

./sersync2 -r -d -o ./confxml.xml
  • -r:首次全量同步
  • -d:后台运行
  • -o:指定配置文件

3.两种方式优缺点对比

方案优点缺点
inotify+rsync- 脚本简单,灵活性高<br>- 易于定制和扩展<br>- 依赖少- 频繁变动时可能多次触发rsync,效率低<br>- 无日志、报警等功能<br>- 适合小规模或简单场景
sersync- 自动化程度高,配置灵活<br>- 支持多线程、日志、报警等<br>- 适合大规模生产环境- 配置复杂,学习成本略高<br>- 依赖sersync程序<br>- 社区维护不活跃,部分新系统兼容性需测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值