2023-12-20
服务器
firewalld、safe-rm
751

一、safe-rm

1.下载安装
safe-rm 从 1.0.0 版本时用 Rust 重写,使用 0.13 版本即可
下载地址:https://launchpad.net/safe-rm
mkdir -p /usr/local/download
cd /usr/local/download

wget https://launchpadlibrarian.net/496451091/safe-rm-0.13.tar.gz

tar -zxvf safe-rm-0.13.tar.gz
cd safe-rm-0.13/

# 复制命令,注意:路径 /usr/local/bin,不是 /usr/bin
cp /usr/local/download/safe-rm-0.13/safe-rm /usr/local/bin/rm
chown root:root /usr/local/bin/rm
2.配置环境变量
vim /etc/profile

export PATH=/usr/local/bin:/bin:/usr/bin:$PATH

source /etc/profile
3.创建配置文件
vim /etc/safe-rm.conf

# 设置不能删除的目录名单,"cd /" 查看根目录下所有目录
# /bin、/lib、/lib64、/sbin 追加实际地址 /usr/bin、/usr/lib、/usr/lib64、/usr/sbin
# /tmp 临时文件夹可以不加入过滤名单,系统可能会定时清空该目录
/
/*
/bin  
/boot   
/dev  
/etc  
/home  
/lib  
/lib64  
/lost+found  
/media  
/mnt  
/opt  
/proc  
/root  
/run  
/sbin  
/srv  
/sys  
/usr
/usr/bin
/usr/lib
/usr/lib64
/usr/sbin  
/var

/www
/www/log
/www/shell
/www/web
/www/test.txt # 测试文件,测试完成后删除

/mnt/www 
/mnt/www/web

# 注意:配置完成后,切记不要使用 "rm -rf /" 和 "rm -rf /*" 命令测试,因为 /usr/bin 目录依然被删除了,只能重装系统,请使用普通目录测试,切记!!!

二、基础设置

1.修改 hostname
hostname # 查看 hostname
hostnamectl
hostnamectl set-hostname jdzor-prod # 将 hostname 修改为jdzor-prod,方便记忆
2.设置时间
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 同步北京时间

date # 查看当前时间
3.添加 swap 空间
dd if=/dev/zero of=/opt/swap bs=1024 count=2048000
mkswap /opt/swap && swapon /opt/swap && chmod 600 /opt/swap
echo '/opt/swap swap swap default 0 0' >> /etc/fstab
mount -a

free -h # 查看内存
4.安装环境
yum repolist # 查看所有安装的源
cd /etc/yum.repos.d/
yum clean cache # 清空yum缓存

# 错误:rpmdb: BDB0113 Thread/process 11147/140311686768704 failed: BDB1507 Thread died in ...
# 错误:db5 错误(-30973) 来自 dbenv->failchk:BDB0087 DB_RUNRECOVERY: Fatal error, run database ...
cd /var/lib/rpm
ls
rm -rf __db*
rpm --rebuilddb

# 如果系统已经安装了其他版本 mysql-libs 包和 mysql 数据库文件导致不兼容
yum list installed mysql*  
yum remove mysql-libs 

# 安装依赖包
yum install -y vim gcc gcc-c++ autoconf rpm-build libffi-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxslt libxslt-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel openldap-clients openldap-servers gcc libtool  boost-devel* gperf libevent-devel* libuuid-devel libzip libzip-devel glibc-devel.i686 intltool python-devel

yum install -y screen tree lrzsz zip unzip bind-utils

# 项目目录
mkdir /www
cd /www
mkdir log web shell

cd /www/log
mkdir mysql nginx php redis

groupadd mysql
useradd -r -g mysql mysql
groupadd nginx
useradd -r -g nginx nginx
groupadd redis
useradd -r -g redis redis

chown -R mysql:mysql mysql
chown -R nginx:nginx nginx
chown -R nginx:nginx php
chown -R redis:redis redis

cd /www/shell
mkdir backup data

三、防火墙 Firewalld

1.查看、设置状态
systemctl status firewalld # 查看防火墙状态,显示 running 表示已开启 
systemctl start firewalld # 开启防火墙
systemctl stop firewalld # 关闭防火墙

chkconfig firewalld on # 开机启动
2.查看、设置端口
firewall-cmd --zone=public --list-ports # 查看所有打开的端口
firewall-cmd --permanent --query-port=80/tcp # 检查端口是否开启
firewall-cmd --permanent --zone=public --add-port=80/tcp # 添加端口
firewall-cmd --permanent --zone=public --remove-port=80/tcp # 删除端口
firewall-cmd --reload # 重新读取配置

四、用户管理

1.添加用户
useradd -d /www/web/project-demo jdzor # 添加用户并指定主目录
useradd -m jdzor # 添加用户并创建家目录
passwd jdzor # 设置密码

cat /etc/passwd # 查看所有用户信息
usermod -d /www/web/xxx # 更改主目录
userdel -r jdzor # 删除用户并删除家目录
2.添加用户组
groupadd jdzor_group # 添加组
groupdel jdzor_group # 删除组
usermod -g jdzor_group jdzor # jdzor 用户添加组
3.普通用户 sudo 权限
3.1 开启文件写权限
chmod 600 /etc/sudoers 
3.2 sudoers 文件配置
vim /etc/sudoers

# 找到这行 root ALL=(ALL) ALL,在下面添加:
root    ALL=(ALL)       ALL
nginx   ALL=(ALL)       ALL
%nginx  ALL=(ALL)       NOPASSWD: ALL

# 示例
xxx    ALL=(ALL)   ALL # 允许用户执行 sudo 命令(需要输入密码)
%xxx   ALL=(ALL)   ALL # 允许用户组的用户执行 sudo 命令(需要输入密码)
xxx    ALL=(ALL)   NOPASSWD: ALL # 允许用户执行 sudo 命令(不需要输入密码)
%xxx   ALL=(ALL)   NOPASSWD: ALL # 允许用户组的用户执行 sudo 命令(不需要输入密码)
3.3 撤销文件写权限
chmod 400 /etc/sudoers 
4.jdzor 账户登录
sudo su root # 输入 jdzor 用户密码后,切换到 root 用户
su - # 输入 root 用户密码,以 root 身份登录然后再运行别的操作
su # 切换到 root,以 non-login shell 登录,命令都仅仅能用绝对路径来运行
su -c # 执行一次命令后切回自己身份

# su 命令是转换成 root 用户,回车后会要求输入 root 密码。转换用户之后,除非退出,否则就是在用 root 身份操作。
# sudo 命令是使用 root 用户某个权限来执行某个命令。回车后输入当前用户自己的密码。而且执行完命令前后用户还是没有改变。