CentOSインストール後のスクリプト

前回に続いてこれも作っててデスクトップに放置されていたスクリプトですが、こっちはとあるサイトから拾ってきたものを自分用の環境に変えただけです。

#! /bin/sh

# ネットワークの設定
# DHCP
###/sbin/dhclient-script
# -eth0
###if [ ! -f /etc/sysconfig/network-script/ifcfg-eth0.bak ]; then
###   cp /etc/sysconfig/network-script/ifcfg-eth0 /etc/sysconfig/network-script/ifcfg-eth0.bak
###fi
###cp /etc/sysconfig/network-script/ifcfg-eth0.bak /etc/sysconfig/network-script/ifcfg-eth0
###sed -i 's/^ONBOOT="no"/ONBOOT="yes"/' /etc/sysconfig/network-script/ifcfg-eth0
###echo 'BOOTPROTO="dhcp"' >> /etc/sysconfig/network-script/ifcfg-eth0
###echo 'IPADDR=192.168.24.80' >> /etc/sysconfig/network-script/ifcfg-eth0
###echo 'NETMASK=255.255.255.0' >> /etc/sysconfig/network-script/ifcfg-eth0
###echo 'GATEWAY=192.168.124.1' >> /etc/sysconfig/network-script/ifcfg-eth0

# -resolv
###echo 'nameserver 192.168.10.1' > /etc/resolv.conf

#-----------------------------------
# Edit Your Setting
#-----------------------------------
NTP1='ntp.asahi-net.or.jp'
NTP2='ntp1.sakura.ad.jp'
NTP3='ntp.ring.gr.jp'
#-----------------------------------
MyHostName=`hostname`

echo -n "Admin User Name : "
read UName

echo -n "Admin User Password : "
read UPass

echo -n "SSH Port No (8022/9022/10022/etc...) [10022]: "
read SSHPNO
if [ ! ${SSHPNO} ]; then SSHPNO="10022"; fi

echo -n "Make skel public_html ? (yes/no) [yes]: "
read PUBHTM
if [ ! ${PUBHTM} ]; then PUBHTM="yes"; fi

echo -n "Make skel Maildir ? (yes/no) [yes]: "
read MAILDIR
if [ ! ${MAILDIR} ]; then MAILDIR="yes"; fi

echo "
*******************************
 Admin User  = ${UName} / ${UPass}
 SSH Port No = ${SSHPNO}
 public_html = ${PUBHTM}
 Maildir     = ${MAILDIR}
*******************************
 Host  Namet= ${MyHostName}
 SELinux     = Disabled
 NTP Server1 = ${NTP1}
           2 = ${NTP2}
           3 = ${NTP3}
*******************************"

echo -n "Run OK ? (yes/no) [no]:"
read OKNG

if [ ! ${OKNG} ]; then OKNG="no"; fi

if [ ${OKNG} != "yes" ]; then exit 1; fi

echo "127.0.0.1 ${MyHostName} localhost.localdomain localhost" > /etc/hosts

# -ネットワークを再起動
###/etc/rc.d/init.d/network restart

# 操作音を停止
fname='/etc/inputrc'
if [ ! -f ${fname}_bak ]; then cp ${fname} ${fname}_bak; fi
cp ${fname}_bak ${fname}
echo "set bell-style visible" >> ${fname}

# コンソール数を制限
fname='/etc/sysconfig/init'
if [ ! -f ${fname}_bak ]; then cp ${fname} ${fname}_bak; fi
cp ${fname}_bak ${fname}
sed -i 's/\(ACTIVE_CONSOLES=.*\)1-6/\11-3/' ${fname}

