linux系统最小化安装后的初始化脚本

作为运维人员,经常会初始化系统,系统在安装过程中基本都会选择最小化安装,这样安装好的系统里会缺少很多环境。

下面分享一个系统安装后的初始化脚本:

#!/bin/bash

#系统时最小化安装的,这里要安装系统的软件库
yum groupinstall -y "development tools"

#创建目录
[ ! -d /server/tools ] && mkdir -p /server/tools
[ ! -d /application ] && mkdir -p /application
[ ! -d /data ] && mkdir -p /data
[ ! -d /app/logs ] && mkdir -p /app/logs
[ ! -d /server/backup ] && mkdir -p /server/backup
[ ! -d /delete ] && mkdir -p /delete

#创建普通用户并设置密码
#for USERNAME in gladiator cgt zm
#do
# id $USERNAME >/dev/null 2>&1 && echo "user $USERNAME exists,only change password" || useradd $USERNAME
# echo "123456"|passwd $USERNAME --stdin
# id $USERNAME && action "add user" /bin/true || action "add user" /bin/false
#设置sudo权限管理,给管理员权限
#*******修改任何配置文件前先备份********
# /bin/cp /etc/sudoers /etc/sudoers.bak
# echo "$USERNAME ALL=(ALL) ALL" >> /etc/sudoers
# [ `grep $USERNAME /etc/sudoers|wc -l` -ne 0 ] && action "sudo set" /bin/true || action "sudo set" /bin/false
#done

#每周六凌晨1点0分更新服务器系统时间
echo "############### auto update time ###############" >> /var/spool/cron/root
echo "00 01 * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1" >> /var/spool/cron/root
[ `grep ntpdate /var/spool/cron/root |wc -l` -ne 0 ] && action "uptime set" /bin/true || action "uptime set" /bin/false

#配置yum源
wget -P /etc/yum.repos.d/ http://mirrors.163.com/.help/CentOS6-Base-163.repo #下载配置文件
/bin/mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
/bin/cp /etc/yum.repos.d/CentOS6-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
[ `grep 163.com /etc/yum.repos.d/CentOS-Base.repo | wc -l` -ne 0 ] && action "yum set" /bin/true || action "yum set" /bin/false

#关闭SELINUX及iptables
/bin/cp /etc/selinux/config /etc/selinux/config.bak
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config 2>&1
/etc/init.d/iptables stop >/dev/null
chkconfig iptables off >/dev/null
[ `chkconfig --list |grep iptables|grep 3:on|wc -l` -eq 0 -a `grep "SELINUX=enforcing" /etc/selinux/config|wc -l` -eq 0 ] && action "iptables and selinux close" /bin/true || action "iptables and selinux close" /bin/false

#调整文件描述符数量
/bin/cp /etc/security/limits.conf /etc/security/limits.conf.bak
echo ‘* - nofile 65535‘>>/etc/security/limits.conf
[ `tail -1 /etc/security/limits.conf|grep 65535|wc -l` -eq 1 ] && action "limit set" /bin/true || action "limit set" /bin/false

#更改字符集
#/bin/cp /etc/sysconfig/i18n /etc/sysconfig/i18n.bak
#echo ‘LANG="en_US.UTF-8"‘ >/etc/sysconfig/i18n

#定时清理/var/spool/clientmqueue/目录下的垃圾文件,防止inodes节点被占满
##创建脚本目录
[ ! -d /server/scripts ] && mkdir -p /server/scripts
if [ `rpm -qa sendmail |wc -l` -ne 0 ];then
##创建查找删除脚本
echo >/server/scripts/del.sh<<EOF
\#!/bin/bash
find /var/spool/clientmqueue/ -type f|xargs rm -f >/dev/null 2>&1
EOF
##添加到定时任务,每周一凌晨0点0分执行
echo ‘################ clean /var/spool/clientmqueue/ ################‘ >>/var/spool/cron/root
echo ‘00 00 * * 1 /bin/sh /server/scripts/del.sh >/dev/null 2>&1‘ >>/var/spool/cron/root
[ "$?" -eq 0 ] && action "clean /var/spool/clientmqueue/ set" /bin/true || action "clean /var/spool/clientmqueue/ set" /bin/false
else
action "service sendmail is not installed,do not need set" /bin/false
fi

