diff --git a/add_new_user.sh b/add_new_user.sh new file mode 100755 index 0000000..33bfce3 --- /dev/null +++ b/add_new_user.sh @@ -0,0 +1,191 @@ +#!/usr/bin/env bash + +working_dir="$(dirname $(realpath $0))" + +if [[ $# -lt 1 ]] ; then + echo "" + echo " No username given on comand line." + echo "" + exit +fi + +user_name=$1 +#password=$2 +#password=${password:="test100"} + +if [[ -z "$2" ]]; then + password_needed=true + password="test100" +else + password_needed=false + password=$2 +fi + +replace_files=".bashrc .bash_logout .profile .vimrc" + +templates_base_dir="${working_dir}/supported-files/user_templates" +templates_all_dir="${templates_base_dir}/all" + +if [[ -f "/etc/adduser.conf" ]]; then + . /etc/adduser.conf + home_base_dir="$DHOME" + min_uid=$FIRST_UID + skel_dir="$SKEL" +else + home_base_dir=/home + min_uid=1000 + skel_dir=/etc/skel +fi + + +# - Create user if not exists +# - +if ! id -u "${user_name}" > /dev/null 2>&1 ; then + + # - Get uid/gid + # - + if [[ "$user_name" = 'sysadm' ]]; then + user_uid=1050 + user_gid=1050 + elif [[ "$user_name" = 'back' ]]; then + user_uid=1060 + user_gid=1060 + else + + declare -i _id=$(expr $min_uid - 1) + + while true ; do + ((_id++)) + $(id $_id > /dev/null 2>&1) && continue + $(cat /etc/group | cut -d ':' -f3 | grep -q $_id 2> /dev/null) && continue + break + done + user_uid=$_id + user_gid=$_id + fi + + # - Add user to system + # - + echo "$user_name:${password}:${user_uid}:${user_gid}:${user_name},,,:${home_base_dir}/${user_name}:/bin/bash" | newusers + + if [[ -d "$skel_dir" ]]; then + cp -a "${skel_dir}/.bash_logout" "${home_base_dir}/${user_name}/" + chown ${user_name}:${user_name} "${home_base_dir}/${user_name}/.bash_logout" + + cp -a "${skel_dir}/.bashrc" "${home_base_dir}/${user_name}/" + chown ${user_name}:${user_name} "${home_base_dir}/${user_name}/.bashrc" + + cp -a "${skel_dir}/.profile" "${home_base_dir}/${user_name}/" + chown ${user_name}:${user_name} "${home_base_dir}/${user_name}/.profile" + fi +else + user_uid=$(id -u ${user_name}) + user_gid=$(id -g ${user_name}) +fi + +# - Set new password +# - +if $password_needed ; then + + # - sysadm + # - + if [[ "$user_name" = 'sysadm' ]]; then + perl -i -n -p -e "s#^(${user_name}):[^:]+:(.+)#\1:\\\$6\\\$vvccwrTc\\\$Sz1HaSb3ujObprltiG7D6U1Rr3fpgfjkKuDDWYdHzPkPx/0pEofCWC.vyTn78hcemkntl.6wVUOnJnNloKt/E/:\2#" /etc/shadow + + # - chris + # - + elif [[ "$user_name" = 'chris' ]]; then + perl -i -n -p -e "s#^(${user_name}):[^:]+:(.+)#\1:\\\$6\\\$eS5Z/MP3\\\$9L5nW7lUSgKI2Sxe4tQGZYQHhndLnKh6ysOuxvQ6YGT7Q6IXihscvw.sVareOHohwjbLDbbAXHK0FWOEQYH2e1:\2#" /etc/shadow + + # - root + # - + elif [[ "$user_name" = 'root' ]]; then + perl -i -n -p -e "s#^(${user_name}):[^:]+:(.+)#\1:\\\$6\\\$shJF/I7l\\\$Z9H3on8zNLS3AxR3TtYU1lmMW7sHnpn9ylW2.758uOIDBl0Sku2x7xYfml8ty0JJrhZMXLrGnikprqqtmgAoq1:\2#" /etc/shadow + + # - Other normal users (uid > $min_uid) + # - + elif [[ $user_uid -ge $min_uid ]] ; then + perl -i -n -p -e "s#^(${user_name}):[^:]+:(.+)#\1:\\\$6\\\$R6DYYcau\\\$TZYgG122V1oDl1wddNb8ieQIUMab35xItyFlnlStkEBV3DS5S6x7co6S/FpwbHzX21c1HF3WCUQ5/5s.umi6I.:\2#" /etc/shadow + fi + +fi + +home_dir="$(cat /etc/passwd | grep -E "^${user_name}:" | cut -d':' -f6)" + + +# - Backup existing files befor replacing them.. +# - +if [[ -f "${home_dir}/.bashrc" ]] && [[ ! -f "${home_dir}/.bashrc.ORIG" ]]; then + mv "${home_dir}/.bashrc" "${home_dir}/.bashrc.ORIG" +fi +if [[ -f "${home_dir}/.profile" ]] && [[ ! -f "${home_dir}/.profile.ORIG" ]] ; then + mv "${home_dir}/.profile" "${home_dir}/.profile.ORIG" +fi +if [[ -f "${home_dir}/.bash_logout" ]] && [[ ! -f "${home_dir}/.bash_logout.ORIG" ]] ; then + mv "${home_dir}/.bash_logout" "${home_dir}/.bash_logout.ORIG" +fi + + +# - Replace/Add files +# - +for _file in $replace_files ; do + if [[ -f "${templates_base_dir}/${user_name}/${_file}" ]] ; then + cp -a "${templates_base_dir}/${user_name}/${_file}" "${home_dir}/" + chown ${user_name}:${user_name} "${home_dir}/${_file}" + elif [[ -f "${templates_all_dir}/${_file}" ]]; then + cp -a "${templates_all_dir}/${_file}" "${home_dir}/" + chown ${user_name}:${user_name} "${home_dir}/${_file}" + else + if [[ -f "${home_dir}/${_file}.ORIG" ]]; then + mv "${home_dir}/${_file}.ORIG" "${home_dir}/${_file}" + fi + fi +done + +if [[ -d "${home_dir}/.ssh" ]]; then + cp -a "${home_dir}/.ssh" "${home_dir}/.ssh.BAK" +else + mkdir "${home_dir}/.ssh" +fi + +ssh_auhtorized_file="" +if [[ -d "${templates_base_dir}/${user_name}/.ssh" ]]; then + if [[ -f "${templates_base_dir}/${user_name}/.ssh/authorized_keys2" ]]; then + ssh_auhtorized_file="${templates_base_dir}/${user_name}/.ssh/authorized_keys2" + elif [[ -f "${templates_base_dir}/${user_name}/.ssh/authorized_keys" ]]; then + ssh_auhtorized_file="${templates_base_dir}/${user_name}/.ssh/authorized_keys" + fi +elif [[ -d "${templates_all_dir}/.ssh" ]] ; then + if [[ -f "${templates_all_dir}/.ssh/authorized_keys2" ]]; then + ssh_auhtorized_file="${templates_all_dir}/.ssh/authorized_keys2" + elif [[ -f "${templates_all_dir}/.ssh/authorized_keys" ]]; then + ssh_auhtorized_file="${templates_all_dir}/.ssh/authorized_keys" + fi +fi +if [[ -n "$ssh_auhtorized_file" ]] ; then + cp -a "$ssh_auhtorized_file" "${home_dir}/.ssh/" +elif [[ -d "${home_dir}/.ssh.BAK" ]] ; then + rm -rf "${home_dir}/.ssh.BAK" +fi + +chmod 700 ${home_dir}/.ssh +chown -R ${user_name}:${user_name} ${home_dir}/.ssh + +if [[ "$user_name" = 'sysadm' ]] || [[ "$user_name" = 'chris' ]] ; then + usermod -a -G sudo ${user_name} +fi +#ls -al ${home_dir}/.ssh +echo "" +echo -e " User \033[1m${user_name}\033[m added:" +echo "" +echo -e " Home Dir: \033[1m$home_dir\033[m" +echo -e " UID: \033[1m$(id -u ${user_name})\033[m" +echo -e " GID: \033[1m$(id -g ${user_name})\033[m" +if [[ -n "$2" ]]; then + echo -e " Password: \033[1m$2\033[m" +else + echo -e " Password: \033[1m************\033[m" +fi +echo "" + +exit 0 diff --git a/cleanup_from_old_files.sh b/cleanup_from_old_files.sh new file mode 100755 index 0000000..d4b9ef3 --- /dev/null +++ b/cleanup_from_old_files.sh @@ -0,0 +1,178 @@ +#!/usr/bin/env bash + +working_dir="$(dirname $(realpath $0))" +conf_file="${working_dir}/conf/cleanup_from_old_files.conf" + +LOCK_DIR="/tmp/clean_trash.LOCK" + + +# ------------- +# - Some functions +# ------------- + +clean_up() { + + # Perform program exit housekeeping + rm -rf "$LOCK_DIR" + exit $1 +} + +echononl(){ + if $terminal ; then + echo X\\c > /tmp/shprompt$$ + if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then + echo -e -n "$*\\c" 1>&2 + else + echo -e -n "$*" 1>&2 + fi + rm /tmp/shprompt$$ + fi +} + +fatal(){ + echo "" + if $terminal ; then + echo -e " [ \033[31m\033[1mFatal\033[m ]: $*" + echo "" + echo -e " \033[31m\033[1mScript was terminated\033[m!" + else + echo " [ Fatal ]: $*" + echo "" + echo " Script was terminated...." + fi + echo "" + clean_up 1 +} + +error (){ + echo "" + if $terminal ; then + echo -e " [ \033[31m\033[1mError\033[m ]: $*" + else + echo "[ Error ]: $*" + fi + echo "" +} + +warn (){ + echo "" + if $terminal ; then + echo -e " [ \033[33m\033[1mWarning\033[m ]: $*" + else + echo "[ Warning ]: $*" + fi + echo "" +} +info (){ + + if $terminal ; then + echo "" + echo -e " [ \033[32m\033[1mInfo\033[m ]: $*" + echo "" + fi +} + +echo_done() { + if $terminal ; then + echo -e "\033[75G[ \033[32mdone\033[m ]" + fi +} +echo_failed(){ + if $terminal && $LOGGING ; then + echo -e "\033[75G[ \033[1;31mfailed\033[m ]" + fi +} +echo_skipped() { + if $terminal && $LOGGING ; then + echo -e "\033[75G[ \033[33m\033[1mskipped\033[m ]" + fi +} + +trim() { + local var="$*" + var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters + var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters + echo -n "$var" +} + + +# ------------- +# - Running in a terminal? +# ------------- + +if [[ -t 1 ]] ; then + terminal=true +else + terminal=false +fi + + +# ------------- +# - Read Configurations from $conf_file +# ------------- + +if [[ ! -f "$conf_file" ]]; then + fatal " Configuration file '$(basename ${conf_file})' not found!" +else + source "$conf_file" +fi + +[[ -z "$(trim $dirs_to_cleanup)" ]] && fatal "No directory given!" +[[ -z "$days" ]] && days=31 + + +# ------------- +# - Job is already running? +# ------------- + +# - If job already runs, stop execution.. +# - +if mkdir "$LOCK_DIR" 2> /dev/null ; then + + # - Remove lockdir when the script finishes, or when it receives a signal + # - + trap clean_up SIGHUP SIGINT SIGTERM + +else + + datum="$(date +"%d.%m.%Y %H:%M")" + + msg=" [ Error ]: A previos instance of '$(basename $0)' seems already be running.\n\n Exiting now.." + + error "A previos instance of the script '$(basename $0)' seems already be running." + + exit 1 + +fi + + +traverse() { + + while IFS='' read -r -d '' name ; do + + [[ "$name" = ".." ]] && continue + [[ "$name" = "." ]] && continue + traverse "$name" + + done < <(find "$1" -mindepth 1 -maxdepth 1 -type d -print0) + + find "$1" -mindepth 1 -maxdepth 1 -type f -mtime +${days} -exec rm -f "{}" \; > /dev/null 2>&1 + +} + +for dir in $dirs_to_cleanup ; do + info "Delete files from directory \033[1m${dir}\033[m older than \033[1m${days}\033[m days .." + traverse "$dir" +done + +# - Delete empty sub-directories +# - +if $terminal ; then + echo -e "\033[32m\033[1m-----\033[m" +fi +for dir in $dirs_to_cleanup ; do + info "Cleanup trash directory \033[1m${dir}\033[m from empty directories .." + find $dir -depth -mindepth 1 -type d -empty -delete +done + +clean_up 0 diff --git a/conf/cleanup_from_old_files.conf.sample b/conf/cleanup_from_old_files.conf.sample new file mode 100644 index 0000000..be17fcf --- /dev/null +++ b/conf/cleanup_from_old_files.conf.sample @@ -0,0 +1,20 @@ +# ------------------------------------ +# - Settings for script clean_trash.sh +# ------------------------------------ + +# - days +# - +# - Files older then 'days' will be deleted. +# - +# - Defaults to: days=31 +# - +#days=31 + +# - dirs_to_cleanup +# - +# - Directories where files older than given days will be deleted. +# - +# - Example: +# - trash_dirs="/data/samba/transfer/.Trash /data/samba/no-backup-share/multimedia/.Trash" +# - +#dirs_to_cleanup="" diff --git a/conf/set_directory_permissions.conf.sample b/conf/set_directory_permissions.conf.sample new file mode 100644 index 0000000..c26992c --- /dev/null +++ b/conf/set_directory_permissions.conf.sample @@ -0,0 +1,14 @@ +# --------------------------------------------- +# - Settings for script cleanup_samba_rights.sh +# --------------------------------------------- + +# - dir_permissions +# - +# - Recursive set Permissions (group and file-/directory-mode) +# - +# - dir_permissions="::: [:::] .." +# - +# - Example: +# - dir_permissions="/data/samba/transfer:buero:664:2775 /data/samba/verwaltung:intern:660:2770" +# - +#dir_permissions="" diff --git a/get_next_uid_gid_pair.sh b/get_next_uid_gid_pair.sh new file mode 100755 index 0000000..bb1b1ab --- /dev/null +++ b/get_next_uid_gid_pair.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +min_uid=1000 + +declare -i _id=$(expr $min_uid - 1) + +while true ; do + ((_id++)) + $(id $_id > /dev/null 2>&1) && continue + $(cat /etc/group | cut -d ':' -f3 | grep -q $_id 2> /dev/null) && continue + break +done + +echo +echo " Next free uid/gid pair:" +echo +echo -e " uid: \033[1m$_id\033[m" +echo -e " gid: \033[1m$_id\033[m" +echo + +exit 0 diff --git a/set_directory_permissions.sh b/set_directory_permissions.sh new file mode 100755 index 0000000..13e5c6b --- /dev/null +++ b/set_directory_permissions.sh @@ -0,0 +1,204 @@ +#!/usr/bin/env bash + +working_dir="$(dirname $(realpath $0))" +conf_file="${working_dir}/conf/set_directory_permissions.conf" + +LOCK_DIR="/tmp/set_directory_permissions.LOCK" + + +# ------------- +# - Some functions +# ------------- + +clean_up() { + + # Perform program exit housekeeping + rm -rf "$LOCK_DIR" + exit $1 +} + +echononl(){ + if $terminal ; then + echo X\\c > /tmp/shprompt$$ + if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then + echo -e -n "$*\\c" 1>&2 + else + echo -e -n "$*" 1>&2 + fi + rm /tmp/shprompt$$ + fi +} + +fatal(){ + echo "" + if $terminal ; then + echo -e " [ \033[31m\033[1mFatal\033[m ]: $*" + echo "" + echo -e " \033[31m\033[1mScript was terminated\033[m!" + else + echo " [ Fatal ]: $*" + echo "" + echo " Script was terminated...." + fi + echo "" + clean_up 1 +} + +error (){ + echo "" + if $terminal ; then + echo -e " [ \033[31m\033[1mError\033[m ]: $*" + else + echo "[ Error ]: $*" + fi + echo "" +} + +warn (){ + echo "" + if $terminal ; then + echo -e " [ \033[33m\033[1mWarning\033[m ]: $*" + else + echo "[ Warning ]: $*" + fi + echo "" +} +info (){ + + if $terminal ; then + echo "" + echo -e " [ \033[32m\033[1mInfo\033[m ]: $*" + echo "" + fi +} + +echo_done() { + if $terminal ; then + echo -e "\033[75G[ \033[32mdone\033[m ]" + fi +} +echo_failed(){ + if $terminal && $LOGGING ; then + echo -e "\033[75G[ \033[1;31mfailed\033[m ]" + fi +} +echo_skipped() { + if $terminal && $LOGGING ; then + echo -e "\033[75G[ \033[33m\033[1mskipped\033[m ]" + fi +} + +trim() { + local var="$*" + var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters + var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters + echo -n "$var" +} + + +# ------------- +# - Running in a terminal? +# ------------- + +if [[ -t 1 ]] ; then + terminal=true +else + terminal=false +fi + + +# ------------- +# - Read Configurations from $conf_file +# ------------- + +if [[ ! -f "$conf_file" ]]; then + fatal " Configuration file '$(basename ${conf_file})' not found!" +else + source "$conf_file" +fi + +[[ -z "$(trim $dir_permissions)" ]] && fatal "No directory given!" + + +# ------------- +# - Job is already running? +# ------------- + +# - If job already runs, stop execution.. +# - +if mkdir "$LOCK_DIR" 2> /dev/null ; then + + ## - Remove lockdir when the script finishes, or when it receives a signal + trap clean_up SIGHUP SIGINT SIGTERM + +else + + datum="$(date +"%d.%m.%Y %H:%M")" + + msg=" [ Error ]: A previos instance of '$(basename $0)' seems already be running.\n\n Exiting now.." + + error "A previos instance of the script '$(basename $0)' seems already be running." + + exit 1 + +fi + +for _dir_perm in $dir_permissions ; do + IFS=':' read -a _dir_perm_arr <<< "${_dir_perm}" + + base_dir="${_dir_perm_arr[0]}" + if [[ -z "$(trim "$base_dir")" ]]; then + error "Directory not given!" + continue + fi + if [[ ! -d "$base_dir" ]]; then + error "Cannot find directory '$base_dir'" + continue + fi + + group="${_dir_perm_arr[1]}" + if [[ -z "$(trim "$group")" ]]; then + error "Group not given!" + continue + fi + if ! grep -E -q "^${group}:" /etc/group ; then + error "Group '$group' does not exist!" + fi + + file_perm="${_dir_perm_arr[2]}" + if [[ -z "$(trim "$file_perm")" ]]; then + error "File permissions not given!" + continue + fi + + dir_perm="${_dir_perm_arr[3]}" + if [[ -z "$(trim "$dir_perm")" ]]; then + error "Directory permissions not given!" + continue + fi + + info "Set Permisions on \033[1m${base_dir}\033[m: Group:\033[1m${group}\033[m Perimissions: \033[1m${dir_perm}/${file_perm}\033[m .." + + chmod $dir_perm $base_dir + chgrp $group $base_dir + + while IFS='' read -r -d '' filename ; do + + [[ -f "$filename" ]] && ( chmod $file_perm "$filename"; chgrp $group "$filename") + [[ ! -d "$filename" ]] && continue + + [[ "$filename" =~ .Trash ]] && continue + [[ "$filename" = "lost+found" ]] && continue + + chmod $dir_perm "$filename" ; chgrp $group "$filename" + + find "$filename" ! -group $group -exec chgrp -R $group {} \; + find "$filename" -type d ! -perm $dir_perm -exec chmod -R $dir_perm {} \; + find "$filename" -type f ! -perm $file_perm -exec chmod -R $file_perm {} \; + + + done < <(find $base_dir -mindepth 1 -maxdepth 1 -print0) + +done + +clean_up 0 diff --git a/supported-files/user_templates/all/.bash_logout b/supported-files/user_templates/all/.bash_logout new file mode 100644 index 0000000..de4f5f7 --- /dev/null +++ b/supported-files/user_templates/all/.bash_logout @@ -0,0 +1,7 @@ +# ~/.bash_logout: executed by bash(1) when login shell exits. + +# when leaving the console clear the screen to increase privacy + +if [ "$SHLVL" = 1 ]; then + [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q +fi diff --git a/supported-files/user_templates/all/.bashrc b/supported-files/user_templates/all/.bashrc new file mode 100644 index 0000000..af95690 --- /dev/null +++ b/supported-files/user_templates/all/.bashrc @@ -0,0 +1,109 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +[ -z "$PS1" ] && return + +# don't put duplicate lines in the history. See bash(1) for more options +# don't overwrite GNU Midnight Commander's setting of `ignorespace'. +HISTCONTROL=$HISTCONTROL${HISTCONTROL+:}ignoredups +# ... or force ignoredups and ignorespace +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# some more ls aliases +alias ll='ls -l' +alias la='ls -A' +alias l='ls -CF' + +alias ..='cd ..' +alias ...='cd ../..' +alias ....='cd ../../..' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if [ -f /etc/bash_completion ] && ! shopt -oq posix; then + . /etc/bash_completion +fi + +export EDITOR=vim + +## - set beep more quiet +## - +#xset b 10 500 50 diff --git a/supported-files/user_templates/all/.profile b/supported-files/user_templates/all/.profile new file mode 100644 index 0000000..edc7a33 --- /dev/null +++ b/supported-files/user_templates/all/.profile @@ -0,0 +1,30 @@ +# ~/.profile: executed by the command interpreter for login shells. +# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login +# exists. +# see /usr/share/doc/bash/examples/startup-files for examples. +# the files are located in the bash-doc package. + +# the default umask is set in /etc/profile; for setting the umask +# for ssh logins, install and configure the libpam-umask package. +#umask 022 + +# if running bash +if [ -n "$BASH_VERSION" ]; then + # include .bashrc if it exists + if [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" + fi +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" +fi + +# this is for the midnight-commander +# to become the last directory the midnight commander was in +# as the current directory when leaving the midnight commander +# +#. /usr/lib/mc/bin/mc.sh +. /usr/share/mc/bin/mc.sh + diff --git a/supported-files/user_templates/all/.ssh/authorized_keys2 b/supported-files/user_templates/all/.ssh/authorized_keys2 new file mode 100644 index 0000000..464bdb4 --- /dev/null +++ b/supported-files/user_templates/all/.ssh/authorized_keys2 @@ -0,0 +1,2 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCyWbdnjnN/xfy1F6kPbsRXp8zvJEh8uHfTZuZKyaRV/iRuhsvqRiDB+AhUAlIaPwgQ8itaI6t5hijD+sZf+2oXXbNy3hkOHTrCDKCoVAWfMRKPuA1m8RqS4ZXXgayaeCzVnPEq6UrC5z0wO/XBwAktT37RRSQ/Hq2zCHy36NQEQYrhF3+ytX7ayb10pJAMVGRctYmr5YnLEVMSIREbPxZTNc80H1zqNPVJwYZhl8Ox61U4MoNhJmJwbKWPRPZsJpbTh9W2EU37tdwRBVQP6yxhua3TR6C7JnNPVY0IK23BYlNtQEDY4PHcIuewkamEWpP0+jhEjtwy1TqjRPdU/y+2uQjC6FSOVMsSPxgd8mw4cSsfp+Ard7P+YOevUXD81+jFZ3Wz0PRXbWMWAm2OCe7n8jVvkXMz+KxSYtrsvKNw1WugJq1z//bJNMTK6ISWpqaXDevGYQRJJ8dPbMmbey40WpS5CA/l29P7fj/cOl59w3LZGshrMOm7lVz9qysVV0ylfE3OpfKCGitkpY0Asw4lSkuLHoNZnDo6I5/ulRuKi6gsLk27LO5LYS8Zm1VOis/qHk1Gg1+QY47C4RzdTUxlU1CGesPIiQ1uUX2Z4bD7ebTrrOuEFcmNs3Wu5nif21Qq0ELEWhWby6ChFrbFHPn+hWlDwNM0Nr11ftwg0+sqVw== root@luna +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC5IhVprsvVOcFPbZzD9xR0nCjZ/9qVG6RhLJ7QBSts81nRvLwnmvcMBHSf5Rfaigey7Ff5dLHfJnxRE0KDATn6n2yd/5mXpn2GAA8hDVfhdsmsb5U7bROjZNr8MmIUrP7c3msUGx1FtvzhwxtyvIWOFQpWx+W5biBa6hFjIxT1pkUJqe6fclp7xbGYKZiqZRBS4qKG5CpKnisuOYDsqYPND+OkU+PShoxGVzp1JywIVze7qeKv6GyYbRA9SP9Np+5Mit6B21Io4zOI81c2Rz6sPX7mwEAQEs7iCm2hzG8qJws45Lb4ERqDkVEVhGNUyHjHgGebS1sZx1mLExdurXlPm1l/EamkncDFDCutHXtLP7lsFFiym7fKUjSEgiiLmyu5Xm+mwZvesKa1FYNaeiFWfYZpCJrNzIk+ffs+mgg3kmL4Sd4Ooy7jXPX+WJe5Xyh1KLU/+Wj2TVrhN+LbmupYAti/Wgd3DA1v601svmG82aLmyJRtKC0rGMePH3kDbtqU72kYpzI8mXERe1TIQ00Z77kQBR/7BF/9y5/0YmYDcXt1wNCoSie+mzz3xYcEdLAc7T+DhYpd4M6VgWnuz/exzRzhQwoSdEKkEED8CpEoBrEWEiMdrlElGmlkVomLU7P9i9j1rshX/pAq0asnqeSoPdC3vNbU3keiJQnhIHECvw== chris@luna diff --git a/supported-files/user_templates/all/.vimrc b/supported-files/user_templates/all/.vimrc new file mode 100644 index 0000000..0bf54d9 --- /dev/null +++ b/supported-files/user_templates/all/.vimrc @@ -0,0 +1,173 @@ +" An example for a vimrc file. +" +" Maintainer: Bram Moolenaar +" Last change: 1999 Sep 09 +" +" To use it, copy it to +" for Unix and OS/2: ~/.vimrc +" for Amiga: s:.vimrc +" for MS-DOS and Win32: $VIM\_vimrc + +" This line should not be removed as it ensures that various options are +" properly set to work with the Vim-related packages available in Debian. +runtime! debian.vim + +set nocompatible " Use Vim defaults (much better!) +set bs=2 " allow backspacing over everything in insert mode +set ai " always set autoindenting on +" set backup " keep a backup file +"set viminfo='20,\"50 " read/write a .viminfo file, don't store more + " than 50 lines of registers +set viminfo='20,\"50,:20,%,n~/.viminfo +set history=50 " keep 50 lines of command line history +set ruler " show the cursor position all the time +set ignorecase " suchen case-insenitiv +set showmatch " zeige passende klammern +set shell=/bin/bash " shell to start with ! +set expandtab " tabs --> blanks +set showmode " anzeige INSERT/REPLACE/... + +" set smartcase " Do smart case matching + +set incsearch " Incremental search + " Start searching when you type the first character of + " the search string. As you type in more characters, the + " search is refined. + +set t_Co=256 " To enable 256 colors in vim, put this your .vimrc before setting the colorscheme + +" einrueckung +set shiftwidth=3 +set tabstop=3 +" Round indent to multiple of 'shiftwidth' for > and < commands +set shiftround + +" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries +" let &guioptions = substitute(&guioptions, "t", "", "g") + +" Don't use Ex mode, use Q for formatting +map Q gq + +" Make p in isual Visual mode replace the selected text with the "" register. +vnoremap p :let current_reg = @"gvdi=current_reg + +" Switch syntax highlighting on, when the terminal has colors +" Also switch on highlighting the last used search pattern. +if &t_Co > 2 || has("gui_running") + syntax on + set hlsearch +endif + +" Only do this part when compiled with support for autocommands. +if has("autocmd") + +" In text files, always limit the width of text to 78 characters + autocmd BufRead *.txt set tw=78 + + augroup cprog + " Remove all cprog autocommands + au! + + " When starting to edit a file: + " For C and C++ files set formatting of comments and set C-indenting on. + " For other files switch it off. + " Don't change the order, it's important that the line with * comes first. + autocmd FileType * set formatoptions=tcql nocindent comments& + autocmd FileType c,cpp set formatoptions=croql cindent comments=sr:/*,mb:*,el:*/,:// + augroup END + + augroup gzip + " Remove all gzip autocommands + au! + + " Enable editing of gzipped files + " set binary mode before reading the file + autocmd BufReadPre,FileReadPre *.gz,*.bz2 set bin + autocmd BufReadPost,FileReadPost *.gz call GZIP_read("gunzip") + autocmd BufReadPost,FileReadPost *.bz2 call GZIP_read("bunzip2") + autocmd BufWritePost,FileWritePost *.gz call GZIP_write("gzip") + autocmd BufWritePost,FileWritePost *.bz2 call GZIP_write("bzip2") + autocmd FileAppendPre *.gz call GZIP_appre("gunzip") + autocmd FileAppendPre *.bz2 call GZIP_appre("bunzip2") + autocmd FileAppendPost *.gz call GZIP_write("gzip") + autocmd FileAppendPost *.bz2 call GZIP_write("bzip2") + + " After reading compressed file: Uncompress text in buffer with "cmd" + fun! GZIP_read(cmd) + let ch_save = &ch + set ch=2 + execute "'[,']!" . a:cmd + set nobin + let &ch = ch_save + execute ":doautocmd BufReadPost " . expand("%:r") + endfun + + " After writing compressed file: Compress written file with "cmd" + fun! GZIP_write(cmd) + if rename(expand(""), expand(":r")) == 0 + execute "!" . a:cmd . " :r" + endif + endfun + + " Before appending to compressed file: Uncompress file with "cmd" + fun! GZIP_appre(cmd) + execute "!" . a:cmd . " " + call rename(expand(":r"), expand("")) + endfun + + augroup END + + " This is disabled, because it changes the jumplist. Can't use CTRL-O to go + " back to positions in previous files more than once. + if 0 + " When editing a file, always jump to the last cursor position. + " This must be after the uncompress commands. + autocmd BufReadPost * if line("'\"") && line("'\"") <= line("$") | exe "normal `\"" | endif + endif + +endif " has("autocmd") + +" toggle syntax highlighting +map :if exists("syntax_on") syntax off else syntax on endif +map :nohls + +" use to toggle line numbers +nmap :set number! + + +" If using a dark background within the editing area and syntax highlighting +" turn on this option as well +set background=dark + + +" set color for search +hi clear search +hi search term=bold,reverse cterm=bold,reverse gui=bold,reverse + +" set color for Comment +hi clear Comment +"highlight Comment term=bold cterm=bold ctermfg=LightBlue guifg=#80a0ff gui=bold +"highlight Comment term=none cterm=none ctermfg=LightBlue guifg=#80a0ff gui=bold +"highlight Comment term=bold cterm=bold ctermfg=grey guifg=#80a0ff gui=bold +highlight Comment term=none cterm=none ctermfg=grey guifg=#80a0ff gui=bold +"highlight Comment term=none cterm=none ctermfg=177 guifg=#80a0ff gui=bold +"highlight Comment term=none cterm=none ctermfg=215 guifg=#80a0ff gui=bold + +" Go back to the position the cursor was on the last time this file was edited +au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")|execute("normal `\"")|endif + +" visual shifting (does not exit Visual mode) +vnoremap < >gv + +" Scroll when cursor gets within 3 characters of top/bottom edge +set scrolloff=3 + +" Show line, column number, and relative position within a file in the status line +" set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L] +"set statusline=\ %F\ %(\|\ flags:\ %R%M%H%W\ %)%(\|\ type:\ %Y\ %)%(\|\ format:\ %{&ff}\ %)%(\|\ syntax:\ %{synIDattr(synID(line('.'),col('.'),0),'name')}%)\ \ %=line:\ %l/%L\ \|\ column:\ %c%V\ \|\ relative\:\ %p%%\ +set statusline=\ %F\ %(\|\ flags:\ %R%M%H%W\ %)%(\|\ type:\ %Y\ %)%(\|\ format:\ %{&ff}\ %)\ \ %=line:\ %l/%L\ \|\ col:\ %c%V\ \|\ %p%% +" Always show status line, even for one window +set laststatus=2 +highlight StatusLine cterm=none ctermfg=white ctermbg=blue + diff --git a/supported-files/user_templates/back/.ssh/authorized_keys2 b/supported-files/user_templates/back/.ssh/authorized_keys2 new file mode 100644 index 0000000..f763ceb --- /dev/null +++ b/supported-files/user_templates/back/.ssh/authorized_keys2 @@ -0,0 +1,4 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCyWbdnjnN/xfy1F6kPbsRXp8zvJEh8uHfTZuZKyaRV/iRuhsvqRiDB+AhUAlIaPwgQ8itaI6t5hijD+sZf+2oXXbNy3hkOHTrCDKCoVAWfMRKPuA1m8RqS4ZXXgayaeCzVnPEq6UrC5z0wO/XBwAktT37RRSQ/Hq2zCHy36NQEQYrhF3+ytX7ayb10pJAMVGRctYmr5YnLEVMSIREbPxZTNc80H1zqNPVJwYZhl8Ox61U4MoNhJmJwbKWPRPZsJpbTh9W2EU37tdwRBVQP6yxhua3TR6C7JnNPVY0IK23BYlNtQEDY4PHcIuewkamEWpP0+jhEjtwy1TqjRPdU/y+2uQjC6FSOVMsSPxgd8mw4cSsfp+Ard7P+YOevUXD81+jFZ3Wz0PRXbWMWAm2OCe7n8jVvkXMz+KxSYtrsvKNw1WugJq1z//bJNMTK6ISWpqaXDevGYQRJJ8dPbMmbey40WpS5CA/l29P7fj/cOl59w3LZGshrMOm7lVz9qysVV0ylfE3OpfKCGitkpY0Asw4lSkuLHoNZnDo6I5/ulRuKi6gsLk27LO5LYS8Zm1VOis/qHk1Gg1+QY47C4RzdTUxlU1CGesPIiQ1uUX2Z4bD7ebTrrOuEFcmNs3Wu5nif21Qq0ELEWhWby6ChFrbFHPn+hWlDwNM0Nr11ftwg0+sqVw== root@luna +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC5IhVprsvVOcFPbZzD9xR0nCjZ/9qVG6RhLJ7QBSts81nRvLwnmvcMBHSf5Rfaigey7Ff5dLHfJnxRE0KDATn6n2yd/5mXpn2GAA8hDVfhdsmsb5U7bROjZNr8MmIUrP7c3msUGx1FtvzhwxtyvIWOFQpWx+W5biBa6hFjIxT1pkUJqe6fclp7xbGYKZiqZRBS4qKG5CpKnisuOYDsqYPND+OkU+PShoxGVzp1JywIVze7qeKv6GyYbRA9SP9Np+5Mit6B21Io4zOI81c2Rz6sPX7mwEAQEs7iCm2hzG8qJws45Lb4ERqDkVEVhGNUyHjHgGebS1sZx1mLExdurXlPm1l/EamkncDFDCutHXtLP7lsFFiym7fKUjSEgiiLmyu5Xm+mwZvesKa1FYNaeiFWfYZpCJrNzIk+ffs+mgg3kmL4Sd4Ooy7jXPX+WJe5Xyh1KLU/+Wj2TVrhN+LbmupYAti/Wgd3DA1v601svmG82aLmyJRtKC0rGMePH3kDbtqU72kYpzI8mXERe1TIQ00Z77kQBR/7BF/9y5/0YmYDcXt1wNCoSie+mzz3xYcEdLAc7T+DhYpd4M6VgWnuz/exzRzhQwoSdEKkEED8CpEoBrEWEiMdrlElGmlkVomLU7P9i9j1rshX/pAq0asnqeSoPdC3vNbU3keiJQnhIHECvw== chris@luna +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxRcrdHX8UHik7l1gpm7Oc4t4+1AKrkcbGtFlzrlwHV4HmMf29nMxYWdOGUv47CFoAHCPSJAH2fnER22HUozsBlMkPrAgXTsMAfpMZB2gP+F7r4c7wiCuK1+uFy2dz2yBIG+1RK+ygJ5GickHPj7baWRQVbYwWeK15YJqL8oxrL6MpmNYr/cVZ7SDLRJp/44ZgnfxC83O00yJf8VEvoOvvj46JkhgnY9RETRfp7RaziIkJGs8EfNRZ6I0vRPC/shVTXf01GH5rdBcklZYZ2ptMvriyUZ2FfMMEOA86jWs73ZGuTcx8ZQGB3m9TCvz8kTBr9CKjz+fAkfKUpMbGOpO5w== root@backup +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAmQffh8lmO69ukeW0hC7wQ8EEqEsKPja5IvYr1fVqmR5gUJDRFQ015sxpIIuLgo4kCbe6pz7aV6rLUAxysMV06PbBRJPzq0SvaXek3Begygt11U0+HFQN7pVw+agxvbdE0YwxhOfJWl8f/wkti+p/G7+G7O0bMyFdzH2eeYXmzh3Nf4NoST8moQ2PVpDaJ73u/s7Z2oPng2LhVneGqyRdV40exiFOBS5pGJZ/10GZthkrhUAEGzPTusenN4+Vw2oriKP3+eyLzsB8qSPX5u7oR4Su9QY2VxTwkuXZDrxTBZwpIB/mXobMRZeRQxDGeSsU1mCf9cquanFLIx4a1ySUDw== root@backup.warenform.de diff --git a/supported-files/user_templates/root/.bashrc b/supported-files/user_templates/root/.bashrc new file mode 100644 index 0000000..533e4fd --- /dev/null +++ b/supported-files/user_templates/root/.bashrc @@ -0,0 +1,71 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. + +# don't put duplicate lines in the history. See bash(1) for more options +# don't overwrite GNU Midnight Commander's setting of `ignorespace'. +export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups +# ... or force ignoredups and ignorespace +export HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + + +# Note: PS1 and umask are already set in /etc/profile. You should not +# need this unless you want different defaults for root. +# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ ' +# umask 022 +export PS1='\h:\w \$ ' +umask 022 + + +# You may uncomment the following lines if you want `ls' to be colorized: +export LS_OPTIONS='--color=auto' +eval "`dircolors`" +alias ls='ls $LS_OPTIONS' +alias ll='ls $LS_OPTIONS -l' +alias la='ls $LS_OPTIONS -al' +alias l='ls $LS_OPTIONS -lA' +# +# Some more alias to avoid making mistakes: +#alias rm='rm -i' +#alias cp='cp -i' +#alias mv='mv -i' + +alias ..='cd ..' +alias ...='cd ../..' +alias ....='cd ../../..' + + +alias poweroff='echo -e "\n\tplease use: /sbin/poweroff\n"' +alias reboot='echo -e "\n\tplease use: /sbin/reboot\n"' + + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if [ -f /etc/bash_completion ] && ! shopt -oq posix; then + . /etc/bash_completion +fi + + +export EDITOR=vim + +export LINES=64 + +## - set beep more quiet +## - +#xset b 10 500 50 diff --git a/supported-files/user_templates/root/.profile b/supported-files/user_templates/root/.profile new file mode 100644 index 0000000..1a97c71 --- /dev/null +++ b/supported-files/user_templates/root/.profile @@ -0,0 +1,24 @@ +# ~/.profile: executed by Bourne-compatible login shells. + +if [ "$BASH" ]; then + if [ -f ~/.bashrc ]; then + . ~/.bashrc + fi +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" +fi +if [ -d "$HOME/bin/admin-stuff" ] ; then + PATH="$HOME/bin/admin-stuff:$PATH" +fi + +# this is for the midnight-commander +# to become the last directory the midnight commander was in +# as the current directory when leaving the midnight commander +# +# . /usr/lib/mc/bin/mc.sh +. /usr/share/mc/bin/mc.sh + +mesg n