# サービスを停止
if [ -f '/etc/rc.d/init.d/iscsid'    ]; then chkconfig iscsid off;    fi
if [ -f '/etc/rc.d/init.d/iptables'  ]; then chkconfig iptables off;  fi
if [ -f '/etc/rc.d/init.d/ip6tables' ]; then chkconfig ip6tables off; fi
if [ -f '/etc/rc.d/init.d/iscsi'     ]; then chkconfig iscsi off;     fi
if [ -f '/etc/rc.d/init.d/nfslock'   ]; then chkconfig nfslock off;   fi
if [ -f '/etc/rc.d/init.d/rpcidmapd' ]; then chkconfig rpcidmapd off; fi
if [ -f '/etc/rc.d/init.d/rpcgssd'   ]; then chkconfig rpcgssd off;   fi
if [ -f '/etc/rc.d/init.d/netfs'     ]; then chkconfig netfs off;     fi
if [ -f '/etc/rc.d/init.d/fcoe'      ]; then chkconfig fcoe off;      fi
if [ -f '/etc/rc.d/init.d/udev-post' ]; then chkconfig udev-post off; fi
if [ -f '/etc/rc.d/init.d/iscsid' ]; then chkconfig iscsid off; fi
#if [ -f '/etc/rc.d/init.d/iptables' ]; then chkconfig iptables off; fi
#if [ -f '/etc/rc.d/init.d/ip6tables' ]; then chkconfig ip6tables off; fi
if [ -f '/etc/rc.d/init.d/iscsi' ]; then chkconfig iscsi off; fi
if [ -f '/etc/rc.d/init.d/nfslock' ]; then chkconfig nfslock off; fi
if [ -f '/etc/rc.d/init.d/rpcidmapd' ]; then chkconfig rpcidmapd off; fi
if [ -f '/etc/rc.d/init.d/rpcgssd' ]; then chkconfig rpcgssd off; fi
if [ -f '/etc/rc.d/init.d/netfs' ]; then chkconfig netfs off; fi
if [ -f '/etc/rc.d/init.d/fcoe' ]; then chkconfig fcoe off; fi
if [ -f '/etc/rc.d/init.d/udev-post' ]; then chkconfig udev-post off; fi
if [ -f '/etc/rc.d/init.d/auditd' ]; then chkconfig auditd off; fi
if [ -f '/etc/rc.d/init.d/autofs' ]; then chkconfig autofs off; fi
if [ -f '/etc/rc.d/init.d/avahi-daemon' ]; then chkconfig avahi-daemon off; fi
if [ -f '/etc/rc.d/init.d/bluetooth' ]; then chkconfig bluetooth off; fi
if [ -f '/etc/rc.d/init.d/cups' ]; then chkconfig cups off; fi
if [ -f '/etc/rc.d/init.d/firstboot' ]; then chkconfig firstboot off; fi
if [ -f '/etc/rc.d/init.d/gpm' ]; then chkconfig gpm off; fi
if [ -f '/etc/rc.d/init.d/haldaemon' ]; then chkconfig haldaemon off; fi
if [ -f '/etc/rc.d/init.d/hidd' ]; then chkconfig hidd off; fi
if [ -f '/etc/rc.d/init.d/isdn' ]; then chkconfig isdn off; fi
if [ -f '/etc/rc.d/init.d/kudzu' ]; then chkconfig kudzu off; fi
if [ -f '/etc/rc.d/init.d/mcstrans' ]; then chkconfig mcstrans off; fi
if [ -f '/etc/rc.d/init.d/mdmonitor' ]; then chkconfig mdmonitor off; fi
if [ -f '/etc/rc.d/init.d/messagebus' ]; then chkconfig messagebus off; fi
if [ -f '/etc/rc.d/init.d/netfs' ]; then chkconfig netfs off; fi
if [ -f '/etc/rc.d/init.d/pcscd' ]; then chkconfig pcscd off; fi
if [ -f '/etc/rc.d/init.d/portmap' ]; then chkconfig portmap off; fi
if [ -f '/etc/rc.d/init.d/rawdevices' ]; then chkconfig rawdevices off; fi
if [ -f '/etc/rc.d/init.d/restorecond' ]; then chkconfig restorecond off; fi
if [ -f '/etc/rc.d/init.d/rpcgssd' ]; then chkconfig rpcgssd off; fi
if [ -f '/etc/rc.d/init.d/rpcidmapd' ]; then chkconfig rpcidmapd off; fi
if [ -f '/etc/rc.d/init.d/smartd' ]; then chkconfig smartd off; fi
if [ -f '/etc/rc.d/init.d/xfs' ]; then chkconfig xfs off; fi

# SELINUXを無効にする
setenforce 0
fname='/etc/selinux/config'
if [ ! -f ${fname}_bak ]; then cp ${fname} ${fname}_bak; fi
cp ${fname}_bak ${fname}
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' ${fname}

