时间服务器、日志服务器以及sudo用法

chrony

对于时间服务器只介绍几个关键的核心知识:

  • 在分布式环境中,相互协作的服务器不需要时间准确,但是要保证时间的一致性,但是有些服务会对时间的准确性有严格的要求。
  • linux在启动时由内核读取硬件时间,启动后系统时间与硬件时间相互独立运行,没有交集。对于虚拟机来说,它的时间有天然的不确定性,因为它的CPU是由宿主机分配过来的一点CPU。所以假如宿主机的CPU时钟频率震荡为1分钟,那么虚拟机的可能也就是30秒。
  • 假如服务器慢了24小时,不能将服务器的时间直接跳至准确的时间,因为中间的时间会出现空白,导致文件出现异常。所以需要将服务器的时间加快。直到它恢复正常时间。而不是直接跳转。
  • linux开始使用的是ntp软件,后来使用的chrony。后者更好用,更方便
  • 无论是ntp和chrony,既可以当作客户端,也可以当作服务端。也就是可以是单机同步,也可以让别人来同步你的时间。

测试环境:192.168.199.146为时钟服务器,192.168.1.229为客户端
(1)服务器和客户端都需要安装chrony

[root@bogon ~]# yum info chrony
...
源    :installed
...

(2)配置文件:/etc/chrony.conf

对于主机来说只要开启了allow选项,那么它就充当了一个服务器的角色,它监听在udp的123和323端口。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

而对于客户端来说,只需要将前面的server注释掉,换上远程服务器的地址即可。

在这里插入图片描述
在这里插入图片描述

补充说明:

  • 启动服务是 chronyd.service
  • 如果^后面出现?号的情况需要先查看防火墙,SE是否关闭,如果已经关闭,可以试着先stop一下,然后在启动试试。
  • chronyc是一个交互工具,进入交互页面之后,可以使用help获取帮助,sources和sourcestats可以查看状态是否正常

日志服务器

对于日志服务器来说,有下面几个核心内容:

  • rsyslog是syslog的升级版。支持C/S架构,可以当服务器或者客户端。
  • 支持多线程,支持TCP、UDP、SSL、TLS、RELP协议,可以存储日志信息于文件,数据库等存储数据系统,可以过滤日志信息中的任何部分的内容
  • rsyslog中有N个facility(设施),它可以将同类型应用程序的日志记录到一起,并且指明存放于何处
facility解释
auth认证系统消息
authpriv权限系统消息
cron定时任务消息
daemon系统服务消息
kern内核消息
lpr打印系统消息
mail邮件服务消息
news新闻系统消息
security安全服务消息
user用户服务消息
uucpuucp生成的消息
local0-local7自定义程序消息
syslog系统日志
  • 日志优先级,危险程度由低到高排列
级别解释
debug调试
info提供信息
notice重要的普通信息
warn警告信息
err错误消息
crit程序不可行的消息
alert需要立即处理的消息
emerg系统崩溃消息

在实际生产环境中,一般使用warn及warn以上的级别消息。

  • 程序配置文件:/etc/rsyslog.conf
  • 主程序:rsyslog.service
    使用rsyslog:
    环境:服务器192.168.199.146(ydong1) 客户端:192.168.199.229(ydong2)
    (1)系统默认安装了rsyslog,如果未安装,使用yum安装一下。
[root@ydong1 ~]# yum info rsyslog
源    :installed

(2)对服务器端配置文件进行更改。/etc/rsyslog.conf
配置文件中分为三大段:

段落解释
MODULES模块管理
GLOBAL DIRECTIVES全局设置
RULES规则

对于服务器来说,需要监听在套接字上。TCP/UDP 的514端口。如下图:
在这里插入图片描述

RULES上的选项:
格式:facility.priority target(存储的地方)

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console
#表示kern下所有级别的信息保存在/dev/console下

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
#表示所有facility的info信息保存在/vat/log/messages下。除了mail,authpriv,cron。


# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog
#“-”表示异步写入,意思是先写在内存中,等内存容量到达一定程度在写入文件中。可以提高磁盘的IO能力。一般默认都是同步写入。

# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*
#表示所有facility的emerg消息全部发送给用户消息。  om表示输出模块


# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

(3)客户端配置文件将需要发送的日志信息保存路径改为@远程服务器地址即可。
在这里插入图片描述
(4)将日志保存在数据库中。

  • 安装rsyslog-mysql接口。
    在这里插入图片描述
    安装完成之后会产生两个程序文件,一个是处理模块,一个是rsyslog的mysql脚本。

  • 导入脚本rsyslog-mysql脚本。
    在这里插入图片描述

  • 创建用户拥有syslog的一切权限

