/ rhea_user
rhea_user
1 #!/usr/bin/env bash 2 3 env|grep -q ^DRYRUN=.&&DRYRUN=echo||DRYRUN= 4 5 # 20210317WF - add user 6 # 7 # setup default groups and put ni config in .bashrc 8 # 9 10 # important groups on server 11 _USER_GROUPS=lncd,luna_wallace,kvm,docker,users 12 13 mkpass(){ 14 # concat nwords 15 local n_words=3 16 local min_word_len=5 17 LC_ALL=C grep -P "[a-z]{$min_word_len}" /usr/share/dict/words | 18 shuf -n $n_words| 19 sed 's/.*/\u&/'| 20 tr -dC '[A-Za-z]' 21 } 22 user_dne(){ 23 local user="$1" 24 grep -q "$user" /etc/passwd && echo "have $user in $_" && return 1 25 return 0 26 } 27 add_rhea_user(){ 28 local user="$1"; shift 29 local fullname="$*" 30 $DRYRUN useradd -g lncd -m -G "$_USER_GROUPS" -s "$(which bash)" -c "$fullname" $user 31 } 32 set_passwd(){ 33 local user="$1"; shift 34 local pass 35 [ $# -gt 0 ] && pass="$1" || pass=$(mkpass) 36 echo -e "$pass\n$pass" | $DRYRUN passwd $user 37 echo "# using '$pass'" 38 } 39 add_rc(){ 40 # add default ni settings: env (path, python, fsl, afni, ...) and bash prompt, aliases, etc 41 local user="$1" 42 echo "source /opt/ni_tools/dotfiles/bash/.bashrc" | 43 sudo -u $user tee -a /home/$user/.bashrc >/dev/null 44 45 # R config file: make sure we look to ni_tools for packages 46 sudo -u $user ln -s /opt/ni_tools/dotfiles/Rprofile/.Rprofile /home/$user/ 47 } 48 49 # if running (not sourcing) 50 if [[ "$(caller)" == "0 "* ]]; then 51 # run as root 52 if [ $(id -u ) -ne 0 ]; then 53 sudo $0 "$@" 54 exit $? 55 fi 56 57 # parse args 58 [ $# -lt 2 ] && echo "USAGE: $0 user full name" && exit 1 59 user="$1"; shift 60 fullname="$*"; 61 62 63 # already have user 64 user_dne $user || exit 65 66 add_rhea_user "$user" "$fullname" 67 set_passwd "$user" 68 add_rc "$user" 69 fi