# メールはPostfix+Dovecotにする
ret=`rpm -qa postfix`
if [ ! $ret ]; then yum -y install postfix; fi
ret=`rpm -qa dovecot`
if [ ! $ret ]; then yum -y install dovecot; fi
chkconfig postfix off
chkconfig dovecot off

# ホームページ用にpublic_htmlを用意
if [ ${PUBHTM} = "yes" ]; then
   mkdir /etc/skel/public_html
   chmod 755 /etc/skel/public_html
fi
# メール用にMaildirを用意
if [ ${MAILDIR} = "yes" ]; then
   mkdir /etc/skel/Maildir
   chmod 700 /etc/skel/Maildir
fi

# 一般ユーザの設定
sed -i 's/SHELL=\/bin\/bash/SHELL=\/sbin\/nologin/' /etc/default/useradd
sed -i 's/CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd

# sshログイン可能なユーザを追加
ret=`cat /etc/passwd | grep ^${UName}`
if [ $ret ]; then userdel -r ${UName}; fi
useradd -g wheel -s /bin/bash ${UName}
# -パスワード指定
echo ${UPass} | passwd --stdin ${UName}
# -wheelグループへ追加
#usermod -G wheel ${UName}
# -ルートになれるグループをwheelに限定
fname='/etc/pam.d/su'
if [ ! -f ${fname}_bak ]; then cp ${fname} ${fname}_bak; fi
sed -i 's/^#auth\(.*required\)/auth\1/' /etc/pam.d/su
fname='/etc/login.defs'
if [ ! -f ${fname}_bak ]; then cp ${fname} ${fname}_bak; fi
cp ${fname}_bak ${fname}
echo "SU_WHEEL_ONLY yes" >> ${fname}
# sudo設定
yum install -y sudo
cp -f /etc/sudoers /etc/sudoers.tmp
fname="/etc/sudoers.tmp"
sed -i -e "s/^# \(%wheel[\t]\+ALL=(ALL)[\t]\+NOPASSWD: ALL\)$/\1/" ${fname}
cp -f /etc/sudoers.tmp /etc/sudoers
# -rootへのメールを${UName}で取得
sed -i '/^root:/d' /etc/aliases
echo "root: ${UName}" >> /etc/aliases
newaliases

# -sshの設定
fname='/etc/ssh/sshd_config'
if [ ! -f ${fname}_bak ]; then cp ${fname} ${fname}_bak; fi
cp ${fname}_bak ${fname}
sed -i "s/^#Port 22/Port ${SSHPNO}/" ${fname}
sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' ${fname}
sed -i 's/^#PermitEmptyPasswords/PermitEmptyPasswords/' ${fname}
echo "AllowUsers ${UName}" >> ${fname}

# Wrapper アクセス制限
fname='/etc/hosts.allow'
if [ ! -f ${fname}_bak ]; then cp ${fname} ${fname}_bak; fi
cp ${fname}_bak ${fname}
echo 'sshd: ALL' >> ${fname}

fname='/etc/hosts.deny'
if [ ! -f ${fname}_bak ]; then cp ${fname} ${fname}_bak; fi
cp ${fname}_bak ${fname}
echo 'ALL:  ALL' >> ${fname}

# yum の設定
ret=`rpm -qa yum-fastestmirror`
if [ ! $ret ]; then yum -y install yum-fastestmirror; fi
ret=`rpm -qa yum-cron`
if [ ! $ret ]; then yum -y install yum-cron; fi
yum -y update
# -yum-cronを参照のみにする
fname='/etc/sysconfig/yum-cron'
if [ ! -f ${fname}_bak ]; then cp ${fname} ${fname}_bak; fi
cp ${fname}_bak ${fname}
sed -i 's/^CHECK_ONLY=no/CHECK_ONLY=yes/' ${fname}
sed -i 's/^DOWNLOAD_ONLY=no/DOWNLOAD_ONLY=yes/' ${fname}
# -yum-cronのサービスを開始
chkconfig yum-cron on
/etc/rc.d/init.d/yum-cron start

