一、总结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.conf | systemctl restart rsyslog | /var/log/messages, /var/log/secure |
syslog-ng | 高级日志收集、转发 | /etc/syslog-ng/syslog-ng.conf | systemctl restart syslog-ng | /var/log/messages |
systemd-journald | 二进制日志收集、结构化日志 | /etc/systemd/journald.conf | journalctl, 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个日志优先级(从高到低):
数字 | 英文级别 | 中文说明 | 典型用途 |
---|---|---|---|
0 | emerg | 紧急 | 系统不可用 |
1 | alert | 警报 | 必须立即处理 |
2 | crit | 严重 | 严重情况 |
3 | err | 错误 | 错误事件 |
4 | warning | 警告 | 警告信息 |
5 | notice | 注意 | 正常但重要 |
6 | info | 信息 | 普通信息 |
7 | debug | 调试 | 调试信息 |
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>- 社区维护不活跃,部分新系统兼容性需测试 |