#精简开机自启动服务(只启动crond,sshd,network,syslog)
##筛选出所有在运行级别3自启动的服务并关闭自启动
for cgt in `chkconfig --list | grep 3:on | awk ‘{print $1}‘`;do chkconfig --level 3 $cgt off;done
##仅设置crond,sshd,network,syslog自启动
for cgt in {crond,sshd,network,rsyslog};do chkconfig --level 3 $cgt on;done
flag=0
[ `chkconfig --list|grep 3:on|wc -l` -eq 4 ] && action "auto_start services set" /bin/true || action "auto_start services set" /bin/false

#内核参数优化
[ -f /etc/sysctl.conf.bak ] && /bin/cp /etc/sysctl.conf.bak /etc/sysctl.conf.bak.$(date +%F-%H%M%S) ||/bin/cp /etc/sysctl.conf /etc/sysctl.conf.bak
cat >> /etc/sysctl.conf <<EOF
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
#net.ipv4.ip_conntrack_max = 25000000
#net.ipv4.netfilter.ip_conntrack_max=25000000
#net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
#net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
#net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
#net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120
#net.netfilter.nf_conntrack_max = 25000000
#net.netfilter.nf_conntrack_tcp_timeout_established = 180
#net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
#net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
#net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120‘
EOF
sysctl -p >/dev/null 2>&1
[ `grep "net.ipv4.tcp_max_orphans = 16384" /etc/sysctl.conf|wc -l` -ne 0 ] && action "kernel set" /bin/true || action "kernel set" /bin/false

#更改默认的ssh服务端口,禁止root用户远程连接,禁止空密码连接
/bin/cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
#sed -i ‘s/\#Port 22/Port 52113/‘ /etc/ssh/sshd_config
sed -i ‘s/\#PermitRootLogin yes/PermitRootLogin no/‘ /etc/ssh/sshd_config
sed -i ‘s/\#PermitEmptyPasswords no/PermitEmptyPasswords no/‘ /etc/ssh/sshd_config
sed -i ‘s/\#UseDNS yes/UseDNS no/‘ /etc/ssh/sshd_config
#[ `grep "Port 52113" /etc/ssh/sshd_config |wc -l` -ne 0 -a `grep "PermitRootLogin no" /etc/ssh/sshd_config|wc -l` -ne 0 -a `grep "PermitEmptyPasswords no" /etc/ssh/sshd_config|wc -l` -ne 0 -a `grep "UseDNS no" /etc/ssh/sshd_config|wc -l` -ne 0 ] &&action "ssh set" /bin/true || action "ssh set" /bin/false
[ `grep "PermitRootLogin no" /etc/ssh/sshd_config|wc -l` -ne 0 -a `grep "PermitEmptyPasswords no" /etc/ssh/sshd_config|wc -l` -ne 0 -a `grep "UseDNS no" /etc/ssh/sshd_config|wc -l` -ne 0 ] &&action "ssh set" /bin/true || action "ssh set" /bin/false

#锁定关键系统文件
#chattr +i /etc/passwd
#chattr +i /etc/shadow
#chattr +i /etc/group
#chattr +i /etc/gshadow
#chattr +i /etc/inittab

#清空/etc/issue,去除系统及内核版本登陆前的屏幕显示
/bin/cp /etc/issue /etc/issue.bak
>/etc/issue
[ `cat /etc/issue|wc -l` -eq 0 ] && action "/etc/issue set" /bin/true || action "/etc/issue set" /bin/false

时间: 2024-10-20 07:09:20

linux系统最小化安装后的初始化脚本的相关文章

Linux系统最小化安装

Linux系统最小化安装详解 1.使用U盘镜像引导或者使用光驱加载光盘引导 图1-1 选择Install or upgrade an existing system Install or upgrade an existing system #安装或升级现有的系统install system with basic video driver #安装过程中采用 基本的显卡驱动,安装的时候只用到基本的图形功能,一般显卡都支持的模式Rescue installed system #进入系统修复模式(忘记

Linux系统——最小化安装

一.虚拟机进行Linux minimal 安装 网络连接:选择"自定义"-->VMnet8(NAT模式) #PC与NAT网络的虚拟机在不同网段,此时虚拟网卡作为网关建立通信 NAT模式可直接上Internet:NAT模式下先将数据包发给主机,再有主机发给Internet(通过主机中转) 二.编辑配置文件配置网络 配置网卡 #ifconfig#ip link#ifconfig eth0 up ======此时#ip link 中显示state为up 配置IP地址 #vi /etc/

