No Linux, a extensão não importa. Como assim não importa, Web? Vou te explicar. No Linux, o que se leva em consideração é o cabeçalho do arquivo que é montado a partir do uso do arquivo por alguma ferramenta. Por exemplo, vocês sabem que tem dois tipos de arquivos regulares, o executável e o arquivo de dados. E eles têm diferença na sua estrutura. Nessa estrutura tem uma parte chamada cabeçalho. Lá nesse cabeçalho nós temos alguns bits que, ao estarem, por exemplo, em um ou zero, nós sabemos que é uma imagem. Nós sabemos que é um texto. Nós sabemos que é um script entre outros tipos de arquivos. Então, Linux detecta o arquivo pelo que o arquivo é e não pela extensão. Então, vamos lá. Quero transportar um malware numa organização dentro de uma empresa. Muito simples. Força. Renome o seu ponto exe, maiscioso para o ponto zip. Tudo bem, porque o Windows vai olhar a extensão e falar assim, poxa, esse malware, na verdade, não é um malware, ele é um zip. No mundo Linux não executável, ele é uma executável. Não importa a extensão que você ponha. E é muito comum no mundo Linux você não ter extensão de nada. Vou abrir aqui um Linux que eu uso só para ministrar minhas aulas, então eu posso mostrar. Sempre tome cuidado pessoal com sua... tem a zela aí pela sua privacidade. Está a cd barra bin, que é um apontamento para o srbin. A pwd, está aqui, eu estou em bin, ls, ó. Está vendo o ponto exe nesses executáveis? Está vendo? Isso não está lá, nem eu. Entende? Então, porque pense, vamos lá. Como que eu navego, como que eu navego no mundo Linux? cd, ponto, ponto, voltando para o diretor anterior. O que que o cd é? Cd, por exemplo, é... eu vou colocar agora como executável, tá? É um executável. Se fosse com qualquer tipo de extensão, vamos imaginar que no Linux também fosse ponto exe para executáveis. Já pensou? Toda hora você tem que colocar cd, ponto exe, ponto ponto. cd, ponto exe. Eu listo com ls, não é sim? ls, não é? Já pensou se fosse ls, ponto exe? Olha o tanto que eu ia digitar. Então, lá no passado, no Unix mesmo, tiveram essa ideia que o binário ele não tem nenhum tipo de extensão e assim o deixaram e assim ficou. E os comandos ficaram curtos. ls, cd, rd, aqui não existe. Beleza? cp, rm. São todos comandos curtos, duas letras, porque o cara digita o dia inteiro, certo? Legal, ele é essa aqui. Aqui estão todos eles, né? File, local, local e um executável. Veja, local e não tem extensão e ele é um executável. Legal, hein? Pegar a ideia. Cp, olha só. Cp é um executável, dinamicamente linkado, tá bom? Cp, cd. Isso que eu queria falar com vocês quando eu falei do cd. Você vai para o capítulo 8, ou é o 9, eu não lembro. Lá para frente assim. Não é o 8, não é o 9. Que, por exemplo, o comando cd, ele era muito invocado. Então, invocado quer dizer chamado. Então quer dizer que colocar uma rotina do cd dentro dessa tela preta aqui. Não como um programa. Não como programa. Nessa tela aí. O código dessa tela se chama BESCH, tá? É um programa. Barra bem, barra BESCH. Certo? Eles colocaram ali dentro. Nós chamamos de built-in. Built-in, tá? É que ele está embutido dentro do BESCH. Fizeram isso porque para aumentar a velocidade. Então muitos comandos do Linux, vocês vão ver no capítulo 8, foram incorporados dentro do BESCH. Por isso que você não vai encontrar alguns comandos como programa naquele diretório. Cara, mas isso é um papo muito complexo para na hora que eu explicar para vocês sobre a questão do script para Linux e BESCH. Caso você queira ver, caso esteja curioso, está no texto lá do capítulo 9, isso já está bem descrito lá. Beleza? Você vai ver o ganho de desempenho que tiveram ao fazer isso. Legal. Então vamos voltar aqui o manual. Se você pode, conforme eu acabei de usar o file para ver o que que o arquivo ele é, certo? Bom, e nós podemos guardar algumas informações do arquivo como tamanho aproximado do arquivo. Não é o tamanho real, é uma estimativa baseada nos inodes. Sério, cara. Estou lembrando do café aqui, foi mal. É aviso de café, né? Imagina eu colocar isso aqui. Aí aparece o tamanho dos arquivos, certo aqui. Beleza? Está aqui o tamanho dos arquivos aqui, certo? É que não dá para você escolher uma coluna. Está aqui, está aqui, está aqui. Caso você queira ver com uma visão mais humana, coloca traço L H de humano. L de lista H de humano. E aí ele vai mostrar em unidade. KB, megabyte, gigabyte, vai depender. Sempre o menor número possível. Por exemplo, 4 megabytes, esse aqui está 60 megabytes. Veja que ele muda para que você possa ver, certo? Esse aqui é um papo que nós vamos ter mais para frente, tá? O monte. monte o monte. Bom, vamos lá. Entender a jogada, né? Isso aqui é um tamanho aproximado, cara. E ele é guardado apenas para poder fazer uma listagem rápida. Permissões de acesso. Permissão de acesso a esse aqui, ó. Esses caras aqui. Esses 9 itensinhos aqui, ó. Beleza? É isso aqui que é a política de acesso do arquivo do Linux. Hora de criação e hora de acesso do arquivo e aí de usuário do grupo. Aí de usuário. Tá? E pera aí. Aí de usuário para essa coluna e aí de grupo para essa coluna. Porque root, root, porque na instalação do Linux não tem grupo nenhum e tem uma restrição que nós vamos ver no próximo capítulo que é, é impossível criar um usuário sem grupo. Default, o que a gente chama? Grupo default, grupo padrão, grupo principal, depende do livro que você estiver lendo. É impossível. Então ele cria um grupo chamado root para poder criar o usuário root. E assim fica. É sério. É sério mesmo. Rapaz, é coisa que tem nesse diretório, hein? Legal. E aqui, naturalmente, você pode ver o state. State, o file e o state são dois comandos para você ver atributos do arquivo, tá? O file e o state. Então você pode chegar lá, por exemplo, clear. Eu chamei o file aqui de quem? Desse cara, né? Eu posso chamar o state. O state ele vai falar, olha, o tamanho é esse aqui. Número de blocos. O tamanho desses blocos. É um arquivo regular. Tá nesse divisor. Tá nesse in-old. E só tem um link apontando para ele no sistema de arquivos. Como assim? Vou explicar mais para frente sobre hard link. Um arquivo pode estar aparecendo em dois lugares. No sistema de arquivos. Sério. No Linux da. Não é link simbólico. Não é um atalho. Como vocês chamam no Windows? O arquivo aparece em dois lugares. Não tem nenhum problema. Porque Linux, o sistema de arquivos, é virtual na memória. Entendeu? Windows, o que você vê no sistema de arquivos, é como ele tá no disco. Então se no Windows tá em dois lugares, é porque é uma cópia. No Linux não. O nível aqui, rapaz, é foda pra caralho mano. Linux é foda. Depois você entende o que é o Linux. Você não volta pro Windows nem a pau. Me pagando. Ah é cara. Aonde eu trabalho usa Windows. E aí, naturalmente, eu não vou usar o Linux lá. Porque como eu sou alguém da área da security que eu não posso ficar comentando. O que acontece gente? Eu tenho que mostrar para a galera que não se faz o errado. Se o Linux não foi homologado dentro do ambiente onde eu trabalho, eu tenho que usar o Windows. Então não posso dizer que o Windows nem pagando, porque eu recebo o meu salário. Então tão me pagando para usar o Windows. Gostaria? Não, não gostaria. Jamais. Mas a galera, regra de segurança número um. Usamos somente sistemas e softwares que a empresa homologa. Se não, homologa não usa. Não tente ser o diferente, não vai dar merda. Isso aqui é chamado de permissão especial. Eu vou explicar isso mais para frente para vocês. Na verdade daqui a pouco eu vou explicar isso aqui e mais para frente isso aqui. Permissão de acesso. Quem é o user ID? Está vendo aqui o ID zero? Está vendo o group ID zero? Eu vou mostrar para vocês isso aqui. Vamos lá. Cache. Cache, por exemplo. O ETC, Paz, WD. Repara. Tá, preu, usuário para caramba. Olha isso aqui, está vendo isso aqui? Isso aqui é o user ID zero. Quem é zero é root. Aí, se eu colocar esse cara com zero, ele vira root também. Aí, assim que a gente faz root, não porra. Hacker faz isso. A gente... A gente. Nós, da TI, não colocamos zero aqui nem a pau. Se encontrar tem que chamar um alert aqui em algum lugar. Tem que, oh, não pode, meu amigo. Isso aí é uma falha de segurança. Então, por isso, esse zero aqui, esse zero aqui, todo usuário tem o ID. E é chamado de UID, de user. E por incrível que pareça, o U é maiúsculo e ID é minúsculo, mas eu retardado, põe tudo maiúsculo. Mas é porque eu sou retardado. Você não vai fazer isso. Group. Olha, presta atenção. Group zero. Group zero. Está aqui o group zero. Eles são os donos desse arquivo. Desse arquivo. Nós vamos falar disso mais para frente para vocês. Mas eles são os donos. O dono do arquivo e o grupo dono responsável por esse arquivo. E os outros são os outros. Legal? Acesse modificado ou alterado e quando foi criado. Tem alguns arquivos do sistema que essa aqui adata praticamente de instalação do sistema operacional. Beleza? Você pode pegar aqui por isso aqui, oh. Certo? Ele está falando que é um diretório. Stat. Você consegue pegar a data e hora que aquilo foi criado. Aquel diretório foi criado. E a raiz foi criada então aqui, né? No dia set do Triggs, aqui, a esse horário. Bom, detalhe que a máquina, como posso dizer, a máquina, ela... Ela foi criada lá para essa aula e... entendeu? Foi quando foi criada. Se isso aí um dia for alterado foi porque o link foi... Me removido foi criado outro link virtual. Outra barra virtual. Vamos colocar assim. Mas eu não vejo aonde que isso seria, sim, útil. Bom, aqui eu tenho o IO Stream que nós já vimos anteriormente para trabalhar com os IOs. Por que nós vamos trabalhar com o disco. Aqui nós temos o Stat.h. O Stat.h é um... É um cabeçalho. Nós chamamos de biblioteca, cabeçalho. É tudo que é ponto H. Ele tem funções, mas não tem o main lá dentro. Então é o primeiro arranjo que tivemos na programação decente. Foi quando os caras passaram a tirar todo o código de funções daqui de dentro, deixar o mínimo possível e jogar as funções lá para dentro para ser reutilizado dentro do sistema operacional. Ele vai usar o use in the M Space STD. Para não ficar ao canto, STD 2 pontos... Tipo assim, ó... STD 2 pontos, 2 pontos, C out. STD 2 pontos, 2 pontos, C out. Olha aqui, que enxerção. STD 2 pontos, 2 pontos, and line. STD... Para não fazer isso. Você pode falar que você está usando o name space STD. Implicitamente ele vai procurar. Qual o problema? Digamos que aqui tem um C out. E você está dizendo que dentro do standard libre também tem um C out. Então vai dar um pipoco. Vai dar um erro de compilação. É o que pode acontecer. Legal? Isso aqui é um struct. Struct é chamada... Você poder dar o nome que você quiser. Pesso aqui. Tipo, bolinha, quadrado. Meus dados bonitinhos, não sei. No sistema operacional, antes de ter esse negócio de orientação, objetos de classe, essas estruturas, vamos chamar assim... Que tem os tipos na sequência. Tem todos os tipos na sequência. Cara, não pode copiar encolada. Tá vendo isso aqui, ó? Na hora de gerar o PDF deu merda, hein, cara. É o tab, gente. É o tab. Bom, aí eu coloco as variáveis toda na sequência, para que essa estrutura seja usada da seguinte forma. Olha só. Quer ver? Aqui, ó. Aqui, ó. Eu vou pegar, vou chamar o stat. Vou chamar o stat. Vou chamar o stat. Vou chamar o stat. Vou chamar o stat. Vou pegar, vou chamar o stat. Dá uma função. Vou passar o chgr, que é um string, e eu vou passar essa var, que é dessa estrutura, stat. Isso aqui é uma função que está aqui dentro. Beleza? Isso aqui é uma função que está aqui dentro. E esse tipo aqui, do tipo struct, é isso aqui. Isso é muito comum, por quê? Imagine você ter que receber um array de resultados, e você ter que recarregar suas variáveis. Seria toda hora você no meio do seu código carregando essas variáveis. Toda hora no seu código você lenda essas variáveis. Na sequência, você não conseguiria chegar nessa variável se você não fosse em todas. Então essa struct, ela serve para isso. Você cria essa estrutura e você passa ela como referência para uma função, e lá dentro dessa função, tudo isso vai ser carregado. E aí no seu código fonte aqui, quando você recebe o resultado, você não precisa de receber aquele array de valores para poder ficar pegando qual coluna você quer. Então, imagina que isso aqui seria um registro. Uma linha de um registro, entende? Cara, olha que louco, ele vai ter um read que vai bater essa estrutura lá na memória e vai ler, do a vez só, cara, na sequência. E isso vai descendo encamadas, encamadas, encamadas, até a leitura, bicho. Cara, é da hora demais esse papo de structs. Beleza? Tranquilo? Uma hora eu tenho que ensinar vocês a fazer o básico, o básico de ser mais, mais aí. Na verdade, você já está aprendendo, à medida que você vai usando uma linguagem que você aprende. Livre, ensina, livre, ensina, livre, é bom? Livre é bom. Mas é o uso que vai te ensinar mesmo, sabe? Aqui está o código compilado, depois que ele roda, repare que eu pego ID do deviser, eu pego o número, o molde, o ID, o tamanho dos blocos. Pego tudo, cara. Beleza? Até o próximo vídeo, até mais. Tchau.