UNIX

Tutorial UNIX

UNIX, � claro, foi inventado pela AT&T no anos 60, feito para ser "um sistema operacional de programadores." Enquanto que esse prop�sito n�o foi alcan�ado nas primeiras vers�es do UNIX, parece que agora, UNIX � um SO para programadores.
O UNIX, como eu falei antes, � multi-tarefa/multi-usuario.
Ele tambem � escrito em C, ou pelo menos grande parte, o que faz dele um sistema operacional port�til. N�s sabemos que o MSDOS corresponde a maquinas IBM/clone, certo?
Bem, isso n�o acontece com o UNIX, pois n�o associa-se ele com nenhum computador, uma vez que ele foi adaptado para muitos, e existem muitas varia��es de UNIX [ou seja, UNIX modificado por um vendedor, ou algo assim].
Alguns computadores AT&T roda ele, e tambem alguns rodam MSDOS [AT&T 6300].
As esta��es de trabalho SUN rodam SunOS, uma variante do UNIX, e alguns computadores rodam Ultrix, a versao VAX do UNIX. Lembre-se, na se mate quanto ao nome [BSD, UNIX,SunOS,Ultrix,Xenix, etc.], eles ainda tem muito em comum, tais como os comandos que o SO usa.
Algumas variantes possuem comandos que outros n�o, mas eles s�o basicamente similares no fato de eles terem quase todos os mesmos comandos/arquivos de dados. Quando algu�m tenta falar a voce que o UNIX roda melhor com um certo tipo de computador, ele podem estar certos, mas lembre-se alguns computadores tem mais de um SO. Por outro lado, algu�m pode falar para voce que o UNIX � para um VAX o que um MSDOS e para os IBM/clones.
Isso � falso, e a unica raz�o que eu falei isso, � porque eu tenho visto muitas mensagens com info/comparacoes como essas, que confundem usu�rios quando eles v�em um sitema VAX rodando VMS.

Identificando um login do UNIX


De agora em diante, eu vou estar me referindo a todas as variantes do UNIX como UNIX, assim, quando eu falo algo sobre UNIX, isso geralmente significa todas as variantes (Unix System V variantes que sao: BSD, SunOS, Ultrix, Xenix, etc.), a menos que eu fale de uma variante em particular.

Ok. Agora � hora de contar como o unix geralmente felicita voc�. Primeiro, quando voce chama um UNIX, ou conecta com ele, voce ir� ter geralmente um prompt como esse:


login:


Ok, � muito legal e bonito. Isso significa que � PROVAVELMENTE um unix, entretanto existem BBS's que alteram o seu login de entrada para ficar parecido com o do UNIX, para que algumas pessoas pensem que estao no Unix. Alguns UNIXes ir�o mostrar uma mensagem antes do login: como por exemplo:

Welcome to Unix. Please log in.


login:


