#################SHELLS, SCRIPTING_E_GERENCIA_DE_DADOS_TOPICO_105################
105.1- comando source - # source Script_Variavel.sh - roda o script no bash local, sem necessidade do comando 'export', # . Script_Variavel.sh - o ponto espaco tbm roda no bash local o script. # alias dt="date +%H:%M" - criando alias dt q mostra hora e minuto
# function funcao1 { Criando funcao
> date; Comandos
> uptime; Comandos
> uname -a; Comandos
> echo "fim da funcao"; Comandos
> } Fechando funcao
# function funcao2 { date; uptime; } - criando funcao2 q roda date; e uptime; para rodar a funcao é só chamar com #funcao2 , # funcao3 () { uptime; uname -v; hostname; } - terceiro modo de criar funcao. , (essas funcoes estao somente nesse bash, se abir outro bash nao funcionam essas funcoes)
lists - #lista=(valor1 valor2 valor3 valor4) - # set | grep lista (saida lista=([0]="valor1" [1]="valor2" [2]="valor3" [3]="valor4") ) , # echo ${lista[2]} - mostra o campo da lista criada, nesse caso saira o valor3 pq o primeiro campo comeca com 0. # array=(A B C D) , # echo ${array[3]} , a saida é D
Apagar as funcoes e lists é #unset funcao1 , #unset lista
105.1-###ARQUIVOS_DE_CONFIGURACAO######
Arquivos q definem configuracoes a todos users # /etc/profile - quando qualquer user faz procedimento de login, ja e o # /etc/bash.bashrc - quando se abre uma nova sessao de shell (bash). No /etc/profile - é um novo login , # vi /etc/bash.bashrc - nesse arquivo podemos criar uma variavel ETCBASHTESTE=valor2
ao procurar a variavel $ETCBASHTESTE nao aparece , mas usando o comando 'bash' a variavel aparece. Para configurações de UM SÓ usuario podem ter 3 arquivos dentro do /home de cada user, #/.bash_profile #/.bash_login #/.profile - no meu linux só tem o .profile para configurar meu usuario sempre que logo. E tem o .bashrc que é para novos bash abertos.
dentro desses arquivos podemos criar alias, variaveis sempre que fazemos login ou iniciamos novo bash. #.bash_logout - sempre que faço logout podemos dar comandos. #/etc/inputrc - para definicoes de terminal, criar opcoes se clico na seta pra cima, pra baixo etc. #/etc/skel - tudo q tiver dentro do skel sera criado
dentro do /home dos novos usuarios criados. O #chsh serve simplesmente para alterar o shell utilizado pelo usuário
##########105.2_CRIACAO_SCRIPTS_INTRODUCAO_SCRIPTS###########################
############CUSTOMIZAÇÃO_CRIACAO_SCRIPT_PARAMETROS_ARQGUMENTOS###############
#!/bin/bash
clear
VAR2="Curso LPI1"
VAR3=99
VAR4=`cat /etc/passwd| wc -l`
VAR5=$(date +%H)
echo "=====================Meu primeiro Script========================"
echo ""
echo "O meu script se chama $0"
echo ""
echo "Esse script tem $# parametros que sao: $1 $2" #retorna quantos parametros tem no meu script
echo ""
echo -n "Por favor, digite um numero de 0 a 10:"
read VAR1
echo "O valor digitado foi $VAR1"
echo ""
uptime
free -m
echo ""
echo "O arquivo /etc/passwd possui $VAR4 linhas. A hora atual é $VAR5"
echo ""
echo "Fim do Script"
A Saida dele fica :
=====================Meu primeiro Script========================
O meu script se chama ./Primeiro_Script.sh
Esse script tem 2 parametros que sao: 10 Paulo
Por favor, digite um numero de 0 a 10:3
O valor digitado foi 3
13:06:24 up 4 days, 11:47, 1 user, load average: 0,00, 0,00, 0,00
total used free shared buff/cache available
Mem: 2000 108 1211 7 680 1705
Swap: 2045 0 2045
O arquivo /etc/passwd possui 38 linhas. A hora atual é 13 (saida da $VAR4 e da $VAR5)
Fim do Script
vi PrimeiroScript.sh - # exec ./PrimeiroScript.sh - executa e sai do usuario. Meu script ta em /home/paulo/Scripts , entao adiciono esse caminho na variavel PATH para que rode o Script sem colocar ./ , source ou . #She-bang - sinalizacao de qual vai ser o programa usado. Normalmente usado o #!/bin/bash
[ -f /etc/bash.bashrc ]; then (-f faz um teste pra ver se o arquivo /etc/bash.bashrc existe)(pode ser feito tbm com ' test -f /etc/bash.bashrc')
. /etc/bash.bashrc
if [ "`id -u`" -eq 0 ]; then (se id -u for igual a 0 'se o usuario for root')
PS1='# '
else
PS1='$ '
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then (-z quer saber se o tamanho dessa string é zero && '-r' e se esse arquivo /etc/debian_chroot tem permissao de leitura )
###TESTE_DO_CASE#############
echo ""
case $VAR1 in
0)
echo "Valor digitado foi 0"
;;
1|2|3|4|5)
echo "O valor digitado foi entre 1 e 5"
sleep 3
;;
*) # o sinal * é como se forsse else
echo "O valor digitado foi maior que 5"
esac
Análises de Arquivos e Diretórios: -f Arquivo : Verifica se o arquivo indicado existe e é um arquivo regular, -d Arquivo : Verifica se o caminho indicado é um diretório existente :-r Arquivo : Verificar se há permissão de leitura
-w Arquivo : Verificar se há permissão de escrita , -x Arquivo : Verificar se há permissão de execução , -s Arquivo : Verifica se o tamanho do arquivo é maior que 0
####Comparação de Strings#####
-n $VAR1 : Usado com variáveis, verifica se o tamanho do conteúdo da variável é diferente de zero (nonzero) , -z $VAR1 : Usado com variáveis, verifica se o tamanho do conteúdo da variável é zero , $VAR1 : Usado com variáveis, indica verdadeiro se $VAR1 não for nulo
String1 = String2 : Compara se as duas strings são iguais , String1 != String2 : Verifica se as duas strings são diferentes
#####Comparação de Valores Numéricos##########
Valor1 -eq Valor2 : Verdadeiro se os 2 valores forem iguais (equal) , Valor1 -ne Valor2 : Verdadeiro se os 2 valores forem diferentes (not equal) , Valor1 -gt Valor2 : Verdadeiro se o Valor1 for maior que Valor2 (greater than) , Valor1 -ge Valor2 : Verdadeiro se o Valor1 for maior ou igual que Valor2 (greater or equal)
Valor1 -lt Valor2 : Verdadeiro se o Valor1 for menor que Valor2 (less than) , Valor1 -le Valor2 : Verdadeiro se o Valor1 for menor ou igual que Valor2 (less or equal)
##################FOR_WHILE_UNTIL##################
expr 1 + 2 - saida e 3 ,
#############MYSQL################
> select * from employees where hire_date > "1999-01-01" and gender="F" and first_name like "S%";
> select * from employees where hire_date between "1999-01-01" and "2000-01-01" and gender="F" and first_name like "S%";
# mysqlshow - ver os bancos que tem, # mysql employees - entrando no banco employees , #show tables, select gender, count(*) from employees group by gender; - contando quantos homens e mulheres
#select employees.first_name, employees.last_name, salaries.salary, salaries.to_date from employees join salaries on employees.emp_no=salaries.emp_no where salaries.salary > 150000 order by to_date; - Buscando pelo nome e sobrenome e salarios acima de 150000
# insert into departments (dept_no, dept_name) values ("d101","Support Technical") - inserindo valores na tabela , > #insert into departments set dept_no="d103", dept_name="Deployment"; - outra forma de inserir dados na table ,
# update departments set dept_name="Dev Ops Novo" where dept_no="d100" - atualizando um campo - #delete from departments where dept_no="d104";
#########INTERFACES_USUARIOS_DESKTOPS_TOPICO_106########
106.1 - Configurar X11, ambiente ,comandos e configuracoes - x11 é onde tem o controle movimento do mouse, controle de janelas, monitores, graficos, cores, trabalha como cliente x servidor, mozilla é um cliente do servidor X, Arquivo Xorg.conf - (interface roda normalmente no terminal 7 tty7) , ## systemctl isolated.multi-user.target - para alterar o target padrao de 5 que é grafical para multiuser, que é 2 3 e 4.
Agoraa podemos gerar arquivo de configuracao xorg.conf para configurar o servidor x . # Xorg -configure - comando para criar o /root/xorg.conf.new , Apos copiar o arquivo xorg.conf.new e criando o /etc/X11/xorg.conf - # cp xorg.conf.new /etc/X11/xorg.conf - copiando e criando o xorg.conf, #startx - inicia novamente a interface gráfica. Servidor xfs - é o servidor de fontes , podemos adicionar servidores de fontes
dentro do arquivo /etc/X11/xorg.conf adicionamos FontPath "unix:/7100" e FontPath "tcp/fonts.server.com:7100" , dentro do xorg.conf é separado por sessoes onde cada sessao tem seu identifier , mouse, teclado, monitor, sessao da placa de video, sessap tela, sessao das fontes. #xdpyinfo - informacoes da interface X e da tela. #xwininfo - mostra informacoes de uma janela, apos dar o comando, selecionamos a janela
que queremos verificar as informacoes de posicao, tamanho etc. #xvinfo - comando para ver capacidade dos adaptadores de video, profundidade de cor, tamanho maximo de imagens etc.
#########ACESSIBILIDADE###########
106.3- Sticky Keys - evita que seja necessário ficar segurando teclas pra fazer comandos exemplo: Pra fazer letras maiusculas, tem opcao de desabilitar o sticky keys se o sistema perceber q vc consegue digitar duas teclas.
Slow keys - funciona somente se eu segurar a tecla , se apertar rapido nao digita. Bounce Keys - se eu apertar 2x a mesma tecla so funciona a primeira apertada.
Mouse emulation - usa as teclas numericas como mouse 8 pra cima , 2 pra baixo , 4 esquerda, 6 direita etc.
Onboard Keyboard - GOK - Gnbome onboard Keyboard. Digitando Appearance no menu iniciar - tem as opcoes de aparencia - TEm a opcao High Contrast - pessoas com problemas em ver cores. POdemos aumentar as fontes em Fonts
Screen Magnifier - KMAG - da zoom no local onde estou com o mouse, como se fosse uma lupa. Screen Reader - Leitores de tela - ORCA e emacspeak, o principal é o Orca. brltty - para utilizar o braille display.
####FONTES####
Dentro do arquivo /etc/X11/xorg.conf - na sessao Files que é onde tem as fontes mostra os caminhos de onde estao
as fontes /usr/share/fonts/X11/ - dentro desse arquivo onde tem as fontes por exemplo Type1 ,
deve ter 2 arquivos principais 'fonts.scale e fonts.dir', para criar esses arquivos primeiro #mkfontscale depois
#mkfontdir , Quando tiver servidor de fontes local vai estar no /etc/X11/xorg.conf a linha na
sessao Files - FontPath "unix:/7100" ou pode ter um xfs(x font server) se tiver a linha FontPath "tcp/font.server.com:7100"
######CCONFIGURAR_X11_VARIAVEL_DISPLAY###############
Consigo rodar um programa em uma maquina e a imagem ser mostrada em outra maquina com o servidor X.
echo $DISPLAY - Criando a variavel DISPLAY que infomrara quem devera exibir as janelas, se é o servidor X local ou de outra maquina. Por padrao a config é :0.0 -
quando nao tem nada antes do : significa que é localhost (Servidor X local), depos do : é a informacao do display , monitor 0 e entrada 0.
Para mostrar a informacao na outra maquina usamos o comando #export DISPLAY="192.168.0.26:0.0 -
depois de rodar esse comando ainda nao conseguimos exibir o programa em outra maquina pq existe uma protecao(Lista de controle) na outra maquina,
para liberar o acesso para uma maquina é com o , # xhost +10.0.0.105 - agora podemos mostrar a tela de um programa aberto por outro pc.
#xhost + - desabilita o controle de acessos e deixa aberto pra todos acessar, mesmo assim o pc destino nao libera abrir programas por conta do 'Display Manager' -
q é o programa q controla os logins dentro da interface X. Para fazer isso devemos desabilitar o '-nolistem tcp'
(podemos ver isso rodando com o comando ps -aux | grep X) , Para desabilitar é dentro de '/usr/share/lightdm/lightdm.conf.d/, editamos o
# vi 50-xserver-command.conf - inserimos a linha 'xserver-allow-tcp=true' , salvamos e depois restarta o lightdm
com #systemctl restart lightdm - depois logamos novamente, agora o nolistem sumiu, agora dar
o comando xhost + (na maquina destino) novamente para liberar acesso geral apos reiniciar. Usando o comando xcalc vai abrir a calculadora na outra maquina
'################DISPLAY_MANAGER#####
Gerenciador de login - lightdm , xdm, gdm, kdm, xdmcp -
arquivo para trocar os Display manager é /etc/X11/default-display-manager ,
para instalar o xdm pode ser apt-get install xdm , dentro do arquivo 'default-display-manager',
colocar o caminnho de onde esta o display manager, (usar o whereis para econtrar o caminho.)
coloquei /usr/sbin/lightdm dentro do arquivo default-display-manager e resetei a maquina para subir
com o nomvo display manager. Os arquivos de configuracao do lightdm sao /etc/lightdm/lightdm.conf - configuracoes gerais, (as vezes nao existe esse arquivo)
no /etc/lightdm/lightdm.gtk-greeter.conf - configurar a tela inicial letras, tela de fundo icones, botoes, aparencia do display manager,
tbm pode ser editado o arquivo usr/share/60-lightdm-gtk-greeter.conf ,
Para funcionar como cliente x servidor onde eu doderia usar de outra maquina o lightdm ,
pra isso edito o /etc/lightdm/lightdm.conf - inserindo o seguinte: [XDMCPServer] enable=true (X Display Manager Control Protocol) ,
reiniciar com systemctl restart lightdm , Usando do modo servidor x cliente, no display manager é diferente do metodo da variavel $DISPLAY,
agora é como se tivessemos logando na outra maquina,
SESSAO-10-###############TAREFAS_ADMINISTRATIVAS###############
107.1-GERENCIAMENTO DE USUARIOS - passwd, shadow, group - o arquivo /etc/passwd - contem todas as infos dos users, o 3º campo é o UID id do user, GID é o id do grupo, root sempre tem o ID 0 e GID 0 tbm.
Usuarios criados por nos por padrao começam o UID e GID sempre a partir de 1000.
Campos do passwd - 1 - nome do user letras min, 2- senha o user (x), 3 - UID e GID, 4 - comentario(nome do user, programa)
5 - home do user em caso de pessoas, ou diretorio padrao de programas em caso de user de sistemas
6- shell padrao do usuario (normalmente é o ; /bin/bash e user de sistemas /bin/false ou /bin/nologin).Posso ter 2 user com o mesmo UID
/etc/shadow - campo 1 - nome o user , campo 2 - senha transformada com RASH
/etc/group - campo 1 - nome do grupo , campo 2 - senha do grupo , campo 3 - id do grupo, 4 - usuarios do grupo , /etc/gshadow - local onde tem as senhas do grupo -
/etc/login.defs - definicoes de controle de login do users , consigo setar onde começa os UIDs dos users e onde termina os UIDs
#####USERDD_USERDELL_USERMOD#############
useradd usuario2 - criando o usuario2 , com o useradd nao cria a senha e fica com ! no campo da senha em /etc/shadow e cria no /etc/group o usuario2 com o seu GID,
# useradd -c "Nome do usuario" -s /bin/bash usuario3 - comando cria o usuario com -c - comentario do usuario (4º campo do /etc/passwd), com -s - informar o shell padrao (6º campo do /passwd/) e o nome do user usuario3 ,
# useradd -m -s /bin/bash usuario4 - com o -m cria o /home do usuario4 (pq com o useradd nao esta criando automaticamente) se usar o -d é pra criar um /home/dir diferente do padrao, -g - define grupo padrao do usuario -G - para outros grupos suplementares.
-M - nao cria o /home , -p para inserir a senha ja em hash gerada por outro comando , -u definir qual o UID quero,
#userdel - remover usuarios - apaga do /shadow /passwd e /group mas nao apaga o /home/usuario4(isso é para segurança)
#userdel -r usuario2 - remove diretorios do /home tbm. #usermod - altera informacoes do user , defini comentário, muda o /home, o shell. # usermod -c "Nome do ususario " usuario3 - altera o comentario do /passwd
#passwd - definir senhas do usuario - passwd usuario5, se digitar só passwd - ele pede pra trocar mnha propria senha ,
su usuario3 - para trocar de um user para o usuario3, se eu der o passwd paulo do usuario3, nao é permitido, somente o root poderá trocar de outros users.
#adduser - script pronto q cria grupos, solicita senha, e pede diversas informacoes.
# /etc/group - campo 1 usuario, campo 2 senha e campo 3 GID . #groupadd, #groupdel , #groupmod - groupadd suporte - só cria o grupo suporte(nao cria users)
# groupadd -g 2000 teste_team - com o -g cria o grupo escolhendo o GID 2000, # groupmod -n devops suporte - modifica o nome do grupo suporte para devops ,
## usermod -G qateam usuario2 - alterar usuario2 para o grupo qateam , mas ele sai do grupo q estava e so fica no qateam, para permanecer nos dois é # usermod -a -G qateam usuario2 - adiciona com -a -G em outro grupo.
#newgrp - faz com o que o usuario assuma um novo grupo do qual ele ja faz parte , exemplo estou logado como usuario3 #newgrp devops - assumo(usuario3) as informacoes do grupo devops direto ,
#gpasswd dev - criando senha para o grupo dev - podemos ver q tem senha no grupo em /etc/gshadow - aparece o hash da senha no grupo. com o usuario3 damos o comando #newgrp dev - e logamos com a senha no grupo dev
# id - comando id mostra meu UID e GID do meu user, # id usuario3 - mostra do que escolho, #groups - mostra os grupos do meu user, #groups usuario3 - mostra do user que escolho.
#getent passwd usuario2 - pega informacoes do arquivo passwd somente do usuario2 , #getent group
# chage -l usuario3 - mostra informacoes sobre usuario, quando a senha foi alterada, quando expira, quando a conta expira, maximo de dias q pode ficar sem trocar senha, minimo de dias q pode trocar a senha e quando dias antes de expirar a senha mando alertas ,
#chage -M 10 - troca o maximo de dias que o usuario pode ficar com a mesma senha. # chage -d 2017-01-01 usuario3 - troca manualmente a data da ultima alteracao de senha. # chage -W 10 usuario3 - altera o tempo em q começa a gerar alerta para 10 dias antes de expirar a senha.
As alteracoes feitas pelo #chage podem ser vistas com # grep usuario3 /etc/shadow - dentro do shadow, após o hash da senha .
# chage -E -1 usuario3 - remove a data de expiração da conta com o -1 , #chage -d 0 usuario3 - pede para mudar a senha no proximo login .
############AGENDADOR DE TAREFAS 107.2_###################
Processo Cron e agendamentos - A cron é um daemon porque semrpe tem que estar rodando no sistema. ## vi /etc/crontab - dentro da cron os 5 primeiros itens sao de
agendamento '17 * * * *' - 1º campo é o minuto , 2º é hora, se tem * significa toda hora, 3º dia do mês(1 ate 31), 4º camppo é o mes (1 ate 12), 5º campo (dia da semana) vai de 0 ate 7 (0=domingo e 7=domingo tbm)
6º campo é o usuario que vai rodar, 7º campo são os comandos, ou sequencia de comandos ou scrpts que é o mais comum. Arquivos que configuram por hora /etc/cron.hourly, por dia /etc/cron.daily,
por semana /etc/cron.weekly , por mes /etc/cron.monthly, # /etc/cron.d - arquivo com agendamentos, como no arquivo /etc/crontab
#############107.2_AGENDAMENTO_TAREFAS_COMANDO_CRONTAB_ARQUIVOS_CONTROLE#############
#crontab - #crontab -l - listar os agendamentos ativos , # crontab -l -u paulo - lista os agendamentos do user paulo, mas se nao for root, nao consegue ver os agendamentos de outros users.
# crontab -e - entra em modo de edicao,
# m h dom mon dow user command
15 13 1,10,20,30 * 1-5 cd / && run-parts --report /etc/cron.hourly = no minuto 15 de das 13h de todo dia 1,10,20,30 dos meses de out
*/10 * * * test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) = */10 significa a cada 10 minutos
0 0 1 1 * test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) - em cada minuto 0 das 0 horas dos dias 1 do mes 1 de todas as horas , dias, meses, de todos dias da semana
20 9-18 * * 1-5 test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) - 9-18 - de 9 até 18 horas (roda as 9:20, 10:20, 11:20 ...)
#crontab -r - remove a crontab do usuario q vc esta logado. (cada usuario tem sua crontab, consigo apagar a crontab de todos os users somente com o root).
#crontab exemplo-cron - importa os dados do arquivo exemplo-cron para dentro da crontab do usuario q estou logado.
# cd /var/spool/cron/crontabs/ - local onde estão armazenadas as crons de todos users;
#/etc/cron.allow ou #/etc/cron.deny (arquivos devem ser criados nao existem por padrao) - servem para controlar quem deve ou não ter opção de usar crontab;
# m h dom mon dow user command
15 13 1,10,20,30 * 1-5 cd / && run-parts --report /etc/cron.hourly
*/10 * * * test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
0 0 1 1 * test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
20 9-18 * * 1-5 test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#cd /var/spool/cron/crontabs -
Por padrao todos users podem ter crontab, mas posso controlar quem pode e quem nao pode com os arquivos /etc/cron.allow e /etc/cron.deny , se eu colocar user no
/etc/cron.allow - somente os users desse arquivo poderao ter crontab, e os que estao na cron.deny, serao proibidos os que forem listados nesse arquivo.
se o mesmo user estiver nos dois arquivos , o allow tem prioridade.
anacron - Se a maquina estiver desligada no momento q a cron estiver programada ja era, perdeu! Somente se tiver o #anacron - executa no inicio do sistema, e conforme programado.
# vi /etc/anacrontab -
1 5 cron.dayly run-parts --reports /etc/cron.daily o 1 é de a cada 1 dia depois q passou 1 dia roda 5 minutos depois 'cron.daily' é o identificador.
7 10 cron.weekly run-parts --reports /etc/cron.weekly roda a cada 7 dias com delay de 10 minutos após esses 7 dias.
@monthly 15 cron.monthly run-parts --reports /etc/cron.monthly @monthly é o outro jeito que pode ser informado , tbm podemos colocar @daily, @weekly
Dentro do /etc/crontab prestar atencao que mostra uma mensao do anacron
test -x /usr/sbin/anacron' || cd / && run-parts --report /etc/cron.daily) - essa linha informa que se rodar o anacron nao roda o cron.daily.
#at - para agendar um job 1x só, em uma hora especifica - #at now +2hours - (conte duas horas a partir de agora) - o prompt fica at> e podemos digitar os comandos
at> echo "hora do café" at> clear , pra encerrar o at é com ctrl+d (com isso é criado um job) - ou seja daqui a 2 horas vai rodar o comando mostrando "hora do café" e clear
#atq - mostra os jobs que foram criados com o comando #at , mostrando quando que vai rodar a saida fica (1 Wed Aug 7 00:38:00 2019 a root), #at - l - =e o mesmo resultado q #atq
#at 22:00 - roda as 22:00 , caso ja tenha passado do horario , ele agenda para o proximo dia. #at midnight - #at teatime , # at 02:20pm 20012018 - agendmento com horario e dia certo.
#atrm 2 - remove o job 2 , vi /etc/at.deny - (ja vem no sistema) , /etc/at.allow - tem que criar, (se nao tiver nenhum dos arquivos, so o root pode usar o at)
#########107.3_LOCALIZACAO_INTERNACIONALIZAÇAO############
#timedatectl - traz informacoes de Universal time (hora em greenwitch) #cd /usr/share/zoneinfo/ - arquivos com diversos locais como do mundo
#ls -l /etc/localtime - /etc/localtime -> /usr/share/zoneinfo/America/Sao_Paulo (onde mostra o link do timezone do meu sistema) # vi /etc/timezone - mostra o timezone usado no momento.
#tzselect - auxilia a selecionar o timezone correto , podemos escolher os numeros do local no caso 2) para americas 49) EUA. FInalizando ele muda o /etc/timezone
#export TZ=America/Chicago - muda o horario do sitema inserindo o local na variavel TZ. O TZ altera o timezone somente em uma sessao bash.
A variavel TZ sobescreve o que tem no /etc/localtime - a variavel TZ pesa mais que o link /etc/localtime
Mudando pelo /etc/localtime - ir para cd /usr/share/zoneinfo/ - escolhi Asia/Bankok - primeiro removemos o link /etc/localtime -> /usr/share/zoneinfo/America/Sao_Paulo
removendo - rm -f /etc/localtime , depois criamos novamente com o novo link para Bangkok # ln -s /usr/share/zoneinfo/Asia/Bangkok /etc/localtime
COm o comando #timedatectl podemos ver q ja trocou para o horario de bangkok,
107.3########CONFIGURACAO_HORARIO_FUSO########
Variavel TZ - TZ=America/Sao_Paulo - configurando outro time zone somente em uma sessao, podemos configurar por perfil de user, dentro de .bashrc
107_3#############IDIOMA_LINGUAGEM_CODIFICACAO#######
#locale - Mostra informacoes de linguagem, configuracao de teclado com a liguagem e localizacao, saida ( LC_CTYPE="C.UTF-8" LC_NUMERIC="C.UTF-8" e LC_TIME="C.UTF-8"
#locale -a - mostra as linguagens disponiveis . Caso tenha algum usuario q fala english, configuramos o locale no .bashrc dele como linguagem ingles ,
#iconv -f ISO-8859-1 -t UTF08 arquivo-teste-win.txt > novo_arquivo-teste - converte um formato de arquivo em outro , necessário jogar a conversao em outro arquivo.
#LANG=C - para deixar as configuracoes padroes para os scripts, e nao produzam resultados diferentes por conta de linguagem de outro pais.
108.1#####MANUTENCAO_HORA_RELOGIOS##########
O linux possui o relogio da bios(hardware) e do sistema - #date (Qua Ago 7 23:04:02 CEST 2019) e #hwclock - (Qua 07 Ago 2019 23:03:37 CEST .048919 seconds) - nao tem sincronia entre eles
#date -u - horario universal , # date +%Y - mostra ano 2019 # date +%y - mostra ano 19 , # date +%H:%M - mostra hora:minuto , #date +%T - mostra hora min e segundo
#date 120112002018 - mudar o horario e data para 01/12/2018 as 12:00
#hwclock - mostra horario da bios, hwclock -w (--systohc) - sincroniza a hora do sistema com hora do hardware (tbm pode ser hwclock) , #hwclock -s - pega hora do hardware e coloca no do linux
#hwclock --set --date "12/01/2017 14:00" - defino o horario do hardware
108.1####NTP##########
Network Time Protocol - servidor que sincroniza todos computadores, Precisa ser instalado e roda pelo daemon '/usr/sbin/ntpd' , ntp roda com udp ,tcp na porta 123.
# vi /etc/ntp.conf - arquivo de confguracao do ntp - contem driftfile- arquvio de log , contem: pool 0.ubuntu.pool.ntp.org,pool 1.ubuntu.pool.ntp.org ,pool 2.ubuntu.pool.ntp.org, pool 3.ubuntu.pool.ntp.org - que sao servidores que consultam o horario,
pode aparecer como server ao inves de pool o nome deles. Os servidores pool sao encontrado no site pool.ntp.org/pt - que sao servidores ntp confiáveis para qualquer pessoa usar.
#vi /etc/ntp.conf - o campo restrict - libera ou bloqueia para usarem o meu pc como ntp server,
## ntpq -p - mostra os servidores ntp que estou usando, estatisticas deles , ## ntpq -pn - remove a resolucao de nomes dos servers ntp
#ntpdate - para meu sistema fazer consultas manualmente sem o daemon 'ntpd' , #ntpdate 0.europe.pool.ntp.org - vai ate o servidor e consulta o horario que ta nesse servidor
#ntpdate -q - consulta se o servidor esta OK.
108.2 ######GERENCIAMENTO_DE_LOGS#############
Principal processo é o syslogd , mas exsitem o syslog, rsyslog, syslog-ng , #vi /var/log/ - principal diretorio de logs; dentro terão o /messages , /syslog, /secure
#vi /etc/syslog.conf - principal arquivo de CONFIGURACAO - cada registro é separado por:
- facility = criador da mensagem alguns sao (auth, authpriv, cron, daemon , kern, mail, mark , news, syslog, user, uucp, local0, local7 ) ,
- priority = nivel da mensagem, (debug, info, notice, warning(warn) , err(error), crit, alert, emerg(panic))
- action = destino da mensagem , os destinos sao (arquivo de log, tela de usuario, servidor de log remoto) Exemplo de linha do arquivo 'daemon.* -/var/log/daemon.log' - o traço - quer dizer que assim que for criado o log ele nao sera enviado na mesma hora pro arquivo, por questoes de desempenho.
mail.* -/var/log/mail.log - facility é o mail o * informa que é qualquer priority, vai mantar pro /var/log/mail.log ;
auth,authpriv.* /var/log/auth.log - quando tem dois facility é separado por virgula.
*.*;auth,authpriv.none -/var/log/syslog - nessa linha é qualquer facility, qualquer priority, o ; para colocar outra regra, no caso .none que é onde nao tenha auth,authpriv
mail.info -/var/log/mail.info - tudo que vier como mail e tiver A PARTIR DO priority info, vai para mail.log .
mail.warn -/var/log/mail.warn - tudo que vier como mail e tiver A PARTIR DO nivel priority warn vai para mail.warn
mail.=alert - -/var/log/mail.alert - tudo que vier como mail e for = o priority alert vai para mail.alert
mail.debug @10.0.0.100 - para jogar log em um servidor externo
mail.emerg paulo, aluno1 - sempre que tem emerg como priority, ele envia para tela dos usuarios as mensagens no exemplo só manda para paulo e aluno1, pra mandar pra todos users é com *
Apos adicionar uma linha de log temos que reiniciar o arquivo syslog.conf com o comando '/etc/init.d/inetutils-syslogd stop' depois '/etc/init.d/inetutils-syslogd start'
#logger - comando para forçar a geracao de log, #logger -p local0.debug "log de debuf de teste" #logger -p local0.crit -t [testes-lpi] "teste de mensagem critica" - o -p é informar a priority o -t é pra inserir uma TAG, (nos logs normalmente aparece essa tag) - o comando joga um log para teste.err
# cd /etc/syslog.d - outro arquivo que pode contem logs. # vi /etc/default/inetutils-syslogd - dentro desse arquivo podemos habilitar q um servidor receba logs remotos , nessa linha 'SYSLOGD_OPTS="--no-forward"' remover o '--no-forward' e colocar -r
## vi /etc/rsyslog.conf - bem parecido com syslog.conf #klogd - kernel log - pega os logs do kernel, logs internos, normalmente nao é mais usado
###logrotate - faz o rotacionamento dos logs gerados pelo syslogd, Dentro de #vi /var/log - contem varios arquivos syslog de 1 a 7 , eles vao rotacionando o log de hoje que é o arquivo 'syslog' amanha vira o syslog.1, depois vira o syslog.3 ate virar o syslog.7 no proximo dia será excluido.
/etc/logrotate.conf - é onde tem as configuracoes genericas de quanto tempo quero que os arquivos rotacionem , quandos dias armazenam ate trocar para o proximo arquivo. O arquivo principal é cd /etc/logrotate.d/ #cd /etc/cron.daily - onde tem o script logrotate para rodar
#systemd-journal - gerenciador de logs do systemd - o journal , vi /etc/systemd/journal.conf- arquivo de configuracao do journal, configuro quanto quero de espaco de uso em logs e outras informacoes,
/var/log/journal - para onde os logs sao encaminhados, no caso de nao existir esse arquivo , ele envia para /run/log/journal# - dentro desse arquivo nao conseguimos ler as informacoes, somente com o comando #journalctl - mostra os logs do sistema em geral - #journalctl -n10 - ultimos registros , #systelctl -b - somente log relacionado ao boot
#journalctl _TRANSPORT=kernel - insformacoes que vieram atraves do kernel. # journalctl --since "today" - só os logs de hoje , # journalctl --since "1 day ago", um dia atras , journalctl --since "1 hour ago" - uma hora atras
108.3###########MTA_SMTP_MTA############
MTA- Servidor de email ,responsavel pelo envio e recebimento de emails. SENDMAIL e POSTFIX - apt-get install mailutils - ele instala o postfix, # mail -s "Mensagem de testes" paulo ao apertar enter aparece Cc: (Com copia) depois escrevemos a msg do email e para centerrar é ctrl+d
Para ver os emails da caixa é com o comando #mail # mail - mostra em forma de lista os assuntos das mensagens e para escolher a mensagem é apertando o numero da mensagem conforme mostrado na lista.
Para sair é com #q - e ele salva as mensagem no /home/lpi1/mbox , se der #mail novamente nao aparece mais as msgs. #echo" essa é o corpo da mensagem " | mail -s "Esse e o titulo da mensagem do echo" paulo - enviado para usuario paulo
#cat arquivolongo.txt | mail -s "mensagem enviada pelo CAT " paulo - enviar email usando o cat . Salva nos arquivos #/var/spool/mail/ , #/var/mail/ e /home/paulo/mbox
#vi /etc/aliases - arquivo para redirecinamento de mensagens entre os users, dentro do arquivo tem aliases, atalhos, apelidos. 'webmaster: root', webpostmaster: root - redireciona de webpostmater para o user root, webmaster: root - direciona do usuario webmaster para root , admin: paulo - redireciona de admin para user paulo
#newaliases - comando para atualizar o arquivo aliases apos alteracoes. # vi /home/paulo/.forward - dentro de .forward tem os nomes dos usuarios que vao receber os emails direcionados a mim
#mailq - mostra a fila de emails que estao esperando para ser enviados , saida (-ID da fila- --tamanho-- ---Arrival Time-- -remetente/destinatario-----) , # sendmail -bp - mesmo que mailq, # sendmail -q - tenta renviar os emails da fila , # postqueue -f - força tbm o reenvio dos emails da fila ,
108.4 ######IMPRESSORAS_CUPS_VIA_WEB################
lsusb - para listar dispositivos usbs e um deles é impressora , /usr/sbin/cupsd - servico daemon que fica rodando - Adicionar impressora pelo cups - Logar no cups via web é 127.0.0.1:631 , add printer , colocar nome , descricao , compartilhar na rede, selecionar driver, opcoes de impressora, config de cor, tamanho de folha etc. e finalizou.
## vi /etc/cups/cupsd.conf - arquivo de configuracoes gerais, config de compartilhamento, porta de escuta , vi /etc/cups/printers - onde aparecem as impressoras configuradas pela interface web do cups. cd /etc/cups/ppd - onde tem os drivers
#lpinfo - lista dispositivos de impressao e drivers de impressao , #lpinfo - v - mostra dispositvos encontrados, impressoras configuradas, #lpinfo -m - mostra os drivers das impressoras (foomatic = é normalmente a fonte dos drivers q aparece na saida do comando)
###IMPRIMIR######
#lpr - #lpr /etc/passwd -P Impressora2 - imprime o arquivo passwd na impressora2 , #grep paulo /etc/passwd | lpr - imprime o passwd pela saida do grep, #lpq - mostra fila de impressao , #lpq -l - mostra fila com mais detalhes. #cd /var/spool/cups - local onde ficam os emails enviados, que estao esperando para enviar,
#lprm - Limpa todas impressoes do meu usuario , lprm -P Impressora2 , #lprm - - remove tudo de toda as impr do user q estou, # cd /var/log/cups/ - arquivos de logs das impressoes armazenados,
/var/log/cups# tail -f access_log - log das impressoes , # vi /etc/cups/cupsd.conf - arquivo de configuracao geral
#lpstat - a - informa o status das impressoras configuradas, #lpstat -t mostra mais informacoes (device, status,) , #lpq - mostra as filas de impressao - lpq -P Impressora1 - mostra fila da impressora1
Adicionar impressora manualmente, primeiro procurar pelo driver da impressora - #lpinfo -m | grep Nome_da_impressora
#lpadmin -P Nome_Impressora -E -v "Dispositivo_que_pode_ser_visto_no_comando_lpinfo -v" -m driver_encontrado_da_impressora - esse comando instala impressora por comando, -P colocar nome na impr, -E é obrigatorio para add a impressora, -v colocar o dispositivo encontrado pelo sistema, -m é para listar o driver da impr ,
#lpadmin -x Nome_Impressora - exclui a impr. #lpoptions - ver informacoes e alterar dados de impressoras configuradas , lpoptions -p nome_impressora - mostra informacao da impressora escolhida, lpoptions -d nome_impressora - seleciona impressora como default , #cat /etc/cups/lpoptions - mostra qual impr é a default .
109.1############FUNDAMENTOS_TCP_IP#############
IPV6 - tem 128 bits divididos em 8 grupos de 16 bits , separados por dois pontos : , exemp : 2001:0db8:85a3:0000:0000:0000:0000:7344 , podemos abreviar os 0000:0000: e deixar sómente um 0:0 . e se tem sequencias de 0:0:0:0 ficara somente os ::, caso so tenha um :0000: ficará somene o :0: mas nao podera ficar ::
Enderecos unicast: identifica uma unica interface, Multicast: identifica um conjunto de interfaces e pacote e enviado para cada interface. Anycast: identifica um conjunto de interfaces e pacote e enviado para uma unica interface, normalmente a mais proxima
TCP - orientado a conexoes , garante entrega dos pacotes em ordem correta, retransmite em caso de erros, os servicos sao FTP, SMTP, HTTP
UDP - Nao é orientado a conexoes, sem garantia de entrega, melhor performance na transmissao d dados, alguns servicoes, DNS, NFS, NTP.
ICMP - controle de volume de trafego, detecção de destinos nao atingiveis, redireciona rota, verifica status de hosts remotos, PING, traceroute etc.
portas - as primeiras 1024 sao reservadas a servicos conhecidos, portas possuem 16 bits, q da no maximo 65535 . As demais portas apos 1024 sao de servicos especificos ou para a porta de socket(cliente)
quando tem ipv6 com porta fica [2001:0db8:85a3:0000:0000:0000:0000:7344]:25 - porta 25 SMTP , Principais portas: SMTP 25 e SMTPS 465, dhcp 67 e 68, https 443, pop 110 e pop3s 995, ntp 123, netbios 139,
imaps 143 e imaps 993, snmp 161 e 162, LDAP 386 e LDAPS 636.
Respostas exer> 1 - 192.168.100.0 , 2 - 192.168.0.255 , 3-classe C , 4-254 , 5- /24 6- /25 - 2) - hosts b e c , hosts d e E , hosts g e h
225.109.2 ###################CONFIG.REDES._/ETC/HOSTNAME_HOSTS,NETWORKS,NSSWITCH######################
vi /etc/services - mostra as portas e todos os serviços , # vi /etc/hostname - tem o nome da maquina, #vi /etc/hosts/ - contem '127.0.0.1 localhost' , # vi /etc/networks - local para criar rotas
#vi /etc/nsswitch.conf - onde que o sistema deve procurar as informacoes de rede e de autenticacao, onde autentica hosts, usuarios, informacoes de login centalizadas.
Dentro do arquivo /etc/nsswitch.conf tem a linha 'hosts: files mdns4_minimal [NOTFOUND=return] dns' - onde quando procura pelos hosts, primeiro pelo files(arquivos locais) depois dns(servidores dns)
#ifconfig - mostra informacoes das interfaces de rede , #ifconfig -a - mostra tudo q tem ativo nas interfaces , #ifconfig enp0s3 - mostra somente dessa interface , ifconfig enp0s3 10.0.0.222 up - sobe interface enp0s3 com o ip informado.
#ifconfig enp0s3 down - derruba a interface , ifconfig enp0s8 192.168.10.222 netmask 255.255.255.0 up - configurando a outra interface em outra range de IP.
#route -n - mostra informacoes de rota sem resolver nomes. #route add default gw 10.9.1.1 dev enp0s3 - adicionando rota default , #route add -net 172.16.10.0/24 gw 192.168.10.50 - informa que tudo q tiver destino para 172.16.10.0 passará por 192.168.10.50 ,
# ip link show - mostra informacoes do link da interface se ta UP ou DOWN #ip address show - mostra interfaces com os ips configurados, # ip route show - mostra as rotas (parecido com o comando route -n)
#ip addr add 192.168.10.223/24 dev enp0s8 - adiciona ip na interface , # ip neigh show - ips que estao na vizinhança conectados, conversando. #dhclient - pegar ip do servidor DHCP. -- as configuracoes setadas com esses comando sao temporarias, se reinciar maquina , some tudo.
Configurando interface manualmente : auto lo, enp0s3, enp0s8 - subir interface automaticamente no boot, iface lo inet loopback - identificacao da interface loopback, iface enp0s3 inet static , address 10.0.0.222, netmask 255.255.255.0 gateway 10.0.0.1
Configuracao no Fedora- vi network-scripts/ifcfg-enp0s3 - DEVICE=enp0s3 , HWADDR=mac-address, BOOTPROTO=static , IPADDR=10.0.0.144, NETMASK=255.255.255.0, ONBOOT=yes , #ifup enp0s3 - subindo interface . vi network-scripts/network - NETWORKING=yes , GATEWAY=10.0.0.1 - no fedora é diferente o local pra config do gw.
109.3_#######_PING_TRACEROUTE_HOST_NSLOOKUP_DIG#######################
#ping6 - pinga para ips ipv6 , host ipv6.google.com - retorna o ipv6do google, traceroute www.google.com - da comandos icmps em todos os roteadores do caminho. #tracepath www.google.com - mesmo que o traceroute, #traceroute6 - para ipv6
#host - comando que consulta o servidor dns e retorna o ip , # host 200.17.202.197 - faz o dns reverso, consulta o ip para achar o nome #/etc/resolv.conf - onde se encontram meus servidores dns que fazem consultas solicitadas pelo comando #host .
#nslookup debian.org - mostra o servidor dns que respondeu minha solicitacao, e da as respostas de quem é responsavel pelo www.debian.org, # nslookup -query=MX debian.org - verifica quem é o servidor de e-mail(MX) que é responde pelo debian.org , # nslookup -query=any debian.org - retornar muitaa informacao sobre o debian.org
# nslookup debian.org 8.8.4.4 - forçando o uso da consulta pelo 8.8.4.4 , # dig ubuntu.com - consulta o dns tbm, mostra quando foi consultado, o tempo da requisicao, qual servidor respondeu etc. # dig ubuntu.com MX - retorna com informacoes dos servidores MX. # dig ubuntu.com mx +noall +answer - retorna com menos informacoes,
# dig -x 91.189.89.110 +short - saida 'www-ubuntu-com.nuno.canonical.com.' , com o -x mostra o dns reverso . Se eu remover os dados do resolv.conf e dar o comando nslookup lpi.org 8.8.8.8 - ele resolve mesmo assim pq eu forcei a busca pelo 8.8.8.8
234.109.3 ###############NETSTAT_TELNET_NETCAT_TCPDUMP################
## netstat -nalpt - programa mostra portas que estao abertas ,em escuta etc, -n - nao resolve nomes , -a - todas portas , -l - em lista , -p - processos que estao abrindo as portas, -t - mostra só conexoes tcp #netstat -rn - mostra rotas com -r, #telnet 127.0.0.1 25 - para testar se porta 25 está escutando , telnet testa portas em um host especifico.
#netcat - testar conexão via portas em um host(mesmo que telnet) #netcat 127.0.0.1 25, # nc 127.0.0.1 25 - mesmo que o netcat , #nc -l -p 12345 - deixando a porta 12345 aberta em listen , #netcat -l -p 12345 - deixa a porta 12345 aberta em listen, para outros hosts se conectar nela e testar.
#tcpdump - monitorar uma maquina especifica, ou porta , ou protocolo especifico,
#######CLIENTE_DNS_/ETC/RESOLV.CONF_NSSWITCH.CONF_HOSTS############$
#getent hosts www.uol.com.br - consultar arquivo hosts , #nsswitch.conf - informa onde deve se procurar as informacoes, se é nos arquivos(hosts) ou no dns a ordem padrao é primeiro nos arquivos(hosts) , se nao achar procura no dns.
110.1####SU_SUDO############
# su - mudar de um usuario a outro , #su - para logar com o root, #su paulo - loga com o usuario exatamente onde o outro user estava, nao carregando um login novo, com as variaveis que tem no .profile etc e ou /etc/profile. #su - paulo - loga com o paulo inicando um novo login , carregando as variaveis dos arquivos .profile e /etc/profile
paulo#su -c "fdisk -l" - executa o comando como root e retorna como usuario normal depois de executar o comando , # sudo su - da a permissao para o usuario fazer as tarefas, somente se tiver listado no sudoers. #vi /etc/sudoers - onde inserimos as permissoes do q cada usuario pode fazer, dentro do arquivo sudoers é configurado com grupos
/etc/sudoers - %sudo ALL=(ALL:ALL) ALL - essa linha informa que grupo(%sudo) sudo em qualquer terminal(ALL), e qualquer usuario do grupo sudo pode executar qualquer programa , 'paulo ALL=/sbin/poweroff' - nessa linha informa que o user paulo pode em qualquer terminal executar o poweroff. POdemos criar um ALIAS_de_comando onde ele recebe alguns comandos e podemos inserir a permissao
para um usuario de executar de qualquer terminal executar o que tiver nesse alias, exemplo: Cmnd Alias TESTE = /sbin/fdisk, /sbin/parted - criando o alias de comando, 'user1 ALL=TESTE' - o user1 de qualquer terminar pode executar o que tem no alias de comando. agora se der o comando sudo user1 fdisk ele aceita. #visudo - entra direto no /etc/sudoers para edicao
# who - mostra usuarios logados, separando por termiais , a saida fica 'paulo tty7 2019-08-05 11:13 (:0) , paulo pts/1 2019-08-13 09:47 (10.9.1.114), # who -aH - mostra mais informacoes, -H adiciona cabecalho(header). # w - mostra quem está logado e o que ta fazendo, uso da CPU, #last - historico de login , com informacoes da data de quando logou, quanto tempo ficou logado, quem logou .
#lastb - usuarios q tentaram logar mas nao conseguiram . As informacoes que o comando #last usa sao armazenadas em /var/log/wtmp e wtmp.1 que é o mais antigo, para ler o que tem nos arquivos wtmp é #last -f wtmp.1 .
as informacoes que o comando #lastb usa sao armazenadas em /var/log/btmp e btmp.1 que é o mais antigo, para ler o que tem nos arquivos btmp é #last -f btmp.1 - le os arquivos antigos do lastb.
#lastlog - pega todos usuarios do sistema e mostra quando o usuario fez login pela ultima vez , # lastlog -u paulo - mostra o ultimo login do user paulo , #last paulo - mostra os ultimos logins do user paulo
#passwd -S aluno1 - mostra o status do aluno1 - s tem um P quer dizer q tem passwod, se tem um NP quer dizer que nao tem password, se tem L quer dizer que ta locked. #passwd -x 30 aluno1 - altera o maximo de dias para senha expirar , o mesmo que '#chage -M aluno1'. #passwd -n2 aluno1 - defino o minimo de dias q o user pode trocar a senha (nesse caso é de 2 em 2 dias)
# passwd -w5 aluno1 - altera o tempo em que o usuario começa a receber alertas de expiracao da senha (5 dias). #passwd -i10 aluno1 - tempo que o user tem para alterar a senha apos expiracao da senha, caos contrario a conta é desativada. #passwd -l aluno1 - bloquear(lock) usuario , #passwd -u aluno1 - desbloqueia (unlock)
#usermod -L aluno2 - lock no aluno2 #usermod -U aluno2 - unlock no aluno2, #chage -d aluno1 - altera a data de expiracao da senha -E - data de expiracao da conta , -I tempo que tem para trocar senha antes de expirar conta , -m - tempo minimo q pode trocar senha -M -tempo maximo para trocar senha , -W - dias q começa a mandar warnings para o user ate data de expiracao de senha.
250.110.1#####FIND,ULIMIT,LIMITS.CONF################
#ulimit - criar limites de uso dos recursos da maquina, prtege contra uso indevido , #ulimit -a - mostra os numeros dos limites com indice para escolher as informacoes , o ulimit atinge somente a sessao aberta , se abrir outras sessoes, nao vai impactar, a nao ser que configure no /etc/profile,
numeros de arquivos abertos simultaneamente, memoria virtual, tamanho de arquivos, etc, para ver qual valor queremos limitar , temos que verificar pelo #ulimit -a .
Tipos de definicoes: Valor Hard(H) e valor Soft(S) , exemplo: #ulimit -Hu1000 - define o valor maximo de u(ver na lista com #ulimit -a) , para definir o valor soft #ulimit -Su 400 - define o menor valor , se tentar colocar o valor soft como 100000 nao vai permitir pq o hard é 1000
#/etc/security/limits.conf - arquivo para configurar o ulimit de forma definitiva, as linhas ficam exemplo: 'aluno1 soft nofile 1000' essa linha define o minimo de arquivos abertos, e essa 'aluno1 hard nofile 2000' - define o maximo de arquivos abertos.
250.110.1######FIND_ULIMIT_LIMIT.CONF#################
Lembrando que o SUID é o bit que faz que qualquer script seja rodado por qualquer usuário mesmo a permissão de execução esteja somente com o root. Isso é perigoso pro sistema, e para encontrar quais arquvios tem esse SUID é com o comando #find
Encontrar arquivos com o bit SUID - #find / -perm -4000 -ls - encontra so os arquivo com permissao SUID , find / -perm -2000 -ls , #find / \( -perm -4000 -o -perm -2000 \) -ls - para verificar os SUID e GUID .
#find / -path /proc -prune -o -nouser
251.110.1########NETSTAT_NMAP_LSOF_FUSER###########
#netstat -anpt - -a - all , -n - nao resolve nomes , -p - mostra pid e programas, -t- so mostra tcp, -u - mostra udp - o netstat mostra processos abertos em listen e established no status,
#lsof - lista arquivos abertos , # lsof -u paulo - mostra tudo que ta aberto pelo user paulo, # lsof -i:mysql - mostra informacoes sobre portas abertas , # lsof -i :3306 - procura por porta especifica.
#nmap - escaneamento de servicos e portas abertas, # nmap localhost - procura na minha maquina os servicos e portas abertas, # nmap 192.168.0.1 - procurando no meu modem net, # nmap 192.168.0.1/24 - scaneia todas maquina da rede /24, # nmap -O localhost - mostra detalhes do sistema operacional,
# nmap -sT localhost - somente portas tcp , # nmap -sU localhost - somente portas UDP,
# fuser 25/tcp - mostra o processo q ta usando a porta que escolhi. # fuser -u 25/tcp - o -u informa o dono do processo, # fuser -uv 25/tcp - mostra mais detalhes do nome do processo, PID e comando rodando,
253.110.2#############SHADOW,NOLOGIN,DESABILITAR_SERVICOS###############
#pwconv - converte a senha do /etc/passwd para /etc/shadow - Caso não tivesse o arquivo shadow das senhas, e somente tivesse no /passwd, seria perigoso, o comando pwconv , converte para o shadow a senha.
/etc/passwd - no final das linhas se tem bin/bash consegue logar no bash, se tem usr/bin/nologin ou /bin/false nao conseguem logar, Se eu crirar o arquivo vi /etc/nologin - so o user root vai conseguir logar,
#systemctl disable cups-browsed - desativa serviços inuteis, e após reiniciar ele permanece desativado. Outra forma é entrar nos arquivos rc0.d ate rc6.d e desfazer os links simbolicos , ou até mesmo colocar um K no lugar do S em cada serviço. Fazendo ele rodar com Kill ao inves de Start.
Também posso tirar a permissão de execução do scritp que some o serviço usando o chmod -x Script.sh , quando o init tentar subir , nao vai conseguir por falta de permissao.
254.110.2####INETD_TCP_WRAPPER##############
# apt-get install ftpd telnetd inetutils-inetd - instalar o ftp, telnet e inetd, TCP Wrapper - coloca um processo dentro do outro, dentro do arquivo #/etc/inetd.conf tem a linha TCP Wrapper ' /etc/sbin/tcpd ' que protege o processo do telnet(in.telnetd) e do FTP(in.ftpd)
/etc/sbin/tcpd - chama o processo do telnet e tbm o ftp ; Para ver isso , com o comando # lsof -i:21 - mostra o ftp rodando mas quem ta provendo o servico é o inetutils e pelo comando , # netstat -naltp | grep inetutils - mostra o telnet e ftp rodando pelo processo inetutils
O inetd valida primeiro se a conexão é valida e depois passa para o telnet e FTP. Se abrir uma conexão ftp por exemplo com #ftp localhost , o servico fica em established mas já como ftp, ou seja antes de estabelecer a conexão , quem fica ouvindo o ftp e telnet é o inetutils, e quem conecta é o ftp e telnet.
TCP Wrapper - protege o servico , implementa elementos de segurança que estão nos arquivos /et/hosts.allow e /etc/hosts.deny , dizendo os host,ips, redes, maquinas que podem usar os servicos protegidos pelo tcp Wrappers,
# vi /etc/hosts.allow - eu inseri a linha 'ALL: 10.0.0.* EXCEPT 10.0.0.1' que informa que todos de dentro da rede 10.0.0.* pode usar todos os servicos (ALL:) exceto o IP 10.0.0.1 , e tbm 'ALL: 127.0.0.1:' que significa que o localhost pode usar qualquer serviço(ALL:) tbm.
# vi /etc/hosts.deny - normalmente se tem tudo bloqueado nesse arquivo pq primeiro o hosts.allow é lido , conforme a linha 'ALL: ALL' todos nao acessam nada - isso pq no hosts.allow estará o que deve ser liberado e no hosts.deny bloquear todo resto.
255.110.2####_XINETD_###############
## apt-get install xinetd - para instalar o xinetd , isso desabilita o inetd, e ativa o xinetd , o xinetd usa a biblioteca do Wrapper e por isso vai usar tbm o /etc/sbin/tcpd
vi /etc/xinetd.conf - que contem configuracoes gerais e genericas e vi /etc/xinetd.d - nesse diretorio tem arquivos de configuracao onde podemos acessar as configs dos servicos telnet , ftp (as mesmas do inetd no hosts.allow e deny mas em outro formato) , podemos desabilitar os servicos e filtrar quem eu quero liberar ou bloquear
nas linhas: 'access_only =' quem eu quero liberar e 'no_access = 'quem eu quero bloquear, o xinetd usa tbm os arquivo /etc/hosts.allow e /etc/hosts.deny ,
primeiro ele verifica as regras desses arquivos e depois verifica no /etc/xinet.d/servico, ou seja, se ele encotrar uma regra de negacao no hosts.deny ele nem verifica o arquivo dentro de xinetd.d , se encontrar regra liberando no hosts.allow, ele libera pelo hosts.allow e depois verifica as regras do arquivo dentro de /etc/xinetd.d , Lembrar que se mudar algo no xinetd.d deve reiniciar o servico.
Se olhar com o comando: # netstat -naltp | grep 23 , a saida mostra o xinetd ouvindo a porta 23 e se estabelecer conexão telnet, o telnet assume a porta 23
258.110.#####_CONCEITOS_DE_CRIPTOGRAFIA_SSH##############
Objetivos da criptografia - Autenticidade, confidencialidade, integridade, irretratabilidade, SSH= protocolo de criptografica , é canal seguro entre 2 hosts, um cliente e servidor, utiliza chaves assimetricas publicas e privadas, o openssh é o mais comum. Sempre terá chave publica e privada, a chave publica é compartilhada com o remetente que usará para criptografar a mensagem antes de envia-la
Chave privada= é usada pelo destinatário para descriptografar os dados recebidos.
Nas maquinas clientes tem o openssh-client rodando , e também possui o arquivo /etc/ssh/ssh_config , que é o arquivo de configuracoes gerais do cliente , o /usr/sbin/sshd é o daemon que fica rodando sempre . Para ter o servidor deve instalar apt-get install openssh-server, após isso vai aparecer os arquivos sshd_config e as chaves .pub e privadas ,
# ssh aluno1@nome_da_maquina - quando eu acesso o server, primeiro eles trocam informacoes de algoritmo e entram em acordo, em seguida o servidor envia a chave publica para o cliente, com essa chave publica o cliente pode enviar a mensagem criptografada, #ssh -l aluno1 ip_maquina - com essa sintaxe tbm se consegue acessar.
Se eu nao colocar o usuario para tentar conectar via ssh, ele tenta acessar com o usuario que estou logado no cliente. Dentro dos /home/ tem o arquivo .ssh/known_hosts - local onde ficam as chaves publicas, sempre que fizer conexao no mesmo servidor ele ja vai ver nesse arquivo q ja tem a chave publica dele, caso nao tenha, ele adiciona nesse 'known_hosts' , caso tenha mudado a chave publica, ao tentar
conectar novamrnte, vai dar erro, por isso temos que limpar o known_hosts se der erro, e tentamos conectar novamente.
259.110.3##############_CONEXAO_SSH_CHAVE_PUBLICA_#################
#ssh-keygen -t rsa -b 1024 - criando chave criptografada no cliente -t tipo de chave rsa e -b - o tamanho em bytes da chave. Agora aparece os arquivos id_rsa e id_rsa.pub que são as chaves publica e privada criadas , copiamos a chave publica e colamos no servidor no arquivo /.ssh/authorized_keys, esse arquivo tem que ter chmod 600 , leitura e escrita somente para o usuario dono,
Usando passphrase - #ssh-keygen -t rsa -b 1024 - gero novamente as chaves, em seguida digito uma passphrase(antes nao foi feito) , novamente tenho que colar la no servidor em /.ssh/authorized_keys a chave publica do cliente, agora no cliente digitar #ssh-agent - esse programa monitora as senhas das minhas chaves , e entao para o cliente conectar digita #ssh-add , ele vai pedir a chave passphrase, depois
ele conecta diretamente sem pedir a senha do servidor. Depois sempre que quiser conectar no servidor, só dar o comando #ssh user@servidor e conecta direto.
261.110.3#######_TUNEL_SSH_SCP_#####################
Para criar o tunel 'cliente:2323<-----> 23:servidor' usamos o comando #ssh -N -f -L porta_local:ip_remoto:porta_do_servico_da_outra_maquina user@ip_remoto - exemplo: ssh -N -f -L 2323:10.0.0.112:23 paulo@10.0.0.112 - a porta 2323 é da minha maquina cliente local e a maquina remota tem o IP 10.0.0.112 e a porta 23 , se verificar com o comando #netstat -naltp | grep 2323 - mostra a porta 2323 escutando(LISTEN)
então mesmo que não tenha o serviço telnet rodando na minha maquina cliente, se eu tentar conectar usando #telnet localhost 2323 , vai conectar com o a maquina remota atrávez desse acesso 2323 , ou seja essa conexão é de telnet mas dentro de um TUNEL SSH.
Conexão remota no servidorX por ssh - #ssh -X paulo@10.0.0.112 "gnome-calculator" - esse comando entra no servidor e abre a calculadora na minha maquina cliente, e o servico q fica aberto é ssh pelo comando #ps- aux | grep calculator , no servidor vai aparecer com ps -axu |grep calculator o servico da calculadora aberto mas nao aparece o programa aberto.
Outro modo de entrar com o servidorX #ssh -X paulo@10.0.0.112 - entra na maquina e depois da o comando 'firefox' - vai abrir o brower no cliente e nao no servidor remoto.
#ssh paulo@10.0.0.112 "ls -l /tmp; free" - entra na maquina remota e roda os comandos , depois volta pra minha maquina. #scp nohup.out paulo@10.0.0.112:~/tmp - envia o arquivo nohup.out para o equipamento remoto no diretorio /tmp , #scp paulo@10.0.0.112:~/arquivoteste.tgz . - busca o arquivoteste.tgz do servidor remoto e larga no diretorio q estou(.)
262.110.3_############_GPG_###################
Criptografar arquivos, emails, mensagnens ,assinar arquivos, assinar emails - GNU PRIVACY GUARD , dpkg -l | grep gnupg - gnupg é o pacote q instala o gpg,
Primeiro tem que gerar chaves com o comando # gpg --gen-key , vai pedir informacoes e nome completo, email etc, apos gerar a chave , para listar a chave é #gpg --list-keys , O arquivo #cd .gnupg/ (lista os arquivos que tem as chaves , o mesmo que .ssh). O contrario do ssh é que quem envia a chave publica é o mesmo que quer enviar a mensagem,
o comando que exporta a chave publica é #gpg --export "Paulo Fernando Britz" > chave-paulo.pub (quando listado com #gpg --list-keys aparece o nome que vc digitou ao criar a chave coloquei meu nome completo)
#gpg --output nova-chave.pub --export "Paulo Fernando Britz" - outro modo de criar a chave publica
#gpg --output nova-chave2.pub --armor --export "Paulo Fernando Britz" - com o --armor ele mostra o arquivo em texto , podendo copiar e enviar la na outra maquina.
Exportando chave para um servidor de chaves # gpg --keyserver keys.gnupg.net --send-keys ID_chave_publica , #gpg --keyserver keys.gnupg.net --gen-revoke ID_chave_publica - esse comando cancela a validade da chave .
Agora na maquina que recebe as chaves enviadas - crio um arquivo paulo.pub e colo as informacoes da chave se for o caso do tipo texto. depois rodar o comando #gpg --import paulo.pub - agora ja aparece os id_chave_publica com os dados criados do outro PC.
Importando de um servidor de chaves - gpg --keyserver key.gnupg.net --recv-keys ID_chave_publica (esse id_chave_publica seria informado pelo outro colega para vc conseguir baixar do servidor corretamente)
263.110.3#############CRIPTOGRAFAR_DESCRIPTOGRAFAR_ASSINAR################
Criando uma mensagem criptografada para outra maquina após a troca das chaves_publicas - gpg --recipient "Paulo Fernando Britz" --output arquivo-criado.gpg --encrypt arquivo-para-criptografar.txt - isso cria o arquivo em binario que nao da pra ler. somente se desse o comando --armor
buscando a mensagem criptografada para minha maquina - scp paulo@10.0.0.113:~/arquivo-criado.gpg - agora o arquivo-criado.gpg está na minha maquina posso descriptografar usando minha chave privada, #gpg --output arquivo-descriptografado.txt --decrypt arquivo-criado.gpg
Assinando um arquivo - A mensagem é assinada com a chave privada , o dono da msg assina com a chave privada e quem recebe usa chave publica desse usuario para descriptografar , para assinar a mensagem é #gpg --sign primeiroScript.sh.copia - ele cria um arquivo assinado 'primeiroScript.sh.copia .gpg'
Mandar para destino o arquivo criptografado - scp primeiroScript.sh.copia.gpg paulo@10.0.0.112:~/ - apos enviar o arquivo, entramos no destino e usamos #gpg --verify primeiroScript.sh.copia.gpg , ou se usar #gpg --decrypt primeiroScript.sh.copia.gpg - mostra o conteudo do arquivo e a assinatura , dessa forma o arquivo nao fica criptografado somente assinado,
se for enviado para outro usuario q nao tem a chave publica do usuario que enviou o arquivo, ele consegue ler o conteudo mas nao consegue ver a assinatura.
Nenhum comentário:
Postar um comentário