1. 程式人生 > >一鍵linux系統初始化指令碼

一鍵linux系統初始化指令碼

一、前言
一般我們在安裝新的系統時,系統的一些預設配置對我們來說是不行的,所以我們要自定義初始化系統。

二、需求
1)設定時區並把同步時間加入計劃任務
2)禁用selinux
3)清空原防火牆預設策略只保留ssh
4)歷史命令顯示操作時間級使用者
5)建立ALL許可權使用者並禁止root遠端登入
6)禁止定時任務傳送郵件
7)設定最大開啟檔案數
8)減少swap使用
9)系統核心引數優化
10)安裝系統性能分析工具及其他常常用工具
注意:安裝新系統最好最小化安裝。

三、指令碼正文
#!/bin/bash

#設定時區並同步時間
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
if ! crontab -l |grep ntpdate &>/dev/null ; then
(echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>&1";crontab -l) |crontab
fi

#禁用selinux
sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config

#安裝命令補全包
yum install -y epel-release &>/dev/null 2>&1
yum install -y bash-completion &>/dev/null 2>&1

#清空firewall防火牆原來所有的規則,只保留ssh
cd /etc/firewalld/zones/
echo "" > public.xml
cat >> public.xml << EOF
<zone>
<short>Public</short>
<service name="ssh"/>
</zone>
EOF
firewall-cmd --reload >/dev/null 2>&1

#歷史命令顯示操作時間
if ! grep HISTTIMEFORMAT /etc/bashrc; then
echo 'export HISTTIMEFORMAT="%F %T whoami "' >> /etc/bashrc
fi

#SSH超時時間
if ! grep "TMOUT=600" /etc/profile &>/dev/null; then
echo "export TMOUT=600" >> /etc/profile
fi

#新增一個同root一樣的超級使用者,並禁止root遠端登入
NEW_USER=admin
useradd $NEW_USER
echo 123456 |passwd --stdin $NEW_USER
#NEW_USER_ID=`cat /etc/passwd | grep $NEW_USER | awk -F ":" '{print $3}'`
#CHANGE=\$s/$NEW_USER_ID/0/
#sed -i "$CHANGE" /etc/passwd
sed -i "92a $NEW_USER ALL=(ALL) NOPASSWD:ALL" /etc/sudoers
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd

#禁止定時任務向傳送郵件
sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab

#設定最大開啟檔案數
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
cat >> /etc/security/limits.conf << EOF

* soft nofile 65535
* hard nofile 65535
EOF
fi

#系統核心優化
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20
EOF

#減少SWAP使用
echo "0" > /proc/sys/vm/swappiness

#安裝系統性能分析工具及其他
yum -y install gcc make autoconf vim sysstat net-tools iostat iftop iotp lrzsz &>/dev/null 2>&1

四、友情小命令
1)bash -x 指令碼名 //執行指令碼並且可以檢視全部執行過程
2)如果指令碼是在windows系統上所寫,拷貝到linux系統上時,因為兩種系統的系統格式不同,所以需要在linux系統上做如下操作:
yum -y install dos2unix

格式轉換: dos2unix 指令碼名字
3)執行ssh [email protected] 登入伺服器的時候,一般需要切換root使用者,則執行:
“sudo -i” 命令,這樣可以不需要輸入root密碼。
4)重點,本指令碼執行完畢,必須重啟系統方能全部生效!

五、結束語
我是大表哥,我為自己帶鹽,以後會不定時更新指令碼,請支援正版,盜鏈可恥,
我的部落格是:http://blog.51cto.com
各位朋友有什麼不懂以及認為有什麼錯誤之處,請在下方留言,謝謝!