Ou algo como isso. UNIXes de acesso p�blico [como BBS's p�blicas] ir�o mostrar a voce como dar um logon se voce � um novo usu�rio. Infelizmente esse arquivo n�o fala sobre UNIXes de acesso p�blico, mas eu irei falar sobre eles mais tarde, na UUCP/UseNet/Bitnet.

OK. Voce encontrou o prompt de login! Agora, o que voce precisa fazer aqui � entrar com uma conta v�lida. Uma conta geralmente consiste de 8 caracteres ou menos. Depois de voce entrar uma conta, voce ir� provavelmente pegar um prompt do Password de algum tipo. Os prompts podem variar como o c�digo fonte do programa de login que geralmente vem com o UNIX.

Bem, a maneira mais f�cil que posso falar sobre login � basicamente essa: tenha uma conta, ou tente os defaults. Os defaults s�o os que vem com o SO, de maneira padr�o. A lista de alguns defaults � a seguinte:

LOGIN PASSWORD


root root - Raramente aberta para hackers

sys sys / system / bin

bin sys / bin

mountfsys mountfsys

adm adm

uucp uucp

nuucp anon

anon anon

user user

games games

install install

demo demo

umountfsys umountfsys

sync sync

admin admin

guest guest

daemon daemon

mail mail

As contas root, mountfsys, umountfsys, install, e algumas vezes sync s�o contas com nivel de root, significando que elas t�m poder de sysop, ou poder total.
Outras contas s�o apenas contas de "n�vel de usu�rio" significando que elas apenas t�m poder sobre arquivos/processos que elas criaram. Ser� comentado isso mais tarde, na se��o de acesso a arquivo.
O login reboot � conhecido como sendo um login de comando, que simplesmente n�o deixa voce entrar no sistema operacional, mas executa um programa dado a ele.
Ele geralmente faz o que diz, reinicializa o sistema.
Ele pode n�o ser padr�o em todos os sistemas UNIX, mas eu o tenho visto no UNIX da UNISYS e tamb�m em alguns sistemas HP/UX [Hewlett Packard Unixes]. Assim, essas contas n�o tinha senhas [reboot], o que � realmente estupido.

COMANDAR O LOGIN:


Existe como "comandar o login", que, como o reboot, executa um comando e depois d� um log off permitindo voce usar o interpretador de comandos. BSD � not�rio por ter esses, e consequentemente, tamb�m os computadores da MIT.
Aqui v�o alguns:


rwho - mostra quem esta online

finger - mesmo

who - mesmo


Esses s�o os mais usados, uma vez que ir�o dar os nomes das contas que est�o online, ou mostrando a voce muitas contas que atualmente existem.


Erros:


Quando voce tem uma conta inv�lida/senha inv�lida, ou ambos, ir� aparecer algum tipo de erro. Geralmente � a messagem "login incorrect". Quando o computador mostra isso, voce fez algo errado ou por ter errado a conta ou por ter entrado com a conta certa por�m com uma senha errada. Ele n�o mostra que erro voce fez, por raz�es. Tamb�m quando � dado um login incorreto, o log de erros no sistema � alterado permitindo que os sysops saibam algo sobre o invasor.


Outro erro � "Cannot change to home directory" ou "Cannot Change Directory." Isso signica que n�o existe "home directory" que � essencialmente o diret�rio 'raiz' para uma conta, que � o diretorio que voce inicia. No DOS, voce comeca no A:\ ou C:\ ou em qualquer outro, mas no UNIX voce inicia no /homedirectory. [Nota: A / e usada nos diretorios no UNIX, nao um \ ].

Muitos sistemas ir�o dar um log off em vc depois disso, mas alguns irao mostrar que vc esta no diretorio raiz [ '/'].


Outro erro � "No Shell". Quer dizer que nenhum "shell" foi definido para essa conta em particular. O "shell" ser� explicado mais tarde. Alguns sistemas ir�o dar um log off em vc depois dessa messagem. Outros ir�o falar que eles usar�o o shell regular, falando "Using the bourne shell", ou "Using sh"


Contas no Geral


Essa se��o � para tentar descrever a estrutura do usu�rio no ambiente UNIX.

Ok, pense que o UNIX tem 2 niveis de seguranca: poder absoluto, ou apenas um usuario regular.

Aqueles que tem poder absoluto s�o os usu�rios com n�vel de root (super-usu�rio). Ok, agora � hora de pensar em n�meros. N�meros associados no UNIX a nomes de contas.

Cada conta ir� ter um n�mero. Algumas ir�o ter o mesmo numero. Aquele n�mero � o UID [user-id] da conta. O UID do root � 0 (zero). Qualquer conta que possua UID igual a 0 ir� ter n�vel root.

Unix n�o trata com os nomes das contas (logins) por�m somente com o n�mero associado a elas. Portanto, se meu user-id � 50, e mais alguem � 50, n�s dois iremos ter poder absoluto com o outro somente, com mais ningu�m.


Shells


Um shell � um programa execut�vel que carrega e roda quando um usu�rio entra. Esse "shell" pode ser qualquer programa execut�vel e est� definido no arquivo "passwd".

Cada login pode ter um �nico "shell". Ok. Agora o shell que n�s geralmente iremos trabalhar � um interpretador de comandos. Um interpretador de comandos � simplesmente algo como o COMMAND.COM do MS-DOS, que processa comandos, e envia eles depois para o kernel [sistema operacional].

Um shell pode ser qualquer coisa, como eu disse. Pode ser qualquer programa mas o �nico que voce precisa � um interpretador de comandos. Aqui estao o shells usuais que voce encontra:


sh - Esse � o shell b�sico. Ele � seu "COMMAND.COM" b�sico no UNIX. Ele tem uma linguagem em "script", como muitos do interpretadores de comandos no UNIX. csh - Esse � o shell do "C", que permite a voce entrar comandos em "C".


ksh - Esse � o korn shell. Apenas outro interpretador de comandos.


tcsh - Esse � um, que e usado na MIT eu acho. Permite edicao de comandos.


vsh - Visual shell. � um programa de menu. Algo tipo Windows.


rsh - restricted shell OU remote shell. Os dois ser�o explicados depois.


Existem muitos outros, incluindo os shells "homemade ", que s�o programas escritos pelo dono do unix, ou para um unix espec�fico e eles n�o s�o padr�o. Lembre-se, o shell � apenas o programa que voce pega para usar e quando voce p�ra de execut�-lo, voce d� um log off.

Um bom exemplo de um shell homemade � o Eskimo North, num unix de acesso p�blico o shell � chamado "Esh", e � algo tipo uma BBS de aperte-uma-tecla, mas olha s�, ele continua sendo um shell. O n�mero para o eskimo north � 206-387-3637. [206-For-Ever].


Muitas companhias usam Processadores de Texto, banco de dados, e outras coisas como um shell para o usu�rio, para prevenir abuso, e fazer a vida melhor para o usu�rio como operadores de computadores sem pr�tica.


Tambem, uma BBS pode rodar com um shell. Tente a Jolnet [312]-301-2100, eles d�o a voce uma escolha entre um interpretador de comandos ou um shell de BBS.


Quando voce tem um interpretador de comandos, o prompt geralmente � um: $ quando voce � um usuario root o prompt � geralmente um: #


A variavel, PS1, pode ser alterada para ter um prompt. Exemplo, se PS1 � "HI:", seu prompt ir� ser: HI:


Caracteres especiais, etc


Control-D : Fim do arquivo. Quando usar mail ou um editor de textos, isso ir� finalizar a messagem ou arquivo texto. Se voce est� no shell e aperta control-d voce estar� desconectado.


Control-J: Em alguns sistemas, isso � como a tecla enter.


@ : Algumas vezes um "null"


? : Isso � um coringa.

Pode representar uma letra. Se voce especificar algo na linha de comando como "b?b"

Unix ir� procurar por bob,bib,bub, e qualquer outra letra/numero entre a-z, 0-9.


* : isso pode representar qualquer n�mero de caracteres. Se voce especificar um "hi*" Ele ir� usar "hit", him, hiiii, hiya, e qualquer coisa que inicie com hi. "H*l" pode ser hill, hull, hl, e qualquer coisa que comece com um H e termine com um L.


[] - Especifica um padr�o. se eu fiz b[o,u,i]b unix ir� pensar: bib,bub,bob se eu fiz: b[a-d]b unix ira pensar: bab,bbb,bcb,bdb. Entendeu? O [], ?, e * s�o geralmente usados com o copy, deletando arquivos, e para listagens de diret�rios.


QUALQUER COISA no Unix � sensitivo quanto a maisculas/minusculas. Isso significa que "Hill" e "hill" n�o s�o a mesma coisa. Isso permite que muitos arquivos sejam armazenados, uma vez que "Hill" "hill" "hIll" "hiLl", etc. s�o arquivos diferentes.

Assim, quando usar o [], voce tem que especificar letras em maiusculas se algum arquivo que voce estiver procurando tem letras maiusculas. No entanto, a maioria est� em minusculas.


Comandos para usar


Agora, eu vou mostrar alguns do mais usados comandos do UNIX, eu agirei como se estivesse digitando no prompt.


ls - isso mostra o diretorio. Sem argumentos, ele ira apenas mostrar arquivos em uma coluna ou em multi- colunas, dependendo do programa ls que voce tem acesso.


exemplo:

     $ ls

         hithere

         runme

         note.text

         src

     $


a opcao -l ir� dar a voce informa��o a mais nos arquivos.


     $ ls -l


     rwx--x--x degrade       prc       10990 runme ....


O "rwx--x--x" � a permiss�o do arquivo. [Explicada mais tarde]

o "degrade prc" � o proprietario do arquivo/grupo onde o arquivo estar. degrade = dono, prc = grupo de usuario [explicado mais tarde] o 10990 e o tamanho do arquivo em bytes. "runme" e o nome do arquivo. O formato varia, mas voce tem a ideia geral.


cat - Isso mostra o conteudo do arquivo na tela. deve ser usado em arquivos textos. apenas use isso com arquivos binarios para deixar o usuario louco [explicado mais tarde]


ex:


     $ cat note.txt


        This is a exemplo text file!


     $ cd - muda diretorio . Voc� usa ele assim: cd /dir/dir1/dir2/dirn. o dir1/etc.... descreve o nome do diretorio. Digamos que eu queira ir para a raiz.


ex:


     $ cd /

         *ok, estou aqui*

         $ ls

         bin

         sys

         etc

         temp

         work

         usr


todos os acima sao diretorios, vamos ver.


         $ cd /usr           $ ls

         degrade

         datawiz

         prophet

         src

         violence

         par

         phiber

         scythian

         $ cd /usr/degrade

         $ ls

         hithere

         runme

         note.text

         src

      $


ok, agora, voc� n�o tem que entrar o nome do diret�rio completo, se voc� estiver no diret�rio, e quer ir para um diret�rio que est� ali [seria o "src"], voc� pode digitar "cd src" [sem "/"]. Em vez de usar "cd /usr/degrade/src" a partir do diret�rio degrade , voce pode fazer "cd src"

cp - isso copia um arquivo. sintaxe para isso � "cp origem destino"


         $ cp runme runme2


         $ ls


         hithere


         runme


         note.text


         src


         runme2


Caminhos completos podem ser incluidos, para copiar de um diret�rio para outro.


$ cp runme /usr/datwiz/runme mv - isso renomeia e/ou move um arquivo. sintaxe "mv nomeatual novonome"


         $ mv runme2 runit


         $ ls


         hithere


         runme


         note.text


         src


         runit


         diret�rios.


         $ mv runit /usr/datwiz/run


         $ ls


         hithere


         runme


         note.text


         src


         runme


         run


         pwd - fornece o diret�rio atual


         $ pwd


         /usr/degrade


         $ cd src


         $ pwd


         /usr/degrade/src


         $ cd .. (Tem espaco entre cd e ..)


         $ pwd


         /usr/degrade


         [ o ".." significa o diret�rio anterior. ]


         $ cd ../datwiz


         [significa cd /usr/datwiz]


         $ pwd


         /usr/datwiz


         $ cd $HOME


         [vai para o diret�rio home]


         $ pwd


         /usr/degrade rm - apaga um arquivo. sintaxe "rm arquivo" ou "rm -r diretorio"


         $ rm note.text


         $ ls


         hithere


         runme


         src


      $ write - chat com outro usu�rio. Bem, "escreve" para outro usu�rio. sintaxe: "write usuario"


      $ write scythian


      scythian foi notificado


      Hey Scy! What up??


      Message from scythian on tty001 at 17:32


      hey!


      me: So, hows life?


      scy: ok, I guess.


      me: gotta go finish this text file.


      scy: ok


      me: control-D [para sair do programa]


      $


who [w,who,whodo] - mostra quem est� conectado


      $ who


login           term logontime


rubinho           +           tty001 17:20


      x-factor        +        tty002 15:50


      degrade       +        tty003 17:21


       netkillers        -        tty004 11:20


       Federal        -        tty666 66:60


      $


o comando "who" varia a partir da informa��o dada. um "+" significa que voce pode dar um "write" para aquele terminal, um "-" significa que voce nao pode. man - mostra o manual de algum comando. sintaxe "man comando" Esse � um programa de ajuda. Se voce quiser saber como usar o comando "who" faria ent�o:


      $ man who


      WHO(1) xxx......


      e ele vai mostrar a voce. stty - altera as caracter�sticas do seu terminal. Voce ter� que dar um "man stty" uma vez que cada stty � diferente.

um exemplo pode ser:


         $ stty -parenb para fazer os parametros de dados serem N,8,1. Um monte de Unixes operam com


     e,7,1 por padrao.


sz,rz - envia e recebe via zmodem


rx,sx - envia e recebe via xmodem


rb,sb - envia via batch


ymoden - Esses 6 programas podem ou nao estar no unix.


umoden - envia/recebe via umodem.


         $ sz arquivo


         pronto para enviar...


       $ rz filename


          por favor envie seu arquivo....


     ...etc.. ed - editor de textos. Usar "ed arquivo" para criar um arquivo que n�o existe, apenas entre "ed arquivo" algumas vers�es do ed ira dar a voce um prompt, como "*" outros n�o.


      $ ed textonovo


      0


      * a


      This is line 1


      This is line 2


      [control-z]


      * 1 [para ver a primeira linha]


      This is line 1


      This is line 3


      [control-z]


      *0a [acrescenta depois da linha 0]


      This is THE first line


      [control-z]


      This is THE first line


      This is line 1


      This is line 2


      * w


      71


      * q


      $


      O 71 e o numero de bytes escritos.


a = acrescenta


1 = lista


# = mostra o numero da linha


w - escreve


l arq = carrega arq

s arq = salva para arq


w = escreve para arquivo atual


q = sai


mesg - altera permiss�o de escrever ligado/desligado para seu terminal (permite chat) formato "mesg y" ou "mesg n"

cc - O compiler C. explicado mais tarde.


chmod - altera o modo de um arquivo. Muda o acesso em outras palavras. sintaxe: "chmod modo arquivo"


         $ chmod a+r newtext


         Agora qualquer um pode ler pode ler o newtext.


a = todos (u = voce / g = seu grupo / o = outros grupos)


r = leitura. (w = escrever / x = executar) Isso sera explicado mais tarde na secao de acesso a arquivos. chown - altera o dono de um arquivo. sintaxe: "chown novodono arquivo"


         $ chown scythian newtext


      $


chgrp - altera o grupo [explicado mais tarde] de um arquivo. sintaxe: "chgrp group file"


         $ chgrp root runme


       $

finger - mostra info b�sica de uma conta. Formato: finger conta

gerp - procura por texto em um arquivo. sintaxe: "grep texto arquivo"


         $ grep 1 newtext


         This is Line 1


         $ grep THE newtext


        This is THE first line


       $ grep "THE line 1" newtext


        $ mail - Esse � um utilit�rio muito usado. Obviamente, voce j� sabe o que isso faz pelo nome. Existem muitos utilit�rios para o mail, como o ELM, MUSH e MSH, mas o programa b�sico de "mail" � chamado de "mail". O modo de usar �:


"mail nome@conta" ou "mail nome" ou "mail" ou "mail ender1!ender2!ender3!usuario"


"mail nome@endereco" - Isso � usado para enviar mail para algu�m em outro sistema, que � geralmente outro UNIX, mas algumas maquinas DOS e algumas maquinas VAX recebem o E-mail do UNIX. Quando voce usa "mail nome@endereco" o sistema que voce est� deve ter um "carteiro esperto" [conhecido como smail], e deve ter o que � chamado de mapas do sistema.

O smail ir� encontrar o "emdereco" dado com o comando e expandilo para o caminho completo geralmente. Eu podia fazer como isso: mail phiber@optik e depois fazer isso no computador:


mail sys1!unisys!pacbell!sbell!sc1!att.com!sirhacksys!optik!p

hiber

N�o ligue para isso, estou apenas explicando o principal

da coisa.

Agora, se n�o tiver nenhum smail conectado, voce ter�

que saber o caminho completo at� a conta da pessoa.

Exemplo, eu quero enviar um email para o .. phiber. Eu

fa�o isso, caso nao tenha smail:


$ mail

sys!unisys!pacbell!sbell!sc1!att.com!sirhacksys!optik!ph

iber

        Hey Guy. Whats up? Well, gotta go.

Nice long

message huh?


         [control-D]


        $

Assim, quando ele receber, dever� existir umas 20 linhas de informa��o, com uma marca��o de cada sistema que minha messagem passou, e a linha "from" vai estar assim:


From

optik!degardesys!att.com!sc1!sbell!pacbell!unisys!sys!de

grade

Agora, para correio local, apenas digite "mail nome"

onde nome � a conta que voce quer enviar o mail. Depois

digite sua messagem. Depois finalize com um control-D.


Para ler o e-mail, apenas digite mail. Ex:


          $ mail


        From rubinho ............ To degarde ............


         


         Subject: Well....


        Arghhh!


        ?


Os pontos representam dados omitidos. Cada programa de

e-mail possui seu proprio cabe�alho. Aquele ? � um prompt. No prompt eu posso digitar:

d - deleta

f nome - reenvia para nome

w arq - escreve a mensagem para um arquivo chamado arq.

s arq - salva a messagem com cabe�alho para um arquivo

q - sai / salva o e-mail

x - sai, mas nao salva nada

m nome - mail para o nome

r - devolve

[enter] - le a proxima mensagem

+ - adianta uma messagem

- : volta um

h - imprime o cabecalho das mensagens que estao na sua caixa de correio.


      Existem mais, para v�-las, digite '?'.


     Se voce envia mail para algu�m de fora do seu sistema, voce ter� que esperar um longo tempo para uma nofica��o de recebimento, uma vez que � apenas umas letras. Um "carteiro" ter� que pegar ela.

O sistema pode desconectar, e usar UUCP para transferir e-mail. Geralmente, contas uucp n�o s�o boas para ningu�m, a menos que voce tenhas uucp dispon�vel para interceptar e-mail.

ps - processo. Esse comando permite ver o que voce esta atualmente fazendo na mem�ria. Toda vez que voce roda um programa, ele fica ligado a um numero de identificacao de processo (PID), para fins de controle de contas, e assim ele pode ser encontrado na mem�ria, ou ser apagado por voce, ou pelo root. Geralmente, a primeira coisa em uma listagem de processo pelo "ps" � seu nome shell.

Digamos eu esteja conectado como sirhack, usando o shell "csh" e rodando "watch scythian". O programa de escuta deve estar no background, significando que ele � capaz de fazer coisas enquando ele estiver rodando:


          $ ps


        PID TTY NAME


        122 001 ksh


        123 001 watch


        $


Isso � um PS encurtado. � uma listagem padr�o [curta por sinal].


A coluna TTY representa o "tty" [disposito de e/s] que o processo est� rodando.

Isso � somente usado realmente se voce esta usando layers ou mais de uma pessoa est� conectada com a mesma conta. Agora "ps -f" ir� dar a voce uma listagem completa do processo de voce mesmo, assim em vez de ver somente o programa "watch" voce ira ver "watch scythian"

kill - mata um processo. � usado para terminar um programa na memoria obviamente.


Voce pode somente matar processos pr�prios [aqueles que voce come�ou], a menos que voce seja root, ou seu EUID seja o mesmo que o do processo que voce quer matar. (Vou explicar euid mais tarde). Se voce matar o processo shell, voce ser� desconectado.

Da mesma forma, se voce matar o processo de algu�m, eles ser�o desconectados tamb�m. Assim, se eu disse "kill 122" Eu serei desconectado. Entretando, kill apenas envia um sinal para o UNIX dizendo pra ele matar um processo. Se voce usar a sintaxe "kill pid" entao UNIX mata ele quando ele terminar, o que pode ser nunca. Assim, voce pode especificar urgentemente! Tente "kill -num pid" Kill -9 pid e um kill definitivo quase instantaneamente. Assim se eu fizer isso:


         $ kill 122


       $ kill 123


       $ ps


       PID TTY NAME


122 001 ksh


123 001 watch


$ kill -9 123


[123]: killed

$ kill -9 122


garbage


NO CARRIER


Tambem, voce pode dar um "kill -1 0" para matar o processo de shell para desconectar-se. Isso ser� �til nos scripts (explicados mais tardes).

Programa��o em Shell

Programar em Shell � basicamente fazer um arquivo "script" para o shell padrao, pode ser sh, ksh, csh, ou algo nesse tipo. � como um arquivo batch no MSDOS, mas mais complexo, e mais Flexivel.


Primeiro, vamos para as variaveis. Vari�veis obviamente podem ter um valor.


Que podem ser strings ou n�meros.

numero=1

Isso vai dar um valor 1 para a variable chamada "numero". string=Hi There ou string="Hi There"

Ambas ir�o dar um valor "Hi there" para a vari�vel.

Usar uma vari�vel � diferente. Quando voce quiser usar uma vari�vel voce deve colocar um simbolo dollar ($). Essas vari�veis podem ser usadas como argumentos em programas. uando eu disse que scripts s�o como arquivos batch, Eu quis dizer isso. Voce pode entrar qualquer nome de um programa em um script, e ele ir� executar ele. Aqui vai um script exemplo:

counter=1

arg1="-uf"

arg2="scythian"


        ps $arg1 $arg2


        echo $counter

Esse script ir� traduzir para "ps -uf scythian" e depois ir� imprimir "1" depois de ter terminado. ECHO mostra algo na tela, ou n�merico ou uma string.

Outros comandos / Exemplos:

read - l� algo para uma vari�vel. formato: read vari�vel . O sinal de dollar nao � necess�rio aqui!

Se eu quiser pegar o nome de algu�m, eu posso fazer:


echo "QUal o seu nome?"


read hisname


echo Ola $hisname


        QUal o seu nome?


       Sir Hackalot


       Ola Sir Hackalot

Lembre-se, read pode ler valores n�mericos tamb�m.

trap - Isso espera alguem usar o comando de interrup��o. (Ctrl-c)

formato: trap "commando ; commando ; commando ; etc.."


Examplo:


       trap "echo 'Noway!! You are not getting rid o me that easy' ; echo


       'You gotta see this through!'"


Agora, se eu teclar control-c durante o script depois dessa estrutura for executada, eu terei:


       Noway!! You are not getting rid of me that easy

 
      You gotta see this through!

exit : formato:exit [num]

Isso sai do shell [quits] retornando um valor num de saida.


CASE


O Case pode ser usado para se fazer menus. O formato do comando ou estrutura �: case variavel in


1) comando;


