一.文件管理
相对路径和绝对路径
touch 创建文件
mkdir 创建目录 -p多级创建
rm 删除
·-i 删除前逐一询问确认。
·-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
·-r 将目录及以下之档案亦逐一删除。
cp 复制 -p -r
mv 移动
cp和mv的区别
相同设备:cp是复制mv是重命名(改名字)
不同设备:cp和mv差不多,但是cp会好一点,mv会删除了在移动
1、功能上的区别
mv:用户可以使用该命令为文件或目录重命名或将文件由一个目录移入另一个目录中(该文件从原来的文件夹中消失)。
cp: 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中(该文件仍保存在原文件夹中)。
2、从inode角度来区分
mv:会将存储于indoe索引节点上的文件元信息也移动到新文件中。
cp : 只会复制文件数据,不会复制inode索引节点上的文件元信息。
vim 查看
批量添加,配置,tab长度 自动缩进
针对所有用户都生效
ll /etc/vimrc
子配置文件对当前用户生效
ll ~/.vimrc
set nu显示行号
set ts=2 tab的长度等于两个空格
set ai 自动缩进
set ai sw=2 自动缩进的长度为2格
set nu ts=2 ai sw=2 et (et把tab自动转换为空格)
vim多行添加
(1)进入可视化模式的方法: ctrl+v
(2)按上下键选中要添加字符的列
(3)按大写的i,进入插入模式
(4)加入所要加入的字符
(5)按esc退出
(6)保存退出
全部注释的方法:ctrl+v,小g到行首,G到行尾,然后#,esc,保存退出
cat 正向查看
tac 反向查看
watch 定时执行一个程序或命令(监视)
head 查看文件的开头部分的内容(前十行)
tail 查看文件的内容(后十行)
显示文件5到8行:head -n 8 passwd | tail -n 3
less 可以随意浏览文件
ln 创建软硬链接, 软硬连接的原理
链接分为软链接和硬链接
软链接
软链接:多个节点号对应一个数据区域(节省空间)
(类似于拿着快递单号去取快递)
在多个路径下为了减少磁盘空间时使用软链接(节省空间)
软链接命令: ln -s 链接的文件名 创建的文件名
什么是软链接
(1)软链接可以理解成快捷方式。和windows下得快捷方式得作用是一样的。
(2)软链接文件的大小、创建时间和源文件不同。
(3)软链接文件只是一个指向关系(从链接文件到源文件的指向关系),不是源文件的内容,大小不一样。
说明:1.源文件被删除后,并没有影响硬链接文件;软链接文件在centos系统下不断的闪烁,提示源文件已经不存在2.重建源文件后,软链接不在闪烁提示,说明已经链接成功,找到了链接文件系统;重建后,硬链接文件并没有受到源文件影响,硬链接文件的内容还是保留了删除前源文件的内容,说明硬链接已经失效
硬链接
硬链接:多个数据区域对应的一个节点(用于备份小而多的数据,防止节点的损耗)
硬链接用于备份琐碎的文件方式节点区域被使用完,使用硬链接完成对琐碎文件的备份(用于备份小而多的数据,防止节点的损耗)
硬链接命令:ln 链接的文件名 创建的文件名
d是目录
硬链接都是数据访问的途径
删除一个后源数据连接的次数减一
什么是硬链接
(1)硬链接文件和源文件的大小、创建时间是一样的
(2)硬链接的文件内容和源文件的一模一样,相当于copy -p 复制文件的内容和创建时间(注意:-p是为了复制文件的时间)
(3)源文件修改,硬链接文件内同会同步修改。保持和源文件的内容相同。
find 在指定目录下查找文件和目录,文件大小的方式,权限,类型
find /mnt -name 文件名
find /mnt -perm 权限
find /mnt -perm 444
# /为或者,ugo有一个有读的权限即可
find /mnt -perm /444
# -并且,ugo都要有读的权限
find /mnt -perm -444
etc配置权限
usr系统资源
var变量
srv常量
二.用户管理
添加用户
useradd -s -M -d
·-s<shell> 指定用户登入后所使用的shell。
·-M 不要自动建立用户的家目录
·-d<登入目录> 指定用户登入时的默认工作目录
-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录> 指定用户登入时的起始目录。
-D 变更预设值.
-e<有效期限> 指定帐号的有效期限。
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
-g<群组> 指定用户所属的群组。
-G<群组> 指定用户所属的附加群组。
-m 制定用户的登入目录。
-M 不要自动建立用户的登入目录。
-n 取消建立以用户名称为名的群组.
-r 建立系统帐号。
-s<shell> 指定用户登入后所使用的shell。
-u<uid> 指定用户ID。
删除用户
userdel -r 用户名
·-r 删除用户登入目录以及目录中所有文件。
练习:创建用户
监控动作
[root@localhost ~]# watch -n 1 "tail -n 3 /etc/passwd /etc/group;ls -l /home"
#用户建立时的命令
useradd test
#删除用户
userdel -r test
#不要家目录
useradd -M test
#指定shell创建
userdel -r test
useradd -s /sbin/nologin test
#指定用户登入时的默认工作目录
userdel -r test
useradd -d /mnt test
useradd -u 2000 shengcan
grup -u 2001 caiwu
grupadd -g 2001 caiwu
groupadd -g 2001 caiwu
groupadd -g 2002 jishu
useradd -g shengchan -G JISHU -G caiwu lee
useradd -g shengcan -G JISHU -G caiwu lee
useradd -g shengcan -G jishu -G caiwu lee
useradd -M linux
useradd -G caiwu westos
useradd tabadmin
echo westos | passwd --stdin lee
echo westos | passwd --stdin linux
echo westos | passwd --stdin westos
echo westos | passwd --stdin tabadmin
passwd -e lee
passwd -e linux
passwd -e tabadmin
passwd -e westo
chage -M 30 lee
chage -M 30 linux
chage -M 30 westos
chage -M 30 tabadmin
三.权限管理
chown:用于设置文件所有者和文件关联组的命令。
·user : 新的文件拥有者的使用者 ID
·group : 新的文件拥有者的使用者组(group)
·-c : 显示更改的部分的信息
·-f : 忽略错误信息
·-h :修复符号链接
·-v : 显示详细的处理信息
·-R : 处理指定目录以及其子目录下的所有文件
·--help : 显示辅助说明
·--version : 显示版本
#把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid
#将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
#将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
#把/home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
chown :512 /home/runoob
chgrp:用于变更文件或目录的所属群组。
chgrp -v bin log2012.log
-c 或 --changes:效果类似"-v"参数,但仅回报更改的部分。
-f 或 --quiet 或 --silent: 不显示错误信息。
-h 或 --no-dereference: 只对符号连接的文件作修改,而不改动其他任何相关文件。
-R 或 --recursive: 递归处理,将指定目录下的所有文件及子目录一并处理。
-v 或 --verbose: 显示指令执行过程。
--help: 在线帮助。
--reference=<参考文件或目录>: 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
--version: 显示版本信息。
chmod:控制用户对文件的权限
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
suid:u+s
sgid:g+s
sticky:o+t
uid和gid
suid和sgid
特殊权限:
sticky:sticky简写为t,o+t (1)777
作用:让公共文件中的特殊权限设置为t,在这个公共目录下不同目录创建的文件其他用户不能删除
suid:u+s权限 (2)77 7
作用:使得其他用户运行该文件,使用该文件所有者身份运行
sgid:g+s (4)777
作用:使得所有人在此目录创建得的文件或目录都属于改所属组
四.网络管理
查看网络的功能:
[root@node1 ~]# nmcli networking
enabled
[root@node1 ~]# nmcli networking on
网络排除
#看绿没绿
[root@node1 ~]# nmcli connection show
#看有没有网卡
[root@node1 ~]# ifconfig
#看配置文件
[root@node1 ~]# cd /etc/NetworkManager/system-connections/
[root@node1 system-connections]# ls
172.25.254.100.nmconnection eth0.nmconnection
ens160.nmconnection
[root@node1 system-connections]# vim eth0.nmconnection
#查看网络的功能
[root@node1 ~]# nmcli networking
ip 主机在网络中的网址,ipv4 2/32 子网掩码 172.25.254.0/24 172.25.254.0/255.255.255.0
查看IP的方法:
ifconfig
ip a
hostname -I
红帽
改ip:
改ip的脚本
#查看网卡:
[root@serverb ~]# ifconfig
[root@serverb ~]# vim /usr/local/bin/vmset.sh
#!/bin/bash
cat > /etc/NetworkManager/system-connections/$1.connection <<EOF
[connection]
id=$1
type=ethernet
interface-name=$1
[ipv4]
method=manual
address=$2/24,172.25.254.2
dns=114.114.114.114;
EOF
chmod 600 /etc/NetworkManager/system-connections/$1.connection
nmcli connection reload
nmcli connection up $1
[root@serverb ~]# chmod u+x /usr/local/bin/vmset.sh
[root@serverb ~]# bash vmset.sh ens224 172.25.254.111
OPENEUDER
修改网卡的名称
#在内核钟禁止使用net.ifnames模块,这样可以让网卡显示为ethx(x为数字)
[root@localhost ~]# grubby --update-kernel ALL --args net.ifnames=0
#重启
[root@localhost ~]# reboot
#查看
[root@localhost ~]# ip ad
配置网卡(自动配置IP)
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
NAME=eth0
[root@localhost network-scripts]# nmcli connection reload
[root@localhost network-scripts]# nmcli connection up eth0
临时给eth1添加一个ip
[root@localhost ~]# ip a a 172.25.254.10/24 dev eth1
#显示ip
[root@localhost ~]# ip a s eth1
配置网卡(手动配置IP)
#文件里面ip哪些要1都要1
[root@localhost network-scripts]# vim ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR1=172.25.254.120
NETMASK1=255.255.255.0
DNS1=114.114.114.114
GATEWAY1=172.25.254.2
NAME=eth1
[root@localhost network-scripts]# nmcli connection reload
[root@localhost network-scripts]# nmcli connection up eth1
[root@localhost network-scripts]# nmcli connection show
[root@localhost ~]# vim /bin/vmset.sh
#!/bin/bash
cat >/etc/sysconfig/network-scripts/ifcfg-$1 <<EOF
DEVICE=$1
ONBOOT=yes
BOOTPROTO=none
IPADDR1=$2
NETMASK1=255.255.255.0
DNS1=114.114.114.114
GATEWAY1=172.25.254.2
NAME=$1
EOF
nmcli connection reload
nmcli connection up $1
[root@localhost ~]# chmod +x /bin/vmset.sh
[root@localhost ~]# vmset.sh eth1 172.25.254.254
网关
dns
ip
route -n
cat /etc/resolv.conf
/etc/hosts
五.进程管理
以下命令的所有列都要会:
ps aux
格式说明:
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态,linux的进程有5种状态:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
ps是显示当前状态处于running的进程,grep表示正则化搜索搜索,而ps aux是显示所有进程和其状态。
top
如果想对进程时间监控,应该用 top 工具。(top会1s一刷新)
第一行:是统计信息区。包括系统当前时间、系统运行时间、当前登录用户数、系统平均负载时长
第二行;是进程信息。包括进程总数、正在运行的进程数、睡眠的进程数、停止的进程数以及僵尸进程数
第三行:是cpu信息
包括us (user):用户进程占用 CPU 的比率、
sy (system): 内核、内核进程占用 CPU 的比率、
ni (nice): 用户进程空间内改变过优先级的进程占用 CPU 比率、
id (idle): CPU 空闲比率、
wa (iowait): CPU 等待执行 I/O 操作的时间比率、
hi (Hardware IRQ): CPU 处理硬件中断所占时间的比率、
si (Software Interrupts): CPU 处理软件中断所占时间的比率、
st (steal): 流逝的时间,虚拟机中的其他任务所占 CPU 时间的比率
第四行:内存占比信息。total 物理内存总量; free 空闲内存总量; used 使用的物理内存总量; buffers 用作内核缓存的内存量
第五行:交换内存信息。总的,可用的,已经使用过的
systemctl set-default 是 Linux 系统管理器systemd的一个命令,用于设置默认的运行级别或目标单元
systemctl multi-user.target是在 Linux 系统中使用systemd系统管理器来启动多用户模式的一种方式。在多用户模式下,系统通常提供图形用户界面(GUI)或命令行界面(CLI)供用户使用。
基本用法
要启动多用户模式,您可以使用以下命令:
systemctl start multi-user.target
Copy
这条命令会启动多用户模式,加载所有需要的服务,如网络、X11(对于图形界面)或终端服务(对于命令行界面)。
例子
假设您想在系统启动时自动进入多用户模式,您可以在/etc/systemd/system/default.target.wants/multi-user.target文件中添加一个链接到multi-user.target,或者在/etc/systemd/system.conf 文件中设置DefaultTarget-multi-user.target。这样,每次系统启动时,它将直接进入多用户模式。
杀掉进程
[root@localhost ~]# ps aux | grep mariadb
mysql 3058 0.0 2.7 1804288 94076 ? Ssl 21:47 0:00 /usr/libexec/mariadbd --basedir=/var/lib/mysql/
root 3381 0.0 0.0 22108 2312 pts/1 S+ 22:54 0:00 grep --color=auto mariadb
#-9强制删除,3058数据库进程
[root@localhost ~]# kill -9 3058
[root@localhost ~]# ps aux | grep mariadb
root 3394 0.0 0.0 22108 2300 pts/1 S+ 22:54 0:00 grep --color=auto mariadb
如果忘记了mysql密码的方法:
[root@localhost ~]# systemctl stop mariadb
[root@localhost ~]# mysqld_safe --skip-grant-tables&
[root@localhost ~]# mysql
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> alter user root@localhost identified by 'redhat';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> quit
Bye
[root@localhost ~]# killall -9 mysqld_safe
[1]+ Killed mysqld_safe --skip-grant-tables
[root@localhost ~]# ps aux | grep mariadb
mysql 3790 0.0 2.5 1672964 88256 pts/1 Sl 23:01 0:00 /usr/libexec/mariadbd --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mariadb/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mariadb/mariadb.log --pid-file=/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root 3835 0.0 0.0 22108 2376 pts/1 S+ 23:04 0:00 grep --color=auto mariadb
[root@localhost ~]# kill -9 3790
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mysql -u root -predhat
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.25-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
六.软件管理
本地软件仓库
#建立一个目录
[root@localhost ~]# mkdir /openeuler
#挂载镜像
[root@localhost ~]# mount /dev/sr0 /openeuler/
mount: /openeuler: WARNING: source write-protected, mounted read-only.
#开机自动挂载
[root@localhost ~]# vim /etc/rc.d/rc.local
#添加
mount /dev/sr0 /openeuler/
#给权限
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
[root@localhost ~]# reboot
[root@localhost ~]# df -h
#写仓库
#备份
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
openEuler.repo
[root@localhost yum.repos.d]# mv openEuler.repo openEuler.repo.bak
[root@localhost yum.repos.d]# vim openEuler.repo
[openEuler]
name=openEuler
baseurl=file:///openeuler
gpgcheck=0
[root@localhost yum.repos.d]# dnf makecache
如果不小心删除了ls
查找到软件包之后,安装
dnf isntall 软件包 -y
yum
install
groupinstall
whatprovides
search
remove
reinstall
--downloadonly
--dest=
rpm
-ivh
-qc
-qa
-ql
-qd
配置docker镜像
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim docker-ce.repo
[docker-ce]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
gpgcheck=0
#生成 YUM 缓存,测试仓库是否可用
[root@localhost yum.repos.d]# yum makecache
yum makecache更新和加载缓存的命令
这个时候就可以直接yum install安装了。
如果不直接安装,自己弄一个docker的本地仓库
#通过软件仓库下载软件但不安装
[root@localhost ~]# dnf install docker-ce --downloadonly --downloaddir=/mnt
[root@localhost yum.repos.d]# cd /mnt
[root@localhost mnt]# ls
containerd.io-1.7.19-3.1.el9.x86_64.rpm
container-selinux-2.138-5.oe2203sp4.noarch.rpm
docker-buildx-plugin-0.16.1-1.el9.x86_64.rpm
docker-ce-27.1.1-1.el9.x86_64.rpm
docker-ce-cli-27.1.1-1.el9.x86_64.rpm
docker-compose-plugin-2.29.1-1.el9.x86_64.rpm
[root@localhost mnt]# mv *.rpm docker
[root@localhost mnt]# cd docker/
#此目录只是一个存放rpm软件包的目录而不是软件仓库
[root@localhost docker]# ls
containerd.io-1.7.19-3.1.el9.x86_64.rpm
container-selinux-2.138-5.oe2203sp4.noarch.rpm
docker-buildx-plugin-0.16.1-1.el9.x86_64.rpm
docker-ce-27.1.1-1.el9.x86_64.rpm
docker-ce-cli-27.1.1-1.el9.x86_64.rpm
docker-compose-plugin-2.29.1-1.el9.x86_64.rpm
#查找createrepo软件包
[root@localhost docker]# dnf whatprovides */createrepo
Last metadata expiration check: 0:04:54 ago on 2024年08月01日 星期四 20时52分49秒.
createrepo_c-0.17.6-3.oe2203sp4.x86_64 : Creates a common metadata
: repository
Repo : openEuler
Matched from:
Filename : /usr/bin/createrep
#下载createrepo软件
[root@localhost docker]# dnf install createrepo_c-0.17.6-3.oe2203sp4.x86_64 -y
#扫描软件并生成软件仓库数据
[root@localhost docker]# createrepo -v /mnt/docker/
#配置docker仓库,改为本地仓库
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim docker-ce.repo
[docker-ce]
name=docker
baseurl=file:///mnt/docker
gpgcheck=0
[root@localhost yum.repos.d]# yum install docker -y
查找createrepo软件包
扫描软件并且生成软件的数据
配置docker仓库,改为本地仓库
七.日志管理
实验环境:systemctl stop firewalld
1.journald
服务名称:systemd-journald.service
journalctl
默认日志存放路径: /run/log
实验1 journalctl命令的用法
实验2 用journald服务永久存放日志
2.rsyslog
服务名称:rsyslog.service
实验1.自定义日志采集路径
小实验:
[root@node1 ~]# vim /etc/rsyslog.conf
*.*;authpriv.none /var/log/system.log
[root@node1 ~]# systemctl restart rsyslog
实验2.如何更改日志采集格式
1定义日志采集格式
$template WESTOS_FORMAT, "%FROMHOST-IP% %timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
#WESTOS_FORMAT: 格式名称
#%FROMHOST-IP%: 日志来源主机IP
#%timegenerated%: 日志生成时间
#%syslogtag%: 日志生成服务
#%msg%: 日志内容
#\n: 换行
$template WESTOS_FORMAT, "%FROMHOST-IP% %timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
#WESTOS_FORMAT: 格式名称
#%FROMHOST-IP%: 日志来源主机IP
#%timegenerated%: 日志生成时间
#%syslogtag%: 日志生成服务
#%msg%: 日志内容
#\n: 换行
自己定义日志的采集格式
[root@node2 ~]# vim /etc/rsyslog.conf
$template HAHA, "%FROMHOST-IP% \n"
...
*.info;mail.none;authpriv.none;cron.none /var/log/messages;HAHA
[root@node2 ~]# systemctl restart rsyslog.service
[root@node2 ~]# vim /etc/rsyslog.conf
[root@node2 ~]# tail -f /var/log/messages
Aug 3 21:02:31 node2 systemd-logind[897]: Session 3 logged out. Waiting for processes to exit.
Aug 3 21:02:31 node2 systemd-logind[897]: Removed session 3.
127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1
127.0.0.1
127.0.0.1
127.0.0.1
127.0.0.1
127.0.0.1
127.0.0.1
127.0.0.1
[root@node2 ~]# vim /etc/rsyslog.conf
$template HAHA, "%FROMHOST-IP% %timegenerated%\n"
...
*.info;mail.none;authpriv.none;cron.none /var/log/messages;HAHA
[root@node2 ~]# systemctl restart rsyslog.service
[root@node2 ~]# tail -f /var/log/messages
172.25.254.100
172.25.254.100
127.0.0.1 Aug 3 21:08:45
127.0.0.1 Aug 3 21:08:46
127.0.0.1 Aug 3 21:08:46
127.0.0.1 Aug 3 21:08:46
127.0.0.1 Aug 3 21:08:46
127.0.0.1 Aug 3 21:08:46
127.0.0.1 Aug 3 21:08:46
127.0.0.1 Aug 3 21:08:46
[root@node2 ~]# vim /etc/rsyslog.conf
$template HAHA, "%FROMHOST-IP% %timegenerated% %syslogtag% \n"
...
*.info;mail.none;authpriv.none;cron.none /var/log/messages;HAHA
[root@node2 ~]# systemctl restart rsyslog.service
[root@node2 ~]# tail -f /var/log/messages
127.0.0.1 Aug 3 21:08:46
127.0.0.1 Aug 3 21:08:46
127.0.0.1 Aug 3 21:10:07 systemd[1]:
127.0.0.1 Aug 3 21:10:07 rsyslogd[2261]:
127.0.0.1 Aug 3 21:10:07 systemd[1]:
127.0.0.1 Aug 3 21:10:07 systemd[1]:
127.0.0.1 Aug 3 21:10:07 systemd[1]:
127.0.0.1 Aug 3 21:10:07 rsyslogd[2272]:
127.0.0.1 Aug 3 21:10:07 systemd[1]:
127.0.0.1 Aug 3 21:10:07 rsyslogd[2272]:
[root@node2 ~]# vim /etc/rsyslog.conf
$template HAHA, "%FROMHOST-IP% %timegenerated% %syslogtag% %msg% \n"
...
*.info;mail.none;authpriv.none;cron.none /var/log/messages;HAHA
[root@node2 ~]# systemctl restart rsyslog.service
[root@node2 ~]# tail -f /var/log/messages
127.0.0.1 Aug 3 21:10:07 systemd[1]:
127.0.0.1 Aug 3 21:10:07 rsyslogd[2272]:
127.0.0.1 Aug 3 21:11:20 systemd[1]: Stopping System Logging Service...
127.0.0.1 Aug 3 21:11:20 rsyslogd[2272]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="2272" x-info="https://www.rsyslog.com"] exiting on signal 15.
127.0.0.1 Aug 3 21:11:20 systemd[1]: rsyslog.service: Deactivated successfully.
127.0.0.1 Aug 3 21:11:20 systemd[1]: Stopped System Logging Service.
127.0.0.1 Aug 3 21:11:20 systemd[1]: Starting System Logging Service...
127.0.0.1 Aug 3 21:11:20 systemd[1]: Started System Logging Service.
127.0.0.1 Aug 3 21:11:20 rsyslogd[2285]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="2285" x-info="https://www.rsyslog.com"] start
127.0.0.1 Aug 3 21:11:20 rsyslogd[2285]: imjournal: journal files changed, reloading... [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ]
将自己定义的格式设置为默认格式
[root@node2 ~]# vim /etc/rsyslog.conf
# Use default timestamp format
#module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
module(load="builtin:omfile" Template="HAHA")
$template HAHA, "%FROMHOST-IP% %timegenerated% %syslogtag% %msg% \n"
[root@node2 ~]# systemctl restart rsyslog.service
[root@node2 ~]# tail -f /var/log/messages
127.0.0.1 Aug 3 21:11:20 rsyslogd[2285]: imjournal: journal files changed, reloading... [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ]
172.25.254.100 Aug 3 21:13:20 systemd[1]: packagekit.service: Deactivated successfully.
127.0.0.1 Aug 3 21:15:28 systemd[1]: Stopping System Logging Service...
127.0.0.1 Aug 3 21:15:28 rsyslogd[2285]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="2285" x-info="https://www.rsyslog.com"] exiting on signal 15.
127.0.0.1 Aug 3 21:15:28 systemd[1]: rsyslog.service: Deactivated successfully.
127.0.0.1 Aug 3 21:15:28 systemd[1]: Stopped System Logging Service.
127.0.0.1 Aug 3 21:15:29 systemd[1]: Starting System Logging Service...
127.0.0.1 Aug 3 21:15:29 rsyslogd[2297]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="2297" x-info="https://www.rsyslog.com"] start
127.0.0.1 Aug 3 21:15:29 systemd[1]: Started System Logging Service.
127.0.0.1 Aug 3 21:15:29 rsyslogd[2297]: imjournal: journal files changed, reloading... [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ]
-表示日志时时采集,没有的话会生成完再同步
实验3.日志的远程同步
实验:收集日志
日志发送方:(172.25.254.100)
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# vim /etc/rsyslog.conf
*.* @172.25.254.200
[root@node1 ~]#systemctl restart rsyslog.service
#等日志接收方配好之后运行
[root@node1 ~]# logger haahahah
日志接受方:(172.25.254.200)
[root@node2 ~]# systemctl stop firewalld
[root@node2 ~]# vim /etc/rsyslog.conf
#打开
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
[root@node2 ~]# systemctl restart rsyslog.service
#清空日志
[root@node2 ~]# > /var/log/messages
#查看日志
[root@node2 ~]# tail -f /var/log/messages
Aug 3 20:19:02 node1 root[2397]: haahahah
测试日志:
3.timedatectl
timedatectl set-time "2020-02-13 10:41:55" ##设定系统时间
timedatectl list-timezones ##显示系统的所有时区
timedatectl set-timezone "Asia/Shanghai" ##设定系统时区
timedatectl set-local-rtc 0|1 ##设定系统时间计算方式
##0表示使用utc时间计算方式
4.时间同步服务
#服务名称: chronyd.service
#配置文件: /etc/chrony.conf
在rhel7作为时间源rhel8同步rhel7时间
#在time_server中
vim /etc/chrony.conf
26 allow 172.25.254.0/24 ##允许172.25.254.0网段主机同步时间
29 local stratum 10 ##开启时间同步服务器功能并设定级别为10
systemctl restart chronyd.service
systemctl stop firewalld
在time_clinet中
vim /etc/chrony.conf
pool 172.25.254.100 iburst
systemctl restart chronyd
[root@rhel8_node1 ~]# chronyc sources -v
八.web服务器基础
九.DNS服务器
查看dns的访问顺序的文件
#查看dns的访问顺序的文件
[root@node1 ~]# vim /etc/nsswitch.conf
先看hosts(本地解析)(/etc/hosts)的,再看dns
配置正向解析
[root@node2 ~]# dnf install bind -y
#更改子配置文件
[root@node2 ~]# vim /etc/named.rfc1912.zones
#添加
zone "timinglee.org" IN {
type master;
file "timinglee.org.zone";
allow-update { none; };
};
#更改主配置文件
[root@node2 ~]# vim /etc/named.conf
#更改
listen-on port 53 { any; };
...
allow-query { any; };
...
dnssec-validation no;
#配置正向解析文件
[root@node2 ~]# cd /var/named
[root@node2 named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback
[root@node2 named]# cp -p named.localhost timinglee.org.zone
[root@node2 named]# vim timinglee.org.zone
$TTL 1D
@ IN SOA ns.timinglee.org. root.timinglee.org. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.timinglee.org.
ns A 172.25.254.200
node2 A 172.25.254.200
node1 A 172.25.254.100
#重启服务
[root@node2 named]# systemctl restart named
#测试
[root@node2 named]# dig node1.timinglee.org @172.25.254.200
; <<>> DiG 9.16.23-RH <<>> node1.timinglee.org @172.25.254.200
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2902
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 3e46dab94aa0de790100000066ae378e477c0873ed8eeab5 (good)
;; QUESTION SECTION:
;node1.timinglee.org. IN A
;; ANSWER SECTION:
node1.timinglee.org. 86400 IN A 172.25.254.100
;; Query time: 3 msec
;; SERVER: 172.25.254.200#53(172.25.254.200)
;; WHEN: Sat Aug 03 21:58:38 CST 2024
;; MSG SIZE rcvd: 92
dns服务器部署
1.关于dns的名词解释
dns:
domain name service(域名解析服务)
关于客户端
[root@node1 ~]# vim /etc/resolv.conf
nameserver 172.25.254.20
测试:
host www.baidu.com ##地址解析命令
dig www.baidu.com ##地址详细解析信息命令
A记录 ##ip地址叫做域名的Address 记录
SOA ##授权起始主机
dns顶级
. 13
次级
.com .net .edu .org ....
baidu.com
关于服务端
bind ##安装包
named ##服务名称
/etc/named.conf ##主配置文件
/var/named ##数据目录
端口 ##53
关于报错信息:
1.no servers could be reached ##服务无法访问(服务开启?火墙?网络?端口?)
2.服务启动失败 ##配置文件写错 journalctl -xe查询错误
3.dig 查询状态
NOERROR ##表示查询成功
REFUSED ##服务拒绝访问
SERVFAIL ##查询记录失败,(dns服务器无法到达上级,拒绝缓存)
NXDOMAIN ##此域名A记录在dns中不存在
2.dns服务的安装与启用
安装
[root@node1 ~]# dnf install bind -y
启用
[root@node1 ~]# systemctl enable --now named
[root@node1 ~]# firewall-cmd --permanent --add-service=dns
[root@node1 ~]# firewall-cmd --reload
[root@node1 ~]# vim /etc/named.conf
11 listen-on port 53 { any; }; ##在本地所有网络接口上开启53端口
19 allow-query { any; }; ##允许查询A记录的客户端列表
34 dnssec-validation no; ##禁用dns检测使dns能够缓存外部信息到本纪
[root@node1 ~]# systemctl restart named
3.高速缓存dns
20 forwarders { 114.114.114.114; };
4.dns的正向解析
[root@node1 ~]# vim /etc/named.rfc1912.zone
zone "westos.com" IN { ##维护的域名
type master; ##当前服务器位主dns
file "westos.com.zone"; ##域名A记录文件
allow-update { none; }; ##允许更新主机列表
};
[root@node1 ~]# cd /var/named/
[root@node1 ~]# cp -p named.localhost westos.com.zone
$TTL 1D #TIME-TO-LIVE(dns地址保存时间长度)
@ IN SOA dns.westos.com. root.westos.com ( #SOA授权起始(Start of Authority)
0 ; serial #域名版本序列号
1D ; refresh #刷新时间(辅助dns)
1H ; retry #重试时间(辅助dns)
1W ; expire #过期时间(辅助dns,查询失败过期停止对辅助域名的应答)
3H ) ; minimum #A记录最短有效期
NS dns.westos.com.
dns A 192.168.0.20
www CNAME westos.a.westos.com. ##规范域名
westos.a A 192.168.0.111 ##正向解析记录
westos.a A 192.168.0.112
westos.com. MX 1 192.168.0.20. ##邮件解析记录
[root@node1 ~]# systemctl restart named
[root@node1 ~]# dig www.westos.com #查询正向解析
[root@node1 ~]# dig -t mx westos.com #邮件解析记录查询
5.dns的反向解析
[root@node1 ~]# vim /etc/named.rfc1912.zones
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.ptr";
allow-update { none; };
};
[root@node1 ~]# cd /var/named/
[root@node1 ~]# cp -p named.loopback 192.168.0.ptr
[root@node1 ~]# vim 192.168.0.ptr
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 192.168.0.20
11 PTR www.westos.com.
12 PTR bbs.westos.com.
13 PTR news.westos.com.
[root@node1 ~]# systemctl restart named
测试:
[root@node1 ~]# dig -x 192.168.0.11
6.dns的双向解析
实验环境:
客户端2台
192.168.0网段
172.25.254网段 ##ifconfig ens160 172.25.254.30 netmask 255.255.255.0
服务端1台2个网段的ip
192.168.0.20
172.25.254.20 ##ifconfig ens160 172.25.254.20 netmask 255.255.255.0
在192.168.0网段的客户主机中
vim /etc/resolv.conf
nameserver 192.168.0.20
在172.25.254网段的客户主机中
vim /etc/resolv.conf
nameserver 172.25.254.20
配置方式:
[root@node1 ~]#cd /var/named/
[root@node1 ~]#cp -p westos.com.zone westos.com.inter
[root@node1 ~]#vim westos.com.inter
$TTL 1D@ IN SOA dns.westos.com. root.westos.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.20
www CNAME westos.a.westos.com.
westos.a A 172.25.254.111
westos.a A 172.25.254.112
westos.com. MX 1 172.25.254.20 #mail exchanger
[root@node1 ~]#cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inters
[root@node1 ~]#vim /etc/named.rfc1912.inters
zone "westos.com" IN {
type master;
file "westos.com.inter";
allow-update { none; };
};
[root@node1 ~]#vim /etc/named.conf
#zone "." IN {
## type hint;
## file "named.ca";
##};
#
##include "/etc/named.rfc1912.zones";
##include "/etc/named.root.key";
view localnet {
match-clients { 192.168.0.0/24; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
view internet {
match-clients { any; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.inters";
include "/etc/named.root.key";
};
[root@node1 ~]#systemctl restart named
测试:
分别在2个网段的主机中作同样域名的地址解析
得到的A记录不同
十.数据库基础
数据库需要的操作:软件仓库搭建完成
安装mariadb
[root@localhost ~]# yum install mariadb-server -y
由于前面安装了docker有的selinux有冲突无法安装mariadb,解决方法:
[root@localhost yum.repos.d]# rpm -qa | grep selinux
libselinux-3.3-6.oe2203sp4.x86_64
libselinux-devel-3.3-6.oe2203sp4.x86_64
python3-libselinux-3.3-6.oe2203sp4.x86_64
selinux-policy-35.5-22.oe2203sp4.noarch
selinux-policy-targeted-35.5-22.oe2203sp4.noarch
[root@localhost yum.repos.d]# rpm -e selinux-policy-targeted-35.5-22.oe2203sp4.noarch --nodeps
[root@localhost yum.repos.d]# rpm -e selinux-policy-35.5-22.oe2203sp4.noarch --nodeps
安全初始化
#启动mariadb
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.25-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> quit
Bye
#安全初始化
[root@localhost ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none): #输入当前数据库免密,没有就直接回车
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n #是否使用sock访问
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] y #是否要设定密码
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y #是否删除匿名用户
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y #是否禁止root用户远程登录
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y #是否要删除测试库
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y #是否要重新加载特权表
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
#更改密码
[root@localhost ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.5.25-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> alter user root@localhost identified by 'lee';
Query OK, 0 rows affected (0.001 sec)
改密码
alter user 'root'@'localhost' identified with mysql_native_password by 'redhat';
create database if not exists bbs;
update mysql.user set host="%" where mysql.user.User="root";
建立用户使用户远程登录
[root@localhost ~]# mysql -u root -plee
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 10.5.25-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
#创建一个可以远程访问的用户,%是让处理本地的主机
MariaDB [(none)]> CREATE USER lee@'%' identified by 'lee';
Query OK, 0 rows affected (0.001 sec)
#创建bbs数据库
MariaDB [(none)]> CREATE DATABASE bbs;
Query OK, 1 row affected (0.000 sec)
#让bbs数据库可以让任何人访问
MariaDB [(none)]> GRANT ALL ON bbs.* TO lee@'%';
Query OK, 0 rows affected (0.001 sec)
#查看lee的权限
MariaDB [(none)]> SHOW GRANTS FOR lee@'%';
+----------------------------------------------------------------------------------------------------+
| Grants for lee@% |
+----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `lee`@`%` IDENTIFIED BY PASSWORD '*9BB439A3A652A9DAD3718215F77A7AA06108A267' |
| GRANT ALL PRIVILEGES ON `bbs`.* TO `lee`@`%` |
+----------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)
MariaDB [(none)]> exit
Bye
#测试,root无法远程访问,lee可以
[root@localhost ~]# mysql -u root -plee -h 172.25.254.130
ERROR 1045 (28000): Access denied for user 'root'@'172.25.254.130' (using password: YES)
[root@localhost ~]# mysql -u lee -plee -h 172.25.254.130
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.5.25-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>