Instalar o Navegador Tor em qualquer distribuição Linux
Publicado por bruno (última atualização em 12/05/2020)
[ Hits: 1.803 ]
Necessário ter a ferramenta CURL instalada em seu sistema.
Debian/Ubuntu:
$ sudo apt install -y curl
Fedora:
$ sudo dnf install -y curl
SuSE:
$ sudo zypper install -y curl
ArchLinux:
$ sudo pacman -S --noconfirm curl
Download e execução:
$ curl -sSL -o tor.sh https://raw.github.com/Brunopvh/torbrowser/master/tor.sh
$ chmod +x tor.sh
$ ./tor.sh --install
$ ./tor.sh --help
Fontes:
https://www.torproject.org/
https://support.torproject.org/tbb/how-to-verify-signature/
#!/usr/bin/env bash # VERSION='2020-05-07' # #-----------------------| INFO |-------------------------------# # Este script baixa e instala a ultima versão do no em qualquer # distribuição linux. # Requerimentos: bash curl # #-----------------------| GITHUB |-----------------------------# # https://github.com/Brunopvh/torbrowser # git clone https://github.com/Brunopvh/torbrowser.git # #-----------------------| Projeto Tor |-----------------------# # https://www.torproject.org/pt-BR/download/ # https://terminalroot.com.br/2015/08/45-exemplos-de-variaveis-e-arrays-em_19.html # Red='\033[0;31m' Green='\033[0;32m' Yellow='\033[0;33m' White='\033[0;37m' Reset='\033[m' #=============================================================# _c() { if [[ -z $2 ]]; then echo -e "\033[1;$1m" elif [[ $2 ]]; then echo -e "\033[$2;$1m" fi } #=============================================================# _msg() { echo -e "[>] $@" } _red() { echo -e "${Red}[!] $@${Reset}" } _green() { echo -e "${Green}[*] $@${Reset}" } _yellow() { echo -e "${Yellow}[+] $@${Reset}" } #=============================================================# usage() { cat << EOF Use: $(basename $0) --help|--install|--remove|--version|--downloadonly -h|--help Mostra ajuda. -i|--install Instala a ultima versão do torbrowser. -r|--remove Desistala o torbrowser. -v|--version Mostra a versão deste programa. -d|--downloadonly Apenas baixa o torbrowser. -u|--update Baixar atualização do navegador Tor se houver atualização disponivel. EOF exit 0 } [[ -z $1 ]] && usage space_line='-----------------------------------------------' #=============================================================# # Verifiacar se um executável existe _WHICH() { # $1 = executável a verificar. if [[ -x $(which "$1" 2> /dev/null) ]]; then return 0 else return 1 fi } #=============================================================# # Requisitos #=============================================================# # Usuário não pode ser o root. if [[ $(id -u) == '0' ]]; then _red "Usuário não pode ser o 'root' saindo" exit 1 fi # Necessário ter a ferramenta Curl. if ! _WHICH 'curl'; then _red "Instale a ferramenta: curl" exit 1 fi #=============================================================# # Arquivos e diretórios #=============================================================# dir_dow="$HOME/.cache/downloads" dir_temp="/tmp/space_tor_$USER" dir_unpack="$dir_temp/unpack" mkdir -p "$HOME/.local/bin" mkdir -p "$HOME/.local/share/applications" mkdir -p "$dir_dow" mkdir -p "$dir_temp" mkdir -p "$dir_unpack" declare -A array_tor_dirs array_tor_dirs=( [tor_destination]="$HOME/.local/bin/torbrowser-amd64" [tor_exec]="$HOME/.local/bin/torbrowser" [tor_file_desktop]="$HOME/.local/share/applications/start-tor-browser.desktop" ) #=============================================================# # Função para desistalar o tor. #=============================================================# _uninstall() { _msg "Desistalando navegador Tor" for c in "${array_tor_dirs[@]}"; do if [[ -d "$c" ]] || [[ -f "$c" ]] || [[ -L "$c" ]]; then _msg "Removendo: $c" rm -rf "$c" else _red "Não encontrado: $c" fi done } #=============================================================# case "$1" in -h|--help) usage; exit;; -r|--remove) _uninstall; exit;; -v|--version) echo -e "$(basename $0) V${VERSION}"; exit 0;; esac ShowLogo() { local GithubScriptTor='https://github.com/Brunopvh/torbrowser' _msg "$space_line" _msg "$(basename $0) V${VERSION}" _msg "${Yellow}A${Reset}utor: Bruno Chaves" _msg "${Yellow}G${Reset}ihub: $GithubScriptTor" _msg "$space_line" } ShowLogo # url = domain/version/name # echo "${tor_server_dir:17:5}" -> Retornar 5 caracteres apartir da posição 17. # /dist/torbrowser/9.0.9/tor-browser-linux64-9.0.9_en-US.tar.xz # _msg "${Yellow}A${Reset}guarde" tor_page='https://www.torproject.org/download/' tor_domain='https://dist.torproject.org/torbrowser' tor_html=$(grep -m 1 'torbrowser.*linux.*64.*tar' <<< $(curl -sSL "$tor_page")) tor_server_dir=$(echo "$tor_html" | sed 's/.*="//g;s/">.*//g') tor_file_name="$(basename $tor_server_dir)" tor_version=$(echo "$tor_server_dir" | cut -d '/' -f 4) tor_url_dow="$tor_domain/$tor_version/$tor_file_name" # Formar a URL apartir dos dados obtidos. tor_url_asc="${tor_url_dow}.asc" tor_path_file="$dir_dow/$tor_file_name" # Local onde o arquivo será baixado. tor_path_file_asc="${tor_path_file}.asc" # Inserir ~/.local/bin em PATH. echo "$PATH" | grep -q "$HOME/.local/bin" || { PATH="$HOME/.local/bin:$PATH" } #=============================================================# # Funções para configurar o PATH do usuário. #=============================================================# path_bash() { # Criar o arquivo ~/.bashrc se não existir if [ ! -f "$HOME/.bashrc" ]; then echo ' ' >> "$HOME/.bashrc" fi # Se a linha de configuração já existir, encerrar a função aqui. grep "$HOME/.local/bin" "$HOME/.bashrc" 1> /dev/null && return 0 # Continuar echo "Configurando o arquivo [$HOME/.bashrc]" echo "export PATH=$PATH" >> "$HOME/.bashrc" } path_zsh() { # Criar o arquivo ~/.zshrc se não existir if [ ! -f "$HOME/.zshrc" ]; then echo ' ' >> "$HOME/.zshrc" fi # Se a linha de configuração já existir, encerrar a função aqui. grep "$HOME/.local/bin" "$HOME/.zshrc" 1> /dev/null && return 0 # Continuar echo "Configurando o arquivo [$HOME/.zshrc]" echo "export PATH=$PATH" >> "$HOME/.zshrc" } _CURL() { # $1 = url # $2 = destino local url="$1" local file="$2" if [[ -f "$file" ]]; then _msg "Arquivo encontrado em [$file]" return 0 fi _msg "Baixando [$url]" _msg "Destino [$file]" if curl -# -SL "$url" -o "$file"; then return 0 else _red "Falha no download" rm -rf "$file" 2> /dev/null return 1 fi } _unpack() { local path_file="$tor_path_file" # Limpar o conteúdo do diretório antes de descomprimir. cd "$dir_unpack" && rm -rf * 1> /dev/null echo -ne "[>] Descompactando: $path_file " #_msg "Destino: [$dir_unpack]" # Detectar a extensão do arquivo. if [[ "${path_file: -6}" == 'tar.gz' ]]; then # tar.gz, 6 ultimos caracteres. type_file='tar.gz' elif [[ "${path_file: -7}" == 'tar.bz2' ]]; then # tar.bz2 type_file='tar.bz2' elif [[ "${path_file: -6}" == 'tar.xz' ]]; then # tar.xz type_file='tar.xz' elif [[ "${path_file: -4}" == '.zip' ]]; then # .zip type_file='.zip' else _red "Arquivo não suportado: [$path_file]" return 1 fi # Descomprimir. case "$type_file" in 'tar.gz') tar -zxvf "$path_file" -C "$dir_unpack" 1> /dev/null || return 1;; 'tar.bz2') tar -jxvf "$path_file" -C "$dir_unpack" 1> /dev/null || return 1;; 'tar.xz') tar -Jxf "$path_file" -C "$dir_unpack" 1> /dev/null || return 1;; '.zip') unzip "$path_file" -d "$dir_unpack" 1> /dev/null || return 1;; *) return 1;; esac echo -e "${Yellow}OK${Reset}" return 0 } _gpg_check() { # https://support.torproject.org/tbb/how-to-verify-signature/ # gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org # gpg --output ./tor.keyring --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290 # local url_tor_key='https://openpgpkey.torproject.org/.well-known/openpgpkey/torproject.org/hu/kounek7zrdx745qydx6p59t9mqjpuhdf' local path_keyring="$dir_temp/tor.keyring" # Verificar se gpg está instalado no sistema. if ! _WHICH 'gpg'; then _red "Instale o pacote [gpg] para verificar assinaturas" return 1 fi # Verificar se gpgv está instalado no sistema. if ! _WHICH 'gpgv'; then _red "Instale o pacote [gpgv] para verificar assinaturas" return 1 fi # Remover arquivo .keyring antigo se existir. if [[ -f "$path_keyring" ]]; then rm "$path_keyring"; fi if [[ -f "$tor_path_file_asc" ]]; then rm "$tor_path_file_asc"; fi _CURL "$tor_url_asc" "$tor_path_file_asc" || return 1 echo -ne "[>] Importando key " if curl -Ss "$url_tor_key" -o - | gpg --import - 1> /dev/null 2>&1; then echo -e "${Yellow}OK${Reset}" else echo ' ' _red "Falha gpg --import" fi _msg "Gerando arquivo: $path_keyring" gpg --output "$path_keyring" --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290 || { _red "Falha ao tentar gerar o arquivo tor.keyring" return 1 } echo -ne "[>] Executando: gpgv --keyring " if gpgv --keyring $path_keyring $tor_path_file_asc $tor_path_file 1> /dev/null 2>&1; then echo -e "${Yellow}OK${Reset}" return 0 else echo ' ' _red "Falha na verificação de integridade, prosseguir com a instalação mesmo assim [s/n]?: " read -t 10 -n 1 sn [[ "${sn,,}" == 's' ]] || return 1 return 0 fi } _install_tor() { if _WHICH 'torbrowser'; then _msg "TorBrowser já instalado use ${Yellow}--remove${Reset} para desinstalar" return 0 fi _CURL "$tor_url_dow" "$tor_path_file" || return 1 for a in "${@}"; do if [[ "$a" == '-d' ]] || [[ "$a" == '--downloadonly' ]]; then _yellow "Somente baixar - $tor_path_file" return 0 break fi done _gpg_check || return 1 _unpack || return 1 _msg "Instalando em: ${array_tor_dirs[tor_destination]}" cd "$dir_unpack" mv $(ls -d tor-*) "${array_tor_dirs[tor_destination]}" chmod -R u+x "${array_tor_dirs[tor_destination]}" cd "${array_tor_dirs[tor_destination]}" ./start-tor-browser.desktop --register-app 1> /dev/null # Gerar arquivo .desktop # Gerar script para chamada via linha de comando. touch "${array_tor_dirs[tor_exec]}" echo '#!/usr/bin/env bash' > "${array_tor_dirs[tor_exec]}" # ~/.local/bin/torbrowser echo -e "\ncd ${array_tor_dirs[tor_destination]} \n" >> "${array_tor_dirs[tor_exec]}" echo './start-tor-browser.desktop "$@"' >> "${array_tor_dirs[tor_exec]}" # Gravar a versão atual no arquivo .desktop echo -e "Version=${tor_version}" >> "${array_tor_dirs[tor_file_desktop]}" chmod u+x "${array_tor_dirs[tor_file_desktop]}" chmod u+x "${array_tor_dirs[tor_exec]}" cp -u "${array_tor_dirs[tor_file_desktop]}" ~/Desktop/ 2> /dev/null cp -u "${array_tor_dirs[tor_file_desktop]}" ~/'Área de trabalho'/ 2> /dev/null cp -u "${array_tor_dirs[tor_file_desktop]}" ~/'Área de Trabalho'/ 2> /dev/null _msg "Configurando PATH" path_bash path_zsh Bash_Shell=$(command -v bash 2> /dev/null) Zsh_Shell=$(command -v zsh 2> /dev/null) if [ -x "$Bash_Shell" ]; then bash -c ". $HOME/.bashrc"; fi if [ -x "$Zsh_Shell" ]; then zsh -c ". ~/.zshrc"; fi if _WHICH 'torbrowser'; then _msg "TorBrowser instalado com sucesso" torbrowser # Abrir o navegador. else _red "Falha na instalação de TorBrowser" return 1 fi } # Verificar se existe atualização disponível. _check_update() { # Filtrar apenas a versão no arquivo .desktop if [[ -f "${array_tor_dirs[tor_file_desktop]}" ]]; then version_instaled=$(grep '^Version=' "${array_tor_dirs[tor_file_desktop]}" | sed 's/.*=//g') else version_instaled='0' fi if [[ "$tor_version" != "$version_instaled" ]]; then _msg "Nova versão disponível - $tor_version" _msg "Baixando atualização" _CURL "$tor_url_dow" "$tor_path_file" _msg "Atualização baixada com sucesso use ${Yellow}bash $(basename $0) --install${Reset} para instalar." else _msg "Não existem atualizações disponiveis" fi } while [[ $1 ]]; do case "$1" in -d|--downloadonly) _CURL "$tor_url_dow" "$tor_path_file";; -i|--install) _install_tor "$@";; -u|--update) _check_update;; *) usage; break;; esac shift done exit
Instalação do Cacti v0.8.7g + Plugins
Select DATAFILES especificando uma Tablespace
Script que gera um relatório diário do sistema!!!
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Falta pacotes de suporte ao sistema de arquivos (Gerenciador de discos... (6)
A area de trabalho ficou preta (16)
Agora temos uma assistente virtual no fórum!!! (244)
Servidor said: 530 5.7.0 Must issue a STARTTLS command first (in r... (0)