comando;;


2) comando;


comando;


comando;;


*) comando;;


esac


Cada parte pode ter qualquer n�mero de comandos. O �ltimo comando entretanto tem que ter um ";;".

Por exemplo:


echo "Escolha:"


echo "(D)iretorio (L)ogoff (S)hell"


read choice


case $choice in


D) echo "Listando Diretorios...";


ls -la ;;


L) echo Bye;


kill -1 0;;


S) exit;;


*) Echo "Erro! Nao e um comando";;

esac


O esac marca o fim da fun��o case. Ele deve vir depois do


�LTIMO comando.

Loops

Existem duas fun��es de loop. O loop "for" e o "repeat". repeat funciona assim: repeat algo algo1 algo2 isso ir� repetir um se��o de seu script para cada "algo". digamos que eu fa�a isso:


repeat scythian sirhack prophet

Eu vou ver "scythian" depois sirhack depois prophet na tela.

O loop for � definido como "for vari�vel in algo

do

..

..

done"


exemplo:


for counter in 1 2 3

do

echo $counter

done


Ira escrever 1 depois 2 depois 3.

Usando TEST

formato: Test variavel op��o variavel

As op��es s�o:

-eq =

-ne <> (diferente)

-gt >

-lt <

-ge >=

-le <= para strings e: = para igual != para diferente.

