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