Linux: Tips and Tricks
OpenSSL
# conexão openssl s_client -host 200.x.y.z -port XXX # validade openssl s_client -connect cdimage.debian.org:443 2>/dev/null <<< dummy-string | openssl x509 -text -dates | grep ^not notBefore=Aug 21 06:14:00 2017 GMT notAfter=Nov 19 06:14:00 2017 GMT # dump do certificado openssl s_client -connect www.cnj.jus.br:443 -nocommands 2>/dev/null < <(true) | openssl x509 # encrypt openssl enc -aes-256-cbc -salt -in myfile.txt -out myfile.aes-256-cbc # decrypt openssl enc -d -aes-256-cbc -in myfile.aes-256-cbc -out myfile.txt # Adicionar certificado ao bundle do ca-certificates cp myCert.crt /usr/local/share/ca-certificates/ update-ca-certificates
Conexão WIFI WPA em linha de comando
# wpa_cli > scan > scan_results > add_network 0 > set_network 0 ssid "NOME_DA_REDE" > set_network 0 psk "SENHA" > enable_network 0 # dhclient wlan0
O valores de ssid e psk devem estar entre aspas.
Extrair .RPM
# apt-get install rpm2cpio # rpm2cpio /path/to/file.rpm | cpio -i --make-directories
Instalar fontes para LibreOffice e Gimp
# mkdir /usr/share/fonts/truetype/nome_da_fonte # cp ~/path/nomeFonte-Tipo.ttf /usr/share/fonts/truetype/nome_da_fonte
Google App Engine
# dashboard https://console.cloud.google.com/home/dashboard # criar projeto https://console.cloud.google.com/iam-admin/projectsf # criar instância https://console.cloud.google.com/appengine # remove projeto ou recursos https://cloud.google.com/nodejs/getting-started/delete-tutorial-resources # gerenciar repositórios no projeto https://console.cloud.google.com/code/develop/repo # deploy gcloud source repos clone reinaldoc-app1-repo1 --project=reinaldoc-app1 cd reinaldoc-app1-repo1/src npm install --production npm start gcloud app deploy --project reinaldoc-app1
Android setup
* Desativar vibração do teclado * Idioma e texto, teclado do google, preferências, vibrar ao tocar a tecla * Desativar vibrar ao tocar * Som e notificação, outros sons, vibrar ao tocar
APT
# List APT running configuration apt-config dump # /etc/apt/apt.conf - Do not install reommends APT::Install-Recommends "0"; # /etc/apt/apt.conf - Proxy Acquire::http::Proxy "http://10.x.y.z:8080/";
smbclient
smbclient '\\sharesrv.example.br\folder' -W mydomain -U myuser
Git: setup account
ssh-keygen -t rsa -b 4096 -C reinaldoc@gmail.com git config --global user.name "Reinaldo Gil Lima de Carvalho" git config --global user.email reinaldoc@gmail.com git config --global http.proxy http://10.x.y.z:8080
Microfone
# listar dispositivos de audio arecord -l # gravar 5s do microfone do dispositivo hw:card0,device0 arecord hw:0,0 -d 5 /tmp/test-mic.wav # tocar aplay /tmp/test-mic.wav
Mpt devices
# fuse util aptitude install mtp-tools jmtpfs # test device mtp-detect Listing raw device(s) Device 0 (VID=22b8 and PID=2e82) is UNKNOWN. Found 1 device(s): 22b8:2e82 @ bus 2, dev 12 [...] # mount mkdir /mnt/Android jmtpfs -o allow_other /mnt/Android # permit user mount adduser username fuse chown :fuse /dev/fuse chmod g+rw /dev/fuse /etc/fuse.conf user_allow_other # umount fusermount -u /mnt/Android
DD: Skip-on-READ Seek-on-WRITE
echo '# READ TEST END OF 8GB DISK' dd if=/dev/sdf of=tt.raw skip=70240 bs=102400 2>&1 | grep bytes echo '# WRITE TEST END OF 8GB DISK' dd if=tt.raw of=/dev/sdf seek=70240 bs=102400 2>&1 | grep bytes
Badblocks and filesystem
badblocks -n -s -v /dev/sdb1 -o badblocks_sdb1.txt mkdosfs -F32 -v -n "Disk" -l badblocks_sdb1.txt /dev/sdb1
Traffic Shapping – Ingress
# setup virtual interfaces modprobe ifb numifbs=1 # enable each virtual interface ip link set dev ifb0 up # mirror ingress traffic (eth0) to virtual interface (ifb0) tc qdisc add dev eth0 handle ffff: ingress tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0 # apply shapping as usual (affect eth0 input) tc qdisc add dev ifb0 root handle 100: htb default 1007 tc class add dev ifb0 parent 100: classid 100:1000 htb rate 10mbit tc class add dev ifb0 parent 100:1000 classid 100:1007 htb rate 1mbit
Cyrus
# Check database defaults engine from Cyrus source code $ grep '_db"' src/cyrus-imapd/lib/imapoptions
Obtendo versão do serviço de DNS
host -t txt -c CHAOS version.bind ns.example.com
Forjando uma resposta ARP
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects echo 1 > /proc/sys/net/ipv4/ip_forward ettercap --only-mitm --mitm arp:oneway /10.0.0.30/ /10.0.0.1/ tcpdump -i eth0 -nn -s 0 -A
Obtendo base dn do serviço LDAP
ldapsearch -x -h 127.0.0.1 -LLL -s base namingContexts
Gerando um pacote Debian
dpkg-buildpackage -kreinaldoc@gmail.com -rfakeroot lintian -Iiv package_version_amd64.changes
Google Chrome
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list apt-get update && apt-get install google-chrome-stable
Carregar módulos com parâmetros
PixelView PlayTV Mpeg :: /etc/modprobe.d/bttv
options bttv card=72 tuner=43 radio=1
Gforce FX5500/6800/7800 :: /etc/modprobe.d/nvidia
options nvidia NVreg_EnableAGPSBA=1 NVreg_EnableAGPFW=1
Compilando código assembly
nasm -f elf program.asm ld -s -o program program.o
Taxa de transmissão por conexão
iftop -nNP -m 512K
Método de autenticação LOGIN do protocolo SMTP
perl -MMIME::Base64 -e 'print encode_base64("usuario\@dominio.com.br")' perl -MMIME::Base64 -e 'print encode_base64("senha")'
Método de autenticação PLAIN do protocolo SMTP
perl -MMIME::Base64 -e 'print encode_base64("\000usuario\@dominio.com.br\000senha")'
Criando um patch
diff -ur program.orig/ program/ > program-new-version.patch
SSH: Transferindo arquivo (texto) via ssh sem scp
ssh 10.x.y.z "echo -e \"$(cat /tmp/local.sh)\" > /tmp/remote.sh"
SSH: obter fingerprint de chave pública
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub ssh-keygen -l -f ~/.ssh/id_rsa.pub
GPG: gerando e listando chaves públicas
gpg --gen-key gpg --list-keys
GPG: assinando arquivo
gpg --clearsign --output arquivo.asc --sign arquivo
GPG: exportando chave pública
gpg --armor --output reinaldoc.asc --export Reinaldo de Carvalho
Pesquisando arquivos
# find order by last modified find /path -type f -exec ls -1rt "{}" +; find /path -printf "%C@ %p\n" | sort # setuid find /path -perm -4000 # Arquivos com permissão de escrita para todos find /path -perm /o+w # Configurando permissões padrões para arquivos e diretórios find /path -type f -exec chmod 0644 {} \; find /path -type d -exec chmod 0755 {} \; # Arquivos sem permissão de escrita exceto em um diretório find /path ! -writable -not -path './sites/*' -exec chmod u+w {} \; # Alterar extensão dos arquivos find /path -name '*.old-ext' -exec bash -c 'x="{}"; mv $x ${x%.*}.new-ext' \;
Sincronizar espelhos do FISL
rsync --port=993 -aP --delete mozart.softwarelivre.org::fisl6 . rsync --port=993 -aP --delete mozart.softwarelivre.org::fisl7 .
Dicas do tcpdump
tcpdump -nn 'tcp[tcpflags] & tcp-syn != 0' and port 445 tcpdump -nn 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0' and port 80 tcpdump -nn -s 0 -A tcp and port 25 | grep -i -e AUTH tcpdump -nn -s 0 -A tcp and port 110 | grep -i -e USER -e PASS
Nível de tinta de impressora EPSON
escputil -i -u -r /dev/usb/lp0
Listando e-mails
tail -f /var/log/mail/mail.log | grep -Ev '(reject:|connect|disconnect|too many errors|imapd|smtpd_peer_init)'
MySQL: autorizando conexões externas
# Debian 9: /etc/mysql/mariadb.conf.d/50-server.cnf (l.29); # 1. iniciar MySQL em qualquer interface; bind-address = 0.0.0.0 # 2. reiniciar MySQL; /etc/init.d/mysql restart # 3. Conectar ao MySQL como usuário root; mysql # 4. permitir conexão ao servidor ('%' para qualquer IP de origem); update mysql.user set Host = '%' where User = 'johndoe'; # 5. permitir conexão ao banco ('%' para qualquer IP de origem); update mysql.db set Host = '%' where User = 'johndoe' and Db = 'db_name'; # 6. recarregar permissões; flush privileges;
MySQL: corrigindo tabelas ISAM
MySQL deve estar parado. for i in *.ISM ; do isamchk -f -e -r "$i" ; done
MySQL: corrigindo tabelas MyISAM
MySQL deve estar parado. for i in *.MYI ; do myisamchk -f -e -r "$i" ; done
MySQL: realizando backup do schema e dados
# schema mysqldump --no-data devportal > schema-YYYYMMDD.sql # drupal volatile tables mysql -s -e 'show tables;' devportal | grep -E -e '(^cache|cache$)' -e ^search -e ^watchdog -e sessions -e semaphore | while read table; do echo -n "--ignore-table=devportal.$table "; done # data mysqldump --no-create-info --ignore-table=devportal.search_index > data-YYYYMMDD.sql
MySQL: realizando backup completo de uma base de dados
mysqldump -p basename | gzip > basename-$(date +%Y%m%d-%H%M%S).gz
MySQL: restaurando backup de uma base de dados
mysqladmin -f -p drop database mysqladmin -f -p create database mysql -p database < <(gzip -d -c basename-YYYYMMDD-HHMMSS.gz)
MySQL: apagando todas as tabelas
mysqldump -u USER -pPASS --add-drop-table --no-data DATABASE | grep -e '^DROP' > drop-tables.sql mysql -u USER -pPASS DATABASE < drop-tables.sql
MySQL: configurando senhas no formato antigo
SET PASSWORD FOR 'usuario' = OLD_PASSWORD('senha');
Obtendo atualização do UVSCAN anti-vírus
wget ftp://ftp.nai.com/pub/datfiles/english/dat*.zip
Invertendo conteúdo de uma string
rev <<< 123
RAID: alterando número de discos do RAID-1
mdadm --grow /dev/md0 --raid-disks=3 mdadm --manage /dev/md0 --add /dev/sdc1
RAID: informações sobre espelhamentos
mdadm --detail /dev/md0 mdadm --detail --brief /dev/md0 mdadm --examine /dev/sda2
RAID: instalando GRUB em ambos os discos em RAID-1
cat <<EOF > /boot/grub/device.map (hd0) /dev/sda (hd1) /dev/sdb EOF grub-install /dev/sda grub-install /dev/sdb
GRUB: passo a passo
grub grub> device (hd0) /dev/sda grub> root (hd0,1) grub> setup (hd0) grub> quit
GRUB: resolução
# 1. configurar /etc/default/grub GRUB_GFXPAYLOAD_LINUX=1024x768 GRUB_GFXMODE=1024x768 # 2. atualizar GRUB update-grub
Configurando endereço MAC específico
ifconfig eth0 hw ether aa:aa:aa:aa:aa:aa
Formatando e verificando sistema de arquivos VFAT
mkfs.vfat -vc /dev/fd0 fsck.vfat -atVw /dev/fd0 # performance fdisk -H 224 -S 56 /dev/sdf # d1; n; p; CRLF; CRLF; t; c; w; mkfs.vfat -v -F 32 -n label -s 128 -R 256 /dev/sdf1
Criando ISO9660 e Gravando CD
Para kernels 2.4.x, driver ide-scsi deve ser utilizado para o CD-ROM: hdd=ide-scsi mkisofs -r -J -o imagem.iso diretorio cdrecord -v speed=10 dev=0,0,0 -data imagem.iso
BASH: manipulando variáveis com bash
data=root:x:0:0:root:/root:/bin/bash echo ${data#*:} # cut -f2- -d: <<< $data echo ${data##*:} # rev <<< $data | cut -f1 -d: | rev echo ${data%:*} # rev <<< $data | cut -f2- -d: | rev echo ${data%%:*} # cut -f1 -d: <<< $data echo ${data/:/,} # sed -e 's/:/,/' <<< $data echo ${data//:/,} # sed -e 's/:/,/g' <<< $data echo ${data#${data%?}} # rev <<< $data | cut -c1
BASH: if
file=/some/path/file.jar ext=${file##*.} if [ "$ext" == "jar" ] || [ "$ext" == "xml" ] || [ "$ext" == "pom" ]; then echo "Is a jar or xml or pom file" echo -n $(md5sum $line) | cut -c1-32 | tr -d '\n' > $line.md5 echo -n $(sha1sum $line) | cut -c1-40 | tr -d '\n' > $line.sha1 fi
OpenLdap: realizando backup
slapcat -l ldap-(date +%Y%m%d-%H%M%S).ldif
OpenLdap: restaurando backup
/etc/init.d/slapd stop rm /var/lib/ldap/* slapadd -l ldap-YYYMMDD-HHMMSS.ldif chown openldap: /var/lib/ldap/* /etc/init.d/slapd start
OpenLdap: configurando indexes
/etc/ldap/slapd.conf index mail,objectClass,memberUid,uidNumber,gidNumber,ou pres,eq index uid,cn,sn,givenName pres,eq,sub
Samba: definindo a senha do usuário administrativo
smbpasswd -a root
Samba: adicionando uma máquina ao domínio (debian)
adduser --system --no-create-home --force-badname maquina$ adduser -a -m maquina
Samba: active directory services
/etc/samba/smb.conf security = ads workgroup = nome-do-dominio password server = kerberos.server net rpc join -U administrador%senha Os usuários devem existir localmente (pam-ldap, winbind, or /etc/passwd) Samba: controlator primario do serviço smb/cifs (netbios) local master = yes os level = 254 domain master = yes domain logons = yes logon drive = z: logon home = \\%L\%U logon path = \\%L\%U\.profile invalid users =
Samba: autenticando via smb/cifs em outro host
Requer que usuário exista no sistema. encrypt passwords = Yes security = server password server = "Nome_NetBIOS_do_DC"
Squid: autenticando no LDAP
auth_param basic program /usr/lib/squid/ldap_auth -v3 -b "dc=exemplo,dc=com,dc=br" -D "cn=admin,dc=exemplo,dc=com,dc=br" -w "xxxxxxxx" -f uid=%s -h 10.0.0.1 auth_param basic children 5 auth_param basic realm "Entre com seu usuário e senha." auth_param basic credentialsttl 3 hours authenticate_ttl 360 seconds acl autenticar proxy_auth REQUIRED src 10.0.0.0/24 http_access allow autenticar
Squid: permitindo usuário de um determinado grupo
external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -d -b "ou=grupo,dc=exemplo,dc=com,dc=br" -B "ou=usuarios,dc=exemplo,dc=com,dc=br" -f "(&(memberuid=%u)(cn=%g))" -h 10.0.0.1 acl internet external ldap_group grupo-do-ldap http_access allow internet
Squid: proxy transparente
Versão menor 2.6 httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on Versão maior 2.6 http_port 3128 transparent
Squid: proxy reverso para servidor web único
http_port 80 # Porta do serviço do Proxy httpd_accel_host 172.16.1.115 # IP do servidor web httpd_accel_port 80 # Porta do serviço HTTP httpd_accel_single_host on # Encaminhar requisições para um único host httpd_accel_with_proxy on httpd_accel_uses_host_header off
Squid: proxy reverso para servidor baseado na URL
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_single_host off httpd_accel_uses_host_header on
Consultando páginas visitadas
grep '~rei' /var/log/apache2/access.log | grep -viE '(msnbot|Yahoo-MMCrawler|slurp|googlebot|yetibot|libwww-perl|images|icons)' | less grep '~rei' /var/log/apache2/access.log | grep -viE '(msnbot|Yahoo-MMCrawler|slurp|googlebot|yetibot|libwww-perl)' | grep '.html HTTP/' | cut -f2 -d '"' | cut -f2 -d ' ' | sort | uniq -c | sort -n
Categorias:Linux, Sistemas operacionais
arp, assembly, bash, dns version, ettercap, GPG, grub, iftop, lintian, LOGIN PLAIN, modprobe, mysql, mysqladmin, raid
Comentários (0)
Trackbacks (0)
Deixe um comentário
Trackback