#!/bin/bash echo "Usage: this.sh [NewUser]" echo "Example: this.sh alice" echo "curl https://git.faronear.org/fon/sysconfig/raw/branch/main/debian-config.sh > ~/debian-config.sh && bash ~/debian-config.sh" if [ "$1" ] then NewUser=$1 else NewUser=adot fi echo "=== Installing basic tools" apt update apt install -y emacs git curl screen sudo automake rsync echo echo "=== Making dir /faronear/" mkdir -p /faronear/ echo echo "=== Git cloning to /faronear/sysconfig" git config --global credential.helper cache if [ ! -d "/faronear/sysconfig" ] then git clone https://git.faronear.org/fon/sysconfig /faronear/sysconfig chmod -R 755 /faronear # 确保其他用户能够读取 /faronear/sysconfig/nixhome/* fi echo echo "=== Configure root home" source /faronear/sysconfig/home-config.sh /faronear/sysconfig/nixhome root echo echo "=== Change root password? for yes, for omit:" read -p ">>> " ChangeRootPassword if [ "$ChangeRootPassword" == 'y' ] then passwd fi echo echo "=== Configure /etc/sudoers: includedir /etc/sudoers.d" #sed -i "s|%sudo\s\+ALL=(ALL:ALL)\sALL|%sudo\tALL=(ALL:ALL) NOPASSWD:ALL|g" /etc/sudoers # allow all users in %sudo group to sudo without password DebianVersionMain=`cat /etc/debian_version | sed -r 's/^([0-9]+)\..*$/\1/'` if [ "$DebianVersionMain" == '10' ] then chmod o+w /etc/sudoers ## Debian 10 上,不存在 @includedir,需要自己添加。而 Debian 11.1 上,已经存在 @includedir sed -i "s|#includedir /etc/sudoers.d|includedir /etc/sudoers.d|g" /etc/sudoers # allow users in /etc/sudoers.d/ folder to sudo chmod o-w /etc/sudoers fi echo if [ -e /etc/ssh/sshd_config ] then echo "=== Disallow root login: #PermitRootLogin yes" sed -i "s|^PermitRootLogin yes|#PermitRootLogin yes|g" /etc/ssh/sshd_config service sshd restart echo fi echo "=== Set or for no change" read -p ">>> " NewHostname if [ $NewHostname ] then sed -i "s|\b`hostname`\b|$NewHostname|g" /etc/hosts # echo "127.0.0.1 $NewHostname" >> /etc/hosts hostnamectl set-hostname $NewHostname else echo '--- Nothing changed.' fi echo echo "=== Configure autostart" if [ -f /etc/rc.local ] then # 在腾讯云的 Debian 11.1 里,/etc/rc.local 第一行是 "#!bin/bash",应当是错误的。 sed -i "s|!bin/bash|!/bin/bash|" /etc/rc.local else echo '#!/bin/bash' > /etc/rc.local # can't omit, otherwise you can't launch pm2 in autostart.sh. Don't use double quote here, otherwise error. chmod +x /etc/rc.local fi echo "# make sure to sudo autostart.sh, otherwise for example pm2 list can't find it as root." >> /etc/rc.local echo 'sudo bash /faronear/autostart.sh' >> /etc/rc.local touch /faronear/autostart.sh echo "# make sure to sudo in autostart.sh, otherwise for example pm2 list can't find it as root." >> /faronear/autostart.sh chmod +x /faronear/autostart.sh echo 'Autostart is set to /faronear/autostart.sh. Run "systemctl start/stop/status rc-local" to manage it.' echo echo "=== Configure locales: for yes, for no change:" read -p ">>> " ConfigLocales if [ "$ConfigLocales" == 'y' ] then dpkg-reconfigure locales fi echo echo "=== Add a new user [$NewUser]? for yes, for no change:" read -p ">>> " AddNewUser if [ "$AddNewUser" == 'y' ] then source /faronear/sysconfig/debian-add-user.sh $NewUser source /faronear/sysconfig/home-config.sh /faronear/sysconfig/nixhome $NewUser echo echo "=== Enable xfce autologin [/etc/lightdm/lightdm.conf]: for autologin as [$NewUser] or for no change:" read -p ">>> " XfceAutologin if [ "$XfceAutologin" == "y" ] then sed -i "s/^.*autologin-user=.*$/autologin-user=$NewUser/g" /etc/lightdm/lightdm.conf sed -i "s/^.*autologin-user-timeout=.*$/autologin-user-timeout=0/g" /etc/lightdm/lightdm.conf echo "--- Successfully configured autologin as $NewUser" else echo '--- Nothing changed.' fi fi echo echo "=== Debian System Setup Completed."