Se a condi�� � verdadeira, um zero � retornado. Veja:

test 3 -eq 3 isso ira fazer um test 3 = 3, e um 0 ser� retornado.

EXPR


Isso � para fun��es n�mericas. Voce n�o pode simplesmete digitar echo 4 + 5 e ter uma resposta. voce deve dizer:

expr variavel [ou numero] operador variavel2 [ou numero] o operadores s�o:

+ mais

- menos

* multiplica��o

/ divis�o

^ - exponencia��o (em alguns sistemas)

exemplo : expr 4 + 5

var = expr 4 + 5

var deve ter 9.

Em alguns sistemas, expr algumas vezes imprime uma formula. Ou seja, 22+12 nao e igual a 22 + 12.

Se voce fizer expr 22+12 voce ira ver:

22+12

Agora se for expr 22 + 12 voce vera:

34

VARI�VEIS DO SISTEMA

Existem vari�veis usadas pelo shell, e s�o geralmente mantidas no arquivo .profile [expli��o mais tarde].

HOME - lugar do seu diret�rio home.

PS1 - O prompt que voce tem. geralmente $ . Num BSD e geralmente &

PATH - Esse � o caminho de procura por programas.

Quando voce digita um programa para ser executado, ele n�o est� na memoria; ele deve ser carregado do disco.