Linux系统最小化安装之后的系统基础环境安装以及内核优化脚本

1 #!/bin/bash 2 #添加epel和rpmforge的外部yum扩展源 3 cd /usr/local/src 4 wget http://mirrors.ustc.edu.cn/fedora/epel//5/x86_64/epel-release-5-4.noarch.rpm 5 rpm -ivh epel-release-5-4.noarch.rpm 6 wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.

【Linux】CentOS6.X最小化安装后配置

1.centos6.5最小化安装后启动网卡2.ifconfig查询IP进行SSH链接3.更新系统源并且升级系统4.系统时间更新和设定定时任5.修改ip地址.网关.主机名.DNS6.关闭selinux,清空iptables7.创建普通用户并进行sudo授权管理8.修改SSH端口号和屏蔽root账号远程登陆9.锁定关键文件系统(禁止非授权用户获得权限)10.精简开机自启动服务11.调整系统文件描述符大小12.设置系统字符集13.清理登陆的时候显示的系统及内核版本14.内核参数优化15.定时清理/va

Linux 最小化安装后IP的配置(手动获取静态IP地址)

一.图形化界面配置(假设为电脑A) 如果你的Linux安装有图形化界面,那么通过以下方式来配置: 我这里是有两块网卡,第一个网卡在上篇中已经通过DHCP来配置了:Linux 最小化安装后IP的配置(DHCP获取IP地址) 第一块王卡: 看一下配置2: 另外一块网卡打算使用手动获取 看一下配置1:  二.如果你的Linux是最小安装请看下面的配置(电脑B) 也是两块网卡,第一块网卡同样是DHCP获取IP,在上篇中已经通过DHCP来配置了:Linux 最小化安装后IP的配置(DHCP获取IP地址),

Centos 6.4 x86_64 最小化安装后的优化

Centos 6.4 x86_64 最小化安装后的优化 购买了服务器以后要做的第一件事就是安装操作系统了,这里推荐安装 Centos 6.4 x86_64,安装系统时要选择最小化安装(不需要图形),在使用服务器时要记住一个原则,系统安装的应用程序包越少,服务器就会越稳定.至于服务器单机性能调优,应本着稳定安全的原则,尽量不要改动系统原有的配置(Cetnos系统自身的文件和内存机制就很优秀),以下配置优化部分也适合Amazon Linux系统,大家可以对比参考. 系统的基础优化 1.更新yum官方

生产服务器环境最小化安装后 Centos 6.5优化配置备忘

本文 centos 6.5 优化 的项有18处: 1.centos6.5最小化安装后启动网卡 2.解决SSH远程链接访问慢优化 3.更新系统源并且升级系统 4.系统时间更新和设定定时任 5.修改ip地址.网关.主机名.DNS 6.关闭selinux,清空iptables 7.创建普通用户并进行sudo授权管理 8.修改SSH端口号和屏蔽root账号远程登陆 9.锁定关键文件系统(禁止非授权用户获得权限) 10.精简开机自启动服务 11.调整系统文件描述符大小 12.设置系统字符集 13.清理登陆

CentOS-6.5-x86_64 最小化安装后,怎样安装 man 程序?

CentOS-6.5-x86_64 最小化安装后.怎样安装man 程序? CentOS-6.5-x86_64 最小化安装后,没有man 程序,没它还真的不方便. man 是 manual(手冊)的意思. Linux 系统下的命令的參数一般都非常多,想要都记住是不可能的.仅仅要记住经常使用的一些即可了.其他的就靠 man 程序了. 使用以下的方法安装: yum install man

CentOS6.8及7最小化安装后无法直接安装vmtools问题

    问题发生背景: 近期因为学习需要使用CentOS-6.8与CentOS-7系统,因此最小化安装系统后例常进行vmtools的安装,然而竟然报错,报错内容如下 ./vmware-install.pl bash:./vmware-install.pl :/usr/bin/perl:bad interpreter:No such file or directory. 这是什么鬼,最为菜鸟的我第一眼就看懵了,之前都没发生过,怎么这次就出现意外了? 于是上网查找问题所在.     问题的搜索与解决