# 時刻設定
ret=`rpm -qa ntp`
if [ ! $ret ]; then yum -y install ntp; fi
fname='/etc/ntp.conf'
if [ ! -f ${fname}_bak ]; then cp ${fname} ${fname}_bak; fi
cp ${fname}_bak ${fname}
sed -i 's/^server 0/#server 0/' ${fname}
sed -i 's/^server 1/#server 1/' ${fname}
sed -i 's/^server 2/#server 2/' ${fname}
sed -i 's/^server\(.*127\)/#server\1/' ${fname}
echo "server ${NTP1}" >> ${fname}
echo "server ${NTP2}" >> ${fname}
echo "server ${NTP3}" >> ${fname}
ret=`service --status-all | grep ntp.*run`
if [ -n "${ret}" ]; then /etc/rc.d/init.d/ntpd stop; fi
ntpdate ${NTP1}
chkconfig ntpd on
/etc/rc.d/init.d/ntpd start

#ここからはお好みで。
# bindツールをインストール
ret=`rpm -qa bind-utils`
if [ ! $ret ]; then yum -y install bind-utils; fi
# perlをインストール
ret=`rpm -qa perl`
if [ ! $ret ]; then yum -y install perl; fi
# wgetをインストール
ret=`rpm -qa wget`
if [ ! $ret ]; then yum -y install wget; fi
# telnetをインストール
ret=`rpm -qa telnet`
if [ ! $ret ]; then yum -y install telnet; fi
# vimをインストール
ret=`rpm -qa vim`
if [ ! $ret ]; then yum -y install vim; fi
# gccをインストール
ret=`rpm -qa gcc`
if [ ! $ret ]; then yum -y install gcc; fi
# IPTABLESの設定
echo *filter > /etc/sysconfig/iptables
echo :INPUT ACCEPT [0:0] >> /etc/sysconfig/iptables
echo :FORWARD ACCEPT [0:0] >> /etc/sysconfig/iptables
echo :OUTPUT ACCEPT [0:0] >> /etc/sysconfig/iptables
echo :RH-Firewall-1-INPUT - [0:0] >> /etc/sysconfig/iptables
echo -A INPUT -j RH-Firewall-1-INPUT >> /etc/sysconfig/iptables
echo -A FORWARD -j RH-Firewall-1-INPUT >> /etc/sysconfig/iptables
echo -A RH-Firewall-1-INPUT -i lo -j ACCEPT >> /etc/sysconfig/iptables
echo -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT >> /etc/sysconfig/iptables
echo -A RH-Firewall-1-INPUT -p 50 -j ACCEPT >> /etc/sysconfig/iptables
echo -A RH-Firewall-1-INPUT -p 51 -j ACCEPT >> /etc/sysconfig/iptables
echo -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT >> /etc/sysconfig/iptables
echo -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT >> /etc/sysconfig/iptables
echo -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT >> /etc/sysconfig/iptables
echo -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT >> /etc/sysconfig/iptables
echo \#-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT >> /etc/sysconfig/iptables
echo -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT >> /etc/sysconfig/iptables
echo -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited >> /etc/sysconfig/iptables
echo COMMIT >> /etc/sysconfig/iptables

/etc/init.d/iptables restart

#cd /var/tmp
#ret=`rpm -qa cpan2rpm`
#if [ ! $ret ]; then
#   cpan2ver="cpan2rpm-2.027-1.noarch.rpm"
#   wget http://nchc.dl.sourceforge.net/sourceforge/cpan2rpm/$cpan2ver
#   rpm -Uvh $cpan2ver
#   rm -f $cpan2ver
#fi

shutdown -r now"

そうそう、OpenstackとGithubの話を聞いたのですが、Githubってこの日記にも何回か出てきますけど、本来の用途はそういうものだったのかって思ったw

というのも

toaru

行ってきました。
(注)やっぱり4文字にしたかったので講習会「に」を入れちゃいましたw
とてもおもしろかったし、Github Puppet は今後に取り入れたいんなあ。

※ロゴを作りたい人はこちらへどうそ ⇒ とある櫻花の画像生成
10/20リンク修正しました。すみません。

Openstackはやっぱり思ってたようにググってみるとホスティングのサーバーと合わせて利用する機会が増えそうな感じだった。

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です