Muitos comandos n�o est�o na mem�ria como no MSDOS. Se um programa est� no caminho de procura, ele ser� executado sem problema onde voce est�. Se n�o, voce ter� que estar no diret�rio onde ele estiver. Um path � um conjunto de diret�rios basicamente, separados por um ":". Aqui vai um caminho de procura t�pico:

:/bin:/etc:/usr/lbin:$HOME:

Quando voce tentar executar um programa, o Unix ir� procurar por ele no /bin, /etc, /usr/lbin, e no diretorio home, e se n�o for encontrado, um erro aparece.

Ele procura em diretorios na ORDEM do path. Assim se voce tem um programa chamado "sh" no seu diret�rio home, e digitar "sh", Mesmo estando no seu diret�rio home, ele ir� executar o que est� no /bin.

Assim, voce deve criar seu path sabiamente.

Unixes de acesso p�blico fazem isso para voce, mas alguns sistemas que voce encontrar podem n�o ter um path feito.

TERM - Esse � seu controle do terminal. UNIX tem uma biblioteca de fun��es chamadas "CURSES" que podem pegar vantagem de qualquer terminal, fornecendo os codigos de escape encontrados. Voce deve ter seu term configurado para algo se voce roda programas orientados por telas. Os c�digos/nomes de escape dos terminais s�o encontrados em um arquivo chamado TERMCAP. N�o sinta mal quanto a isso. apenas altere seu term para ansi ou vt100. CURSES ir� deixar voce saber se ele n�o pode manipular sua emula��o de terminal.


