HEX
Server: Apache
System: Linux vpshost0650.publiccloud.com.br 4.4.79-grsec-1.lc.x86_64 #1 SMP Wed Aug 2 14:18:21 -03 2017 x86_64
User: bandeirantesbomb3 (10068)
PHP: 8.0.7
Disabled: apache_child_terminate,dl,escapeshellarg,escapeshellcmd,exec,link,mail,openlog,passthru,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,php_check_syntax,php_strip_whitespace,popen,proc_close,proc_open,shell_exec,symlink,system
Upload Files
File: //usr/local/locaweb/bin/lwcorp_fix_owner.sh
#!/bin/bash

# VARS e FUNCTIONS
. /etc/lwcorp/lwcorp.functions

dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --msgbox "\nANTES DE PROSSEGUIR, ATENTE-SE AOS SEGUINTES PONTOS:\n\n
* O FIXOWNER ALTERA O TIMESTAMP DOS ARQUIVOS. CASO O EXECUTE DESNECESSARIAMENTE, FARA COM QUE O BACKUP INCREMENTAL SEJA EXECUTADO
TAMBEM DESNECESSARIAMENTE. PORTANTO, CONSIDERE ISSO;\n\n* O FIXOWNER, QUANDO EXECUTADO EM UM DIRETORIO COM MUITOS ARQUIVOS, PODE
AUMENTAR O PROCESSAMENTO NO SERVIDOR." 13 100

# Seleciona a hospedagem:

FTP_USER_SELECTED=$(dialog --backtitle "$LWCORPHEADER" --stdout --radiolist "\nSELECIONE A HOSPEDAGEM:" 0 0 0 `for a in $CSUSERS; do echo "$a '' off"; done`)

if [ -z $FTP_USER_SELECTED ];then

    # Printa erro caso nao tenha selecionado uma hospedagem:

    dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nVOCE NAO SELECIONOU UMA HOSPEDAGEM.\n\nCONFIGURACAO CANCELADA." 9 65
    echo "$LOGDATE - [Analista nao selecionou a hospedagem e/ou cancelou a configuracao de fixowner]" >> $LOGFILE;
    exit 1

else

   # Caso contrario loga a hospedagem selecionada:

    echo "$LOGDATE - [Analista selecionou a hospedagem $FTP_USER_SELECTED]" >> $LOGFILE;

fi

# Validacao do usuario:

getent passwd $FTP_USER_SELECTED >/dev/null

if [ $? -ne "0" ];then

    # Caso o usuario selecionado nao exista:

    echo "$LOGDATE - [Analista informou usuario inexistente. Cancelada configuracao de fixowner]" >> $LOGFILE
    dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nUSUARIO NAO ENCONTRADO.\n\nCONFIGURACAO CANCELADA." 9 65;
    exit 1

fi

# Apos validar a existencia do usuario, eh solicitado o diretorio a ser corrigido:

dialog --backtitle "$LWCORPHEADER" --title 'INFO' --msgbox "\nAGORA, SELECIONE O DIRETORIO OU ARQUIVO A SER AJUSTADO." 7 65

# Solicita arquivo ou diretorio a ser corrigido:

DIR2FIX=`dialog --backtitle "$LWCORPHEADER" --stdout --fselect /home/$FTP_USER_SELECTED/ 20 100`

if [ -z $DIR2FIX ];then

    # Caso o analista nao tenha informado um diretorio ou cancelado a operacao:

    echo "$LOGDATE - [Analista nao informou path a ser ajustado ou cancelou a configuracao]" >> $LOGFILE
    dialog --backtitle "$LWCORPHEADER" --title "$TITLECANCELADO" --timeout "10"  --msgbox "\nCONFIGURACAO CANCELADA." 7 65 
    exit 1

fi

# Validacao de path:

file $DIR2FIX | grep -w "ERROR" >/dev/null

case $? in
 0) echo "$LOGDATE - [Analista informou path inexistente '$DIR2FIX']" >> $LOGFILE;
    dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --timeout "10"  --msgbox "\nO PATH INFORMADO NAO EXISTE." 7 65;
    exit 1;;    
esac

# Valida se o analista informou algo com "../"

echo $DIR2FIX | sed "s/\// /g" | grep -w "\.\." >/dev/null

if [ $? -eq "0" ];then
    echo "$LOGDATE - [Analista informou path invalido '$DIR2FIX']" >> $LOGFILE
    dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nPATH INVALIDO." 7 65
    exit 1
fi

# Compara o home do usuario com o home onde esta o arquivo:

COMPARE_FTP_USER_SELECTED="`getent passwd $FTP_USER_SELECTED | cut -d: -f6`"
COMPARE_FTP_DIR_FILE_SELECTED="`echo $DIR2FIX | cut -d/ -f1,2,3`"

if [ "$COMPARE_FTP_USER_SELECTED" != "$COMPARE_FTP_DIR_FILE_SELECTED" ]; then
    echo "$LOGDATE - [Analista informou path invalido '$DIR2FIX' para o user '$FTP_USER_SELECTED']" >> $LOGFILE
    dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nPATH INVALIDO PARA '$FTP_USER_SELECTED'." 7 65
    exit 1
fi

if [ "$(echo $DIR2FIX | sed -e 's/\// /g' | xargs -n1 | wc -l)" = "2" ]; then
    echo "$LOGDATE - [Analista informou path invalido '$DIR2FIX']" >> $LOGFILE
    dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nNAO PODE ALTERAR '$DIR2FIX'." 7 65
    exit 1
fi

# Confirmacao do usuario:

dialog --backtitle "$LWCORPHEADER" --title "$TITLECONFIRMACAO" --yesno "\nPATH: $DIR2FIX\nUSER: $FTP_USER_SELECTED\n\nVOCE DESEJA PROSSEGUIR?\n\n" 9 65

# Executa chown e finaliza:

case $? in
    0) chown -Rv $FTP_USER_SELECTED:users $DIR2FIX;;
    *) echo "$LOGDATE - [Processo cancelado pelo analista]" >> $LOGFILE;
       dialog --backtitle "$LWCORPHEADER" --title "$TITLE" --msgbox "OK. CANCELADO." 7 65; exit 1;;
esac

case $? in
    0) echo "$LOGDATE - [Ajustado owner:group de '$DIR2FIX' para $FTP_USER_SELECTED:users]" >> $LOGFILE;
       dialog --backtitle "$LWCORPHEADER" --title "$TITLEINFO" --msgbox "\nOWNER:GROUP AJUSTADOS COM SUCESSO." 7 65; exit 0;;
    *) echo "$LOGDATE - [Erro no ajuste owner:group de $DIR2FIX para $FTP_USER_SELECTED:users]" >> $LOGFILE;
       dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nOCORREU UM ERRO DESCONHECIDO. VERIFICAR." 7 65; exit 1;;
esac