在这里插入图片描述

  • 对配置文件进行更改
    在这里插入图片描述
    在这里插入图片描述
    数据库填写格式:ommysql:数据库地址,数据库名称,用户名,密码

  • 在客户端上安装mariadb服务,发现服务器上有日志消息
    在这里插入图片描述

sudo用法

  • 在生产环境中,root用户不能说随意登录,但是又有些命令是必须拥有特殊权限才可以使用。sudo就是来解决这一类问题的。它可以使普通用户临时使用别的身份来执行命令

  • 授权文件:/etc/sudoers,此文件只是一个只读文件。我们修改使用visudo

  • 授权语法:
    在这里插入图片描述

usershosts=(runas)commands
用户名主机地址=(运行身份)可运行命令

例如:

ydong   ALL=(ALL)       /usr/sbin/useradd   #允许ydong用户在任何主机以任何身份可以运行useradd命令

在这里插入图片描述
补充:%号表示组内的用户可以拥有的权限,只可以是用户的基本组,附加组没有该处的权限

  • sudo还用用户提供了别名服务,方便用户对命令的重复使用。不需要在为每个用户拥有相同的命令而一次次重写。
User_aliasHost_aliasRunas_aliasCmnd_alias
用户别名主机别名运行别名命令别名

定义的方法:ALIAS_TYPE NAME=item1,item2....
例如:User_alias animals=dog,cat,fish

  • sudo常用选项,可以使用-h来查看。

  • 在配置文件中添加普通用户权限

在这里插入图片描述

[ydong@ydong1 ~]$ useradd jerry
-bash: /usr/sbin/useradd: 权限不够
#无法直接使用命令进行添加用户,需要使用sudo

[ydong@ydong1 ~]$ sudo useradd jerry
[sudo] ydong 的密码:
[ydong@ydong1 ~]$ 

补充:当用户第一次使用sudo的话需要输入密码,短时间内在此使用是不用输入密码的。这个是由时间戳控制的。默认记录的时间为5分钟。-k选项可以清楚时间戳,让每次使用sudo的时候都输入密码。-l可以输出当前用户所拥有的权限

  • 别名的使用
User_Alias LOCALNAME = jerry,paul
Cmnd_Alias USER_COMMAND = /usr/sbin/useradd,/sbin/userdel,/bin/passwd [a-z]*,!/bin/passwd root
LOCALNAME ALL=(ALL) USER_COMMAND
#为用户jerry,paul提供useradd userdel以及passwd命令,但是passwd命令不可以修改root的密码

[jerry@ydong1 ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR
    USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

用户 jerry 可以在 ydong1 上运行以下命令:
    (ALL) /usr/sbin/useradd, /sbin/userdel, /bin/passwd [a-z]*, !/bin/passwd root


[jerry@ydong1 ~]$ sudo useradd user1
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
正在创建信箱文件: 文件已存在
[jerry@ydong1 ~]$ sudo passwd user1
更改用户 user1 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[jerry@ydong1 ~]$ sudo userdel user1
[jerry@ydong1 ~]$ sudo passwd root
对不起,用户 jerry 无权以 root 的身份在 ydong1 上执行 /bin/passwd root。

  • 如果不想输入密码可以在配置文件中加上NOPASSWD即可
    在这里插入图片描述
[paul@ydong1 ~]$ sudo useradd user2
[paul@ydong1 ~]$ 
#切换新用户后,不再输入密码
  • sudo的日志默认存放在/var/log/secure里。可以设置专门放日志文件的地方。在这里插入图片描述
[root@ydong1 ~]# !tail
tail /var/log/sudo.log 
Jun 22 18:57:32 : jerry : TTY=pts/2 ; PWD=/home/jerry ; USER=root ;
    COMMAND=/sbin/userdel user3
Jun 22 18:58:23 : jerry : TTY=pts/2 ; PWD=/home/jerry ; USER=root ;
    COMMAND=/sbin/useradd user3
Jun 22 18:59:02 : paul : TTY=pts/2 ; PWD=/home/paul ; USER=root ;
    COMMAND=/sbin/userdel user3
Jun 22 19:00:11 : paul : command not allowed ; TTY=pts/2 ; PWD=/home/paul ;
    USER=root ; COMMAND=chomd /etc/passwd
Jun 22 19:00:20 : paul : command not allowed ; TTY=pts/2 ; PWD=/home/paul ;
    USER=root ; COMMAND=/bin/chmod /etc/passwd
#哪个用户执行哪个命令,哪个命令没有成功都会有所记载。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值