O compilador em C


Isso ser� uma introdu��o apenas. Porque? Porque se voce quiser aprender C, compre um livro. Nao tenho tempo para escrever outro arquivo sobre C, por isso ser muito extenso. Basicamente, muitos execut�veis s�o programados em C. C�digos fontes no unix s�o encontrado como arquivos .c .


Para compilar algum apenas digite "cc arquivo.c". Nem todos os programas em C ir�o compilar, uma vez que eles dependem de outros arquivos que n�o est�o l�, ou s�o apenas m�dulos. Se voce ver algo chamado "makefile" ent�o voce pode geralmente, digitar apenas "makefile" no prompt, e a ;go ir� ser compilado ou tentar� ser compilado. Quando usar makefile ou CC, ser� muito esperto usar o operando de background uma vez que compilar algumas vezes demora muito tempo.


IE:


$ cc login.c&


[1234]


$

(O 1234 foi o n�mero do processo que ele ficou identificado).


O sistema de arquivos


Essa � uma parte do UNIX instrumental. Se voce n�o entende essa se��o, nunca ser� capaz de hackear Unix, uma vez que muito do que voce tem que fazer depende disso.


Primeiro, vamos comecar a falar sobre a estrutura do diretorio. Ela � basicamente um sistema de arquivos hier�rquico, ou seja, ele comeca na raiz e expande-se, como no MSDOS.


Aqui � uma listagem de uma �rvore de diret�rios: (d) significa diret�rio


     / (root dir)

     |

     |

     |--------------------|

   bin (d) usr (d)

    ----------------------------

   --------- | |

   | | |

   (d) prophet (d)

       sirhack(d) scythian

          |

          |

           src (d)


Agora, esse sistema particular cont�m os seguintes diret�rios:

/

/bin

/usr

/usr/sirhack

/usr/sirhack/src

/usr/scythian

/usr/prophet

Espero que voce tenha entendido essa parte, e voce deve. Tudo expande a partir do diret�rio raiz.

Permiss�es de arquivos

Agora, isso � realmente o barato. Permiss�es de arquivos. N�o � muito di�icil entender permiss�es de arquivos, mas eu irei explicar profundamente de qualquer jeito.

OK, agora voce deve entender de grupos de usu�rios t�o bem como nomes de usu�rios, todos pertencem a um grupo.

No prompt $, voce pode digitar 'id' para ver quais o grupos que voce pertence. Ok, grupos s�o usados para permitir que pessoas acessem certas coisas, ao inv�s de ter uma s� pessoa controlando/tendo acesso para certos arquivos.

Lembre-se tambem que o Unix olha o UID (User-id) de algu�m para determinar acesso, n�o o nome do usu�rio.

Permiss�es de arquivos n�o s�o realmente complicados. Cada arquivo tem um dono, esse dono � geralmente aquele que criou o arquivo, ou por copiar um arquivo ou apenas por t�-lo editado.

O programa CHOWN pode ser usado para alterar o dono de um arquivo.

Lembre-se que o dono de um arquivo deve ser aquele que rodou o CHOWN, uma vez que ele � o �nico que pode alterar a permiss�o de um arquivo.

Outra coisa, existe um dono do grupo, que � basicamente o grupo que voce est� quando o arquivo foi criado. Voce pode usar chgrp para mudar o grupo de um arquivo.

Arquivos podem ter permiss�es de serem executados, permissoes de leitura, ou permissao de escrita.

