#!/bin/bash # Configure Stormux # A script to configure the system for new users. # # Copyright 2020, Storm Dragon, # # This is free software; you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the Free # Software Foundation; either version 3, or (at your option) any later # version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this package; see the file COPYING. If not, write to the Free # Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # #--code-- # The user can not be logged in when the name change occurs. # Write a file to /etc/cron.d/chuser # The file will run at boot, change the username, and delete itself. if [[ $# -ne 1 ]]; then msgbox "Missing required argument, username." exit 1 fi if [[ "$(whoami)" == "root" ]]; then msgbox "Please run this script as the user you would like to rename, not as root." exit 1 fi oldUser="$USER" groups="$(groups "$oldUser")" groups="${groups// /,}" newUser="$1" if ! [[ "$newUser" =~ ^[a-z][-a-z0-9]*$ ]]; then msgbox "Username $newUser failed validation. It cannot contain spaces or some punctuation." exit 1 fi # Heredocument left-aligned cat << EOF | sudo tee /etc/cron.d/0chuser &> /dev/null SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin @reboot root usermod -a -G $groups -m -d /home/$newUser -l $newUser $oldUser && sed -i -e "s#NODM_USER=.*#NODM_USER='$newUser'#" -e "s#NODM_XSESSION=.*#NODM_XSESSION='/home/$newUser/.xinitrc'#" /etc/nodm.conf; rm -f /etc/cron.d/0chuser;reboot EOF # Heredocument end. # Files in cron.d must be 644 to work. sudo chmod 644 /etc/cron.d/0chuser