Changeset 2442
- Timestamp:
- Sep 15, 2016, 2:03:24 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
home-linker/trunk/fuentes/home-linker.install/usr/bin/home-linker
r2431 r2442 9 9 } 10 10 11 if [ -n "$1" ]; then 12 USER="$1" 13 fi 14 15 USER=$(trim "$USER") 16 17 NHOME=$(python -c " 18 19 tmp='$HOME'.split('/') 20 last=tmp[-1] 21 print '/'.join(tmp[:-1])+'/'+last.strip() 22 23 ") 24 25 HOME="$NHOME" 11 #SET VARIABLES FOR THE ENVIRONMENT 12 13 #GET VARIABLES 14 USER=$1 15 HL_USER=$(trim "$USER") 16 17 if [ ! -z "$2" ]; then 18 HL_HOME="$2" 19 else 20 NHOME=$(python -c " 21 22 tmp='$LDM_HOME'.split('/') 23 last=tmp[-1] 24 print '/'.join(tmp[:-1])+'/'+last.strip() 25 26 ") 27 28 HL_HOME="$NHOME" 29 fi 30 31 32 if [ ! -z "$LDM_LANGUAGE" ]; then 33 AUX_LANG="$LDM_LANGUAGE" 34 else 35 AUX_LANG="$LANG" 36 fi 37 38 26 39 27 40 # From this file get $LANG 28 { [ -r "$H OME/.pam_environment" ] && . "$HOME/.pam_environment" ;} || { [ -r "/etc/default/locale" ] && . "/etc/default/locale" ;} || LANG="en"41 { [ -r "$HL_HOME/.pam_environment" ] && . "$HL_HOME/.pam_environment" ;} || { [ -r "/etc/default/locale" ] && . "/etc/default/locale" ;} || LANG="en" 29 42 30 43 31 44 # Get Usernames 32 GRP_USER="$(id -ng $ USER)"45 GRP_USER="$(id -ng $HL_USER)" 33 46 34 47 # Source for user-dirs if it exists 35 USER_DIRS="$H OME/.config/user-dirs.dirs"48 USER_DIRS="$HL_HOME/.config/user-dirs.dirs" 36 49 [ ! -r $USER_DIRS ] || . $USER_DIRS 37 50 38 51 # Source the token file if it exists 39 LAST_LOGIN_DIRECTORIES="$H OME/.config/user-dirs.created"52 LAST_LOGIN_DIRECTORIES="$HL_HOME/.config/user-dirs.created" 40 53 [ ! -r "$LAST_LOGIN_DIRECTORIES" ] || . "$LAST_LOGIN_DIRECTORIES" 41 54 42 55 #Temp file with new user-dirs 43 [ -d "$H OME" ] || { mkdir -p "$HOME" ; chown $USER:$GRP_USER "$HOME" ;}44 [ -d "$H OME/.config" ] || { mkdir -p "$HOME/.config" ; chown $USER:$GRP_USER "$HOME/.config" ;}45 TEMP_NEW_USER_DIRS="$H OME/.config/aux-user-dirs.create"56 [ -d "$HL_HOME" ] || { mkdir -p "$HL_HOME" ; chown $HL_USER:$GRP_USER "$HL_HOME" ;} 57 [ -d "$HL_HOME/.config" ] || { mkdir -p "$HL_HOME/.config" ; chown $HL_USER:$GRP_USER "$HL_HOME/.config" ;} 58 TEMP_NEW_USER_DIRS="$HL_HOME/.config/aux-user-dirs.create" 46 59 :> $TEMP_NEW_USER_DIRS 47 60 48 61 #set Acl on Home to be more restricted 49 get_acl_from_server "$H OME" "$GRP_USER" $USER62 get_acl_from_server "$HL_HOME" "$GRP_USER" $HL_USER 50 63 51 64 # Download directory actions 52 DOWNLOADS_LOCALE="$(/usr/bin/xdg_translator "$LANG" "Downloads")" 53 DESKTOP_LOCALE="$(/usr/bin/xdg_translator "$LANG" "Desktop")" 54 DOCUMENTS_LOCALE="$(/usr/bin/xdg_translator "$LANG" "Documents")" 55 SHARE_LOCALE="$(/usr/bin/xdg_translator "$LANG" "Share")" 56 SHARETEACHERS_LOCALE="$(/usr/bin/xdg_translator "$LANG" "Teachers_Share")" 57 GROUPSSHARE_LOCALE="$(/usr/bin/xdg_translator "$LANG" "Groups_Share")" 65 DOWNLOADS_LOCALE="$(/usr/bin/xdg_translator "$AUX_LANG" "Downloads")" 66 DESKTOP_LOCALE="$(/usr/bin/xdg_translator "$AUX_LANG" "Desktop")" 67 DOCUMENTS_LOCALE="$(/usr/bin/xdg_translator "$AUX_LANG" "Documents")" 68 SHARE_LOCALE="$(/usr/bin/xdg_translator "$AUX_LANG" "Share")" 69 SHARETEACHERS_LOCALE="$(/usr/bin/xdg_translator "$AUX_LANG" "Teachers_Share")" 70 GROUPSSHARE_LOCALE="$(/usr/bin/xdg_translator "$AUX_LANG" "Groups_Share")" 71 58 72 59 73 [ ! -z $DESKTOP_LOCALE ] || DESKTOP_LOCALE="Desktop" … … 64 78 [ ! -z $GROUPSSHARE_LOCALE ] || GROUPSSHARE_LOCALE="Groups_Share" 65 79 80 81 82 66 83 # Umount directories mounted previously 67 84 LIST_BIND_MOUNTED="$(mount | grep -E '[,(]bind[,)]' | cut -d ' ' -f3 | tr '\n' ' ')" 68 85 for MOUNT_POINT in $LIST_BIND_MOUNTED; do 69 86 rc=0 70 $(echo $MOUNT_POINT | grep -q $H OME) || rc=187 $(echo $MOUNT_POINT | grep -q $HL_HOME) || rc=1 71 88 if [ $rc -eq 0 ]; then 72 89 umount $MOUNT_POINT || true … … 76 93 77 94 if [ "$TOKEN_DESKTOP" != "$DESKTOP_LOCALE" ]; then 78 if [ ! -z "$TOKEN_DESKTOP" -a -e $H OME/${TOKEN_DESKTOP} ]; then79 mv $H OME/${TOKEN_DESKTOP} $HOME/${DESKTOP_LOCALE}80 else 81 mkdir $H OME/${DESKTOP_LOCALE} || true82 fi 83 fi 84 85 if [ -L "$H OME/${DESKTOP_LOCALE}" ]; then86 rm -rf "$H OME/${DESKTOP_LOCALE}"87 mkdir $H OME/${DESKTOP_LOCALE}88 fi 89 90 chown $ USER:$GRP_USER $HOME/${DESKTOP_LOCALE}95 if [ ! -z "$TOKEN_DESKTOP" -a -e $HL_HOME/${TOKEN_DESKTOP} ]; then 96 mv $HL_HOME/${TOKEN_DESKTOP} $HL_HOME/${DESKTOP_LOCALE} 97 else 98 mkdir $HL_HOME/${DESKTOP_LOCALE} || true 99 fi 100 fi 101 102 if [ -L "$HL_HOME/${DESKTOP_LOCALE}" ]; then 103 rm -rf "$HL_HOME/${DESKTOP_LOCALE}" 104 mkdir $HL_HOME/${DESKTOP_LOCALE} 105 fi 106 107 chown $HL_USER:$GRP_USER $HL_HOME/${DESKTOP_LOCALE} 91 108 echo "TOKEN_DESKTOP=\"$DESKTOP_LOCALE\"" >> $TEMP_NEW_USER_DIRS 92 109 93 110 94 111 if [ "$TOKEN_DOCUMENTS" != "$DOCUMENTS_LOCALE" ]; then 95 if [ ! -z "$TOKEN_DOCUMENTS" -a -e $H OME/${TOKEN_DOCUMENTS} ]; then96 mv $H OME/${TOKEN_DOCUMENTS} $HOME/${DOCUMENTS_LOCALE}97 else 98 mkdir $H OME/${DOCUMENTS_LOCALE} || true99 fi 100 fi 101 102 if [ -L "$H OME/${DOCUMENTS_LOCALE}" ]; then103 rm -rf "$H OME/${DOCUMENTS_LOCALE}"104 mkdir $H OME/${DOCUMENTS_LOCALE}105 fi 106 107 108 chown $ USER:$GRP_USER $HOME/${DOCUMENTS_LOCALE}112 if [ ! -z "$TOKEN_DOCUMENTS" -a -e $HL_HOME/${TOKEN_DOCUMENTS} ]; then 113 mv $HL_HOME/${TOKEN_DOCUMENTS} $HL_HOME/${DOCUMENTS_LOCALE} 114 else 115 mkdir $HL_HOME/${DOCUMENTS_LOCALE} || true 116 fi 117 fi 118 119 if [ -L "$HL_HOME/${DOCUMENTS_LOCALE}" ]; then 120 rm -rf "$HL_HOME/${DOCUMENTS_LOCALE}" 121 mkdir $HL_HOME/${DOCUMENTS_LOCALE} 122 fi 123 124 125 chown $HL_USER:$GRP_USER $HL_HOME/${DOCUMENTS_LOCALE} 109 126 echo "TOKEN_DOCUMENTS=\"$DOCUMENTS_LOCALE\"" >> $TEMP_NEW_USER_DIRS 110 127 111 128 if [ "$TOKEN_DOWNLOADS" != "$DOWNLOADS_LOCALE" ]; then 112 if [ ! -z "$TOKEN_DOWNLOADS" -a -e $H OME/${TOKEN_DOWNLOADS} ]; then113 mv $H OME/${TOKEN_DOWNLOADS} $HOME/${DOWNLOADS_LOCALE}114 else 115 mkdir $H OME/${DOWNLOADS_LOCALE} || true116 fi 117 fi 118 119 if [ -L "$H OME/${DOWNLOADS_LOCALE}" ]; then120 rm -rf "$H OME/${DOWNLOADS_LOCALE}"121 mkdir $H OME/${DOWNLOADS_LOCALE}122 fi 123 124 chown $ USER:$GRP_USER $HOME/${DOWNLOADS_LOCALE}129 if [ ! -z "$TOKEN_DOWNLOADS" -a -e $HL_HOME/${TOKEN_DOWNLOADS} ]; then 130 mv $HL_HOME/${TOKEN_DOWNLOADS} $HL_HOME/${DOWNLOADS_LOCALE} 131 else 132 mkdir $HL_HOME/${DOWNLOADS_LOCALE} || true 133 fi 134 fi 135 136 if [ -L "$HL_HOME/${DOWNLOADS_LOCALE}" ]; then 137 rm -rf "$HL_HOME/${DOWNLOADS_LOCALE}" 138 mkdir $HL_HOME/${DOWNLOADS_LOCALE} 139 fi 140 141 chown $HL_USER:$GRP_USER $HL_HOME/${DOWNLOADS_LOCALE} 125 142 echo "TOKEN_DOWNLOADS=\"$DOWNLOADS_LOCALE\"" >> $TEMP_NEW_USER_DIRS 126 143 127 if [ -d "/run/$ USER/home" -o -d "/net/server-sync/home/" ]; then144 if [ -d "/run/$HL_USER/home" -o -d "/net/server-sync/home/" ]; then 128 145 if [ "$TOKEN_SHARE" != "$SHARE_LOCALE" ]; then 129 if [ ! -z "$TOKEN_SHARE" -a -e $H OME/${TOKEN_SHARE} ]; then130 mv $H OME/${TOKEN_SHARE} $HOME/${SHARE_LOCALE}146 if [ ! -z "$TOKEN_SHARE" -a -e $HL_HOME/${TOKEN_SHARE} ]; then 147 mv $HL_HOME/${TOKEN_SHARE} $HL_HOME/${SHARE_LOCALE} 131 148 else 132 mkdir $H OME/${SHARE_LOCALE} || true149 mkdir $HL_HOME/${SHARE_LOCALE} || true 133 150 fi 134 151 fi 135 152 136 if [ -L "$H OME/${SHARE_LOCALE}" ]; then137 rm -rf "$H OME/${SHARE_LOCALE}"138 mkdir "$H OME/${SHARE_LOCALE}"139 fi 140 chown $ USER:$GRP_USER $HOME/${SHARE_LOCALE}153 if [ -L "$HL_HOME/${SHARE_LOCALE}" ]; then 154 rm -rf "$HL_HOME/${SHARE_LOCALE}" 155 mkdir "$HL_HOME/${SHARE_LOCALE}" 156 fi 157 chown $HL_USER:$GRP_USER $HL_HOME/${SHARE_LOCALE} 141 158 echo "TOKEN_SHARE=\"$SHARE_LOCALE\"" >> $TEMP_NEW_USER_DIRS 142 159 if [ "$GRP_USER" = "teachers" ]; then 143 160 if [ "$TOKEN_SHARETEACHERS" != "$SHARETEACHERS_LOCALE" ]; then 144 if [ ! -z "$SHARETEACHERS_TOKEN" -a -e $H OME/${SHARETEACHERS_TOKEN} ]; then145 mv $H OME/${SHARETEACHERS_TOKEN} $HOME/${SHARETEACHERS_LOCALE}161 if [ ! -z "$SHARETEACHERS_TOKEN" -a -e $HL_HOME/${SHARETEACHERS_TOKEN} ]; then 162 mv $HL_HOME/${SHARETEACHERS_TOKEN} $HL_HOME/${SHARETEACHERS_LOCALE} 146 163 else 147 mkdir $H OME/${SHARETEACHERS_LOCALE} || true164 mkdir $HL_HOME/${SHARETEACHERS_LOCALE} || true 148 165 fi 149 166 fi 150 167 151 if [ -L "$H OME/${SHARETEACHERS_LOCALE}" ]; then152 rm -rf "$H OME/${SHARETEACHERS_LOCALE}"153 mkdir "$H OME/${SHARETEACHERS_LOCALE}"168 if [ -L "$HL_HOME/${SHARETEACHERS_LOCALE}" ]; then 169 rm -rf "$HL_HOME/${SHARETEACHERS_LOCALE}" 170 mkdir "$HL_HOME/${SHARETEACHERS_LOCALE}" 154 171 fi 155 172 156 chown $ USER:$GRP_USER $HOME/${SHARETEACHERS_LOCALE}173 chown $HL_USER:$GRP_USER $HL_HOME/${SHARETEACHERS_LOCALE} 157 174 echo "TOKEN_SHARETEACHERS=\"$SHARETEACHERS_LOCALE\"" >> $TEMP_NEW_USER_DIRS 158 175 fi … … 160 177 161 178 if [ "$TOKEN_GROUPSSHARE" != "$GROUPSSHARE_LOCALE" ]; then 162 if [ ! -z "$TOKEN_GROUPSSHARE" -a -e $H OME/${TOKEN_GROUPSSHARE} ]; then163 mv $H OME/${TOKEN_GROUPSSHARE} $HOME/${GROUPSSHARE_LOCALE}164 else 165 mkdir $H OME/${GROUPSSHARE_LOCALE} || true166 fi 167 fi 168 169 if [ -L "$H OME/${GROUPSSHARE_LOCALE}" ]; then170 rm -rf "$H OME/${GROUPSSHARE_LOCALE}"171 mkdir "$H OME/${GROUPSSHARE_LOCALE}"172 fi 173 174 chown $ USER:$GRP_USER $HOME/${GROUPSSHARE_LOCALE}179 if [ ! -z "$TOKEN_GROUPSSHARE" -a -e $HL_HOME/${TOKEN_GROUPSSHARE} ]; then 180 mv $HL_HOME/${TOKEN_GROUPSSHARE} $HL_HOME/${GROUPSSHARE_LOCALE} 181 else 182 mkdir $HL_HOME/${GROUPSSHARE_LOCALE} || true 183 fi 184 fi 185 186 if [ -L "$HL_HOME/${GROUPSSHARE_LOCALE}" ]; then 187 rm -rf "$HL_HOME/${GROUPSSHARE_LOCALE}" 188 mkdir "$HL_HOME/${GROUPSSHARE_LOCALE}" 189 fi 190 191 chown $HL_USER:$GRP_USER $HL_HOME/${GROUPSSHARE_LOCALE} 175 192 echo "TOKEN_GROUPSSHARE=\"$GROUPSSHARE_LOCALE\"" >> $TEMP_NEW_USER_DIRS 176 193 177 fix_owner_home "$H OME" "$GRP_USER" "$USER"178 179 if [ -d "/net/server-sync/home/$GRP_USER/$ USER/" ]; then194 fix_owner_home "$HL_HOME" "$GRP_USER" "$HL_USER" 195 196 if [ -d "/net/server-sync/home/$GRP_USER/$HL_USER/" ]; then 180 197 # other machines in aula 181 [ "${DESKTOP_LOCALE}" = "" ] || mount --bind /net/server-sync/home/$GRP_USER/$ USER/Desktop $HOME/${DESKTOP_LOCALE} || true182 [ "${DOCUMENTS_LOCALE}" = "" ] || mount --bind /net/server-sync/home/$GRP_USER/$ USER/Documents $HOME/${DOCUMENTS_LOCALE} || true183 [ "${SHARE_LOCALE}" = "" ] || mount --bind /net/server-sync/share $H OME/${SHARE_LOCALE} || true198 [ "${DESKTOP_LOCALE}" = "" ] || mount --bind /net/server-sync/home/$GRP_USER/$HL_USER/Desktop $HL_HOME/${DESKTOP_LOCALE} || true 199 [ "${DOCUMENTS_LOCALE}" = "" ] || mount --bind /net/server-sync/home/$GRP_USER/$HL_USER/Documents $HL_HOME/${DOCUMENTS_LOCALE} || true 200 [ "${SHARE_LOCALE}" = "" ] || mount --bind /net/server-sync/share $HL_HOME/${SHARE_LOCALE} || true 184 201 if [ "$GRP_USER" = "teachers" ]; then 185 [ "${DESKTOP_LOCALE}" = "" ] || mount --bind /net/server-sync/teachers_share $H OME/${SHARETEACHERS_LOCALE} || true186 [ -d $H OME/alum ] || mkdir $HOME/alum187 mount --bind /net/server-sync/home/students/ $H OME/alum || true188 fi 189 [ "${GROUPSSHARE_LOCALE}" = "" ] || mount --bind /net/server-sync/groups_share $H OME/${GROUPSSHARE_LOCALE} || true202 [ "${DESKTOP_LOCALE}" = "" ] || mount --bind /net/server-sync/teachers_share $HL_HOME/${SHARETEACHERS_LOCALE} || true 203 [ -d $HL_HOME/alum ] || mkdir $HL_HOME/alum 204 mount --bind /net/server-sync/home/students/ $HL_HOME/alum || true 205 fi 206 [ "${GROUPSSHARE_LOCALE}" = "" ] || mount --bind /net/server-sync/groups_share $HL_HOME/${GROUPSSHARE_LOCALE} || true 190 207 191 elif [ -d "/var/run/$ USER/home" ]; then208 elif [ -d "/var/run/$HL_USER/home" ]; then 192 209 #Fat clients 193 [ "${DESKTOP_LOCALE}" = "" ] || mount --bind /run/$ USER/home/$GRP_USER/$USER/Desktop $HOME/${DESKTOP_LOCALE} || true194 [ "${DOCUMENTS_LOCALE}" = "" ] || mount --bind /run/$ USER/home/$GRP_USER/$USER/Documents $HOME/${DOCUMENTS_LOCALE} || true195 [ "${SHARE_LOCALE}" = "" ] || mount --bind /run/$ USER/share $HOME/${SHARE_LOCALE} || true210 [ "${DESKTOP_LOCALE}" = "" ] || mount --bind /run/$HL_USER/home/$GRP_USER/$HL_USER/Desktop $HL_HOME/${DESKTOP_LOCALE} || true 211 [ "${DOCUMENTS_LOCALE}" = "" ] || mount --bind /run/$HL_USER/home/$GRP_USER/$HL_USER/Documents $HLHOME/${DOCUMENTS_LOCALE} || true 212 [ "${SHARE_LOCALE}" = "" ] || mount --bind /run/$HL_USER/share $HL_HOME/${SHARE_LOCALE} || true 196 213 if [ "$GRP_USER" = "teachers" ]; then 197 [ "${SHARETEACHERS_LOCALE}" = "" ] || mount --bind /run/$ USER/teachers_share $HOME/${SHARETEACHERS_LOCALE} || true198 [ -d $H OME/alum ] || mkdir $HOME/alum199 mount --bind /run/$ USER/home/students $HOME/alum || true200 fi 201 [ "${GROUPSSHARE_LOCALE}" = "" ] || mount --bind /run/$ USER/groups_share $HOME/${GROUPSSHARE_LOCALE} || true214 [ "${SHARETEACHERS_LOCALE}" = "" ] || mount --bind /run/$HL_USER/teachers_share $HL_HOME/${SHARETEACHERS_LOCALE} || true 215 [ -d $HL_HOME/alum ] || mkdir $HL_HOME/alum 216 mount --bind /run/$HL_USER/home/students $HL_HOME/alum || true 217 fi 218 [ "${GROUPSSHARE_LOCALE}" = "" ] || mount --bind /run/$HL_USER/groups_share $HL_HOME/${GROUPSSHARE_LOCALE} || true 202 219 fi 203 220 mv ${TEMP_NEW_USER_DIRS} ${LAST_LOGIN_DIRECTORIES} … … 208 225 # If you want to change or add directories, just edit the line you're 209 226 # interested in. All local changes will be retained on the next run 210 # Format is XDG_xxx_DIR="$H OME/yyy", where yyy is a shell-escaped227 # Format is XDG_xxx_DIR="$HL_HOME/yyy", where yyy is a shell-escaped 211 228 # homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an 212 229 # absolute path. No other format is supported. 213 230 # 214 XDG_DESKTOP_DIR="\$H OME/$DESKTOP_LOCALE"215 XDG_DOWNLOAD_DIR="\$H OME/$DOWNLOADS_LOCALE"216 XDG_DOCUMENTS_DIR="\$H OME/$DOCUMENTS_LOCALE"231 XDG_DESKTOP_DIR="\$HL_HOME/$DESKTOP_LOCALE" 232 XDG_DOWNLOAD_DIR="\$HL_HOME/$DOWNLOADS_LOCALE" 233 XDG_DOCUMENTS_DIR="\$HL_HOME/$DOCUMENTS_LOCALE" 217 234 218 235 EOF 219 236 chmod 600 "$USER_DIRS" 220 chown $USER:$GRP_USER "$USER_DIRS" 237 chown $HL_USER:$GRP_USER "$USER_DIRS" 238 239 date >> /tmp/home_linker.log 240 echo "El idioma es $AUX_LANG" >> /tmp/home_linker.log 241 echo "" >> /tmp/home_linker.log 242 echo "AFTER HOME LINKER" >> /tmp/home_linker.log 243 tree $HL_HOME >> /tmp/home_linker.log 244 echo "" >> /tmp/home_linker.log 245 cat $HL_HOME/.config/user-dirs.created >> /tmp/home_linker.log 246 echo "" >> /tmp/home_linker.log 247 cat $HL_HOME/.config/user-dirs.dirs >> /tmp/home_linker.log 248 echo "" >> /tmp/home_linker.log 249 echo "END /usr/bin/home-linker" >> /tmp/home_linker.log 250 251 221 252 222 253 exit 0
Note: See TracChangeset
for help on using the changeset viewer.