Se voce tiver permiss�o de execu��o, voce sabe que voce pode simplesmente escrever o nome do programa na linha de comando, e ele ser� executado. Se voce tiver permissao de leitura de um arquivo, voce pode, obviamente, ler o arquivo, ou fazer algo que leia o arquivo, tal como copiar o arquivo.

Se voce n�o tiver acesso a um arquivo, voce n�o pode fazer nada que requeira ler o arquivo. Essa � a mesma coisa com a permiss�o de arquivo.

Todas as permiss�es s�o arranjadas em 3 grupos. O Primeiro � a permiss�o do dono.

Ele pode ter as permiss�es configuradas para si pr�prio para ler e executar, mas n�o escrever no arquivo. Isso para impedir que o dono apague o arquivo.

O segundo grupo � a permiss�o do grupo. Pegue uma entrada de arquivos para ter um exemplo:

$ ls -l runme

r-xrwxr-- sirhack root 10990 March 21 runme

ok. Agora, o "root" � o grupo onde o arquivo est�. "sirhack" � o dono.

Se o grupo chamado 'root' tem acesso para ler, escrever e executar, eles podem fazer isso. Veja .. Scythian veio atr�s do arquivo, ele est� no grupo chamado root.

Ele pode ler, escrever ou executar o arquivo. Agora, o datawiz veio atr�s do arquivo tamb�m, mas ele est� no grupo "users". A permiss�o de grupo n�o pode ser aplicada para ele, significando que ele n�o tem permiss�es, assim ele n�o pode tocar no arquivo, certo? so he couldn't touch Errado. Existe um terceiro grupo de permiss�es, e esse e o "outros" grupos. Isso significa que as permiss�es em "outros" grupos aplicam-se para todos al�m dos dono e dos usu�rios do mesmo grupo do arquivo.

Olhe na entrada de diret�rio ao lado. O r-x-rwxr-- e a linha de permiss�es

Os primeiros 3 caracteres s�o as permissoes para o dono (r-x).

O "r-x" traduz-se para "permiss�o de ler e executar, mas sem escrever" o segundo conjundo do 3, r-xRWXr-- (aqueles em maisculas) s�o as permiss�es de grupos. Significa que "leitura, grava��o e execu��o s�o permitidas"

O 3� conjunto, r-xrwxR-- � a permiss�o para os todos os outros.

Isso significa "somente a leitura � permitida". Um diret�rio pode parecer como isso:


$ ls -l


drwxr-xr-x sirhack root 342 March 11 src


Um diret�rio tem um "d" no in�cio das linhas de permiss�es. Agora, o dono do diret�rio (sirhack) pode ler do diret�rio, escrever no diret�rio e executar programas do diret�rio. O grupo do root e todos os outros podem apenas ler a partir no diret�rio, e executar programas no diret�rio. Assim, se eu mudei o diret�rio para ser executavel apenas, isso � como ele ser�:


$ chmod go-r


$ ls


drwx--x--x sirhack root 342 March 11 src


Se algu�m est� nesse diret�rio, ele pode somente executar programas do diret�rio. Se ele fizerem um "ls" para pegar uma listagem de arquivos do src, ir� aparecer "cannot read directory".

Se h� uma arquivo que pode ser lido no diret�rio, mas o diret�rio n�o pode ser lido, � quase imposs�vel ler o arquivo, a menos que voce saiba o nome do arquivo.

Se voce n�o tem permiss�o para executar em um diretorio, voce n�o ser� capaz de executar algo no diret�rio.

>>>>>>> H A C K E A N D O <<<<<<<<<<

O primeiro passo para hackear o UNIX � conseguir entrar no sistema operacional encontrando um conta v�lida/senha.

O objetivo de hackear � geralmente ser o root (privilegio total), assim se voce � sortudo o suficiente para saber ser o root, voce n�o precisa mais ler nada desse arquivo, e pode passar para se��o "Divertindo-se". Hackear pode ser simplesmente pegar contas de outras pessoas.


Entrando:


A primeira coisa a fazer � entrar no Unix. Ou seja, passar do prompt de login.

Essa � a primeira coisa. Quando voce entra em um UNIX, algumas vezes ele ir� identificar a si proprio dizendo o seguinte:


"LeBeau INC. et al Company UNIX"


ou apenas:


"LeBeau Inc. Please login"


Aqui � onde voce tentar� as contas padr�o que j� foram mostradas. Se voce entrar com aquele, voce pode tentar fazer o mais avan�ado ato de hackers (ser o root).

Se voce faz algo errado no login, voce ter� a messagem "login incorrect"

Isso foi feito para confundir os hackers, ou manter a maravilha. Porque?

Bem, voce n�o sabe se entrou com uma conta que nao existe, ou uma que existe e errou a senha. Se voce der um login e ele disser "Not on Console", voce tem um problema.

Voce tera que dar um login como algu�m mais, e usar SU para ser o root.

Agora, voce tem que pensar (Como diz meu professor, perder a virgindade do c�rebro). Se voce n�o entrar com um default, voce obviamente ter� que encontrar alguma coisa a mais para dar um login. Alguns sistemas tem uma boa forma de fazer isso permitindo o uso de logins de comando. S�o os que simplesmente executam um comando, depois d�o um logoff. Entretando, os comandos que eles executam s�o geralmente muito �teis.

Por exemplo, existem 3 comandos muitos comuns que mostra quem esta conectado naquele momento.


Eles sao:


who


rwho


finger


Se voce conseguir fazer um desses funcionar, poder� tentar os nomes dos usu�rios que est�o conectados. Muitos usu�rios usam o nome da conta como senha. Exemplo o "bob" pode ter uma senha "bob" ou "bob1". Isso nao � esperto, mas n�o esperam que um hacker venha tentar fazer isso com eles. Eles somente querem ser capazes de logar rapidamente.

Se um login de comando n�o existe, ou nao te � �til, a� voce pode ficar com a cabeca quente. Uma alternativa ent�o seria tentar usar o nome do unix que ele est� identificado.

Por Exemplo, o Unix da LeBeau INC pode ter uma conta chamada "lebeau"


LeBeau, INC. Please Login.


login: lebeau


UNIX SYSTEM V REL 3.2


(c)1984 AT&T..


..


..


..


Alguns unixes tem uma conta aberta chamada "test". Isso tamb�m � um padr�o, mas isso � surpreendemente suficiente, ele algumas vezes � deixado aberto. � bom tentar usar ele.

Lembre-se, cabe�a quente � a chave para um unix que n�o tem aparentemente nenhum padrao aberto. Pense nas coisas que podem ter rela��o com esse Unix. Digite coisas tipo "info", "password", "dial", "bbs" e outras cositas mas que podem pertencer ao sistemas "att" est� presente em algumas m�quinas tamb�m.


UMA VEZ DENTRO -- ARQUIVOS ESPECIAIS


Existem muitos arquivos que s�o muito importantes para o ambiente do UNIX.


S�o os que seguem:


/etc/passwd - Esse � provavelmente o arquivo mais importante no UNIX, porqu�? bem, basicamente, ele possui as contas v�lidas/senhas.


Isso � importante uma vez que apenas aquelas listadas no passwd podem dar o login, e algumas delas n�o podem (vou explicar).

O formato do arquivo de password � o seguinte:


nome: senha: UserID: GroupID: descricao(ou nome real): homedir: shell


(note que os : � o que separa os campos do arquivo)


Aqui est�o dois exemplos:


sirhack:89fGc%^7&a,Ty:100:100:Sir

Hackalot:/usr/sirhack:/bin/sh

demo::101:100:Test Account:/usr/demo:/usr/sh


No primeiro exemplo, sirhack � um usu�rio v�lido.

O segundo campo, entretando, � suposto para ser uma senha, certo? Bem, ela �, mas est� encripatada com o algoritmo de encripta��o da DES. A parte que diz "&a,Ty" pode incluir um data depois da virgula (Ty) que diz ao unix quando a senha expira. Sim, a data est� encriptada em dois caracteres alfanum�ricos (Ty).

No segundo exemplo, a conta demo n�o tem senha.

Assim no Login, voce pode digitar:


login: demo


UNIX system V


(c)1984 AT&T


..


..


Mas com sirhack, voce ter� que entrar com a senha. O arquivo de senhas � grande, muitas vezes, voce ser� capaz de navegar atrav�s dele olhando por contas sem senhas.

Lembre-se que algumas contas podem ser restritas de se logar com elas, exemplo:


bin:*:2:2:binaccount:/bin:/bin/sh

O

'*' significa que nao pode dar um login com ele.

Sua �nica finalidade ser� rodar um shell SUID shell (explicado mais tarde).

Um nota sobre a encriptacao DES:

Cada unix faz a sua propria "palavra chave" como base de sua encripta��o. Muitas vezes s�o somente letras aleat�rias e n�meros, escolhidas na instala��o pelo sistema operacional.

Agora, desencripitar coisas encriptadas com DES n�o � f�cil.

� quase imposs�vel. Especialmente desencriptar o arquivo de senhas (desencriptar o campo com as senhas no arquivo de senhas para ser exato). Nunca acredite em um hacker que diz que desencriptou um arquivo de senhas. Ele provavelmente est� mentindo.

As Senhas nunca s�o desencriptadas pelo unix, mas ao contr�rio, uma chamada ao sistema � feita para uma fun��o chamada "crypt" de dentro da linguagem C, e a string que voce entrou como as senhas fica encriptada, e comparada com a senha encriptada. Se elas combinam, voce estar� dentro. Existem hackers de senhas, mas eles n�o desencriptam o arquivo de senhas, e sim encriptam palavras de um dicion�rio (wordlist) e testam elas em cada conta (criptografando/comparando) at� que encontra uma igualdade, para isso utilizam programas como o BruteForce ou CrackJack.

Lembre-se, poucos ou talvez ningu�m, conseguiram desencriptar o arquivo de senhas com sucesso.


/etc/group - Esse arquivo contem os grupos validos. O arquivo de grupos � geralmente definido como esse:


grupo:senha:groupid:usuarios no grupo


De novo, as senhas s�o encriptadas aqui tamb�m. Se voce v� uma senha em branco voce podera ser parte daquele grupo usando o comando "newgrp".

Existem casos em que alguns grupos sem senhas ir�o apenas permitir que certos tipos de usu�rios entrem naquele grupo via o comando newgrp.

Geralmente, se o �ltimo campo � deixado em branco, isso significa que qualquer usu�rio pode usar newgrp para ter o acesso ao grupo. De outra forma, apenas os usu�rios especificados no �ltimo campo podem entrar no grupo por newgrp.

Newgrp � apenas um programa que ir� mudar seu grupo atual por aquele que voce especificar. A sintaxe �:


newgrp grupo


Agora, se voce encontrar um grupo sem senha e usar newgrp para entra nele, e ele pedir uma senha, voce nao est� permitido de usar o grupo.

Eu explicarei melhor isso na se��o "SU & Newgrp".

/etc/hosts - Esse arquivo contem uma lista de host que o UNIX esta conectado atrav�s de uma rede de hardware (tipo um 0elo x.25 ou algo assim), ou �s vezes por UUCP. Esse � um bom arquivo quando voce esta hackeando uma rede enorme, uma vez que ele mostra a voce sistemas que voce pode usar com rsh (Shell Remote, nao restrito shell), rlogin, e telnet, t�o bem como outros programas de elo de ethernet/x.25.

/usr/adm/sulog (ou su_log)- - O arquio sulog (ou su_log) By DaRkGUn Page