domingo, 27 de dezembro de 2009

Permissões


Posso dizer sem medo de errar ou de falar besteira:
Um dos pontos fortes do GNU/Linux é a segurança e essa segurança se baseia no sistema de permissões de acesso a arquivos e diretórios do sistema, um sistema de segurança bem configurado, com usuários tendo acesso somente àquilo que realmente precisam ter, torna o pinguim mais forte do que qualquer janela. Até porque janela foi feita para ser quebrada.

Para uma boa compreensão dos assuntos aqui abordados recomendo praticar enquanto vai lendo. assim vai absorver com mais facilidade o assunto aqui proposto.
Bons estudos.



___________________literal_______________octal___________________
leitura_______________r____________________4_____________________
escrita______________w____________________2_____________________
execução____________x____________________1_____________________



Existem três proprietários de arquivos no GNU/Linux:
Dono é aquele que criou o arquivo;
Grupo é aquele que foi "convidado" a ter acesso aos arquivos de um indivíduo e;
Outros não são nem donos e não pertencem ao grupo do dono.

Cada um desses proprietários pode ter ou não ter os três, ou cada um deles, tipos de benefícios que foram citados acima, leitura, escrita e execução.
O dono pode ler, escrever, executar um determinado arquivo, como também pode apenas ler e escrever, só ler, ou ainda o dono pode NÃO ter direito nenhum sobre o arquivo, sim isso é possível. Sim vamos supor que um usuário comum cria um arquivo, mas o usuário root, por algum motivo, acha que o usuário não deve acessar este arquivo então ele tira as permissões do dono, que não poderá mais acessar o arquivo.
Tudo isso vai depender de como foram configuradas as permissões de acesso daquele usuário ao arquivo em questão.
Mais para frente isso vai ficar claro, tenho certeza disso.

Vamos supor que você tenha um arquivo chamado, tchan, tchan, tchan, tchan: arquivo.KKKKK (Ótimo nome para arquivo).


Quando você digita o comando:
$ls -l arquivo
Verá algo mais ou menos assim:

-rw-r--r-- 1 osiel 0 2009-12-27 21:59 arquivo

Essa monstruosidade aqui:
-rw-r--r--
nos diz sobre as permissões de acesso que os usuários do sistema têm sobre esse arquivo chamado arquivo.

osiel diz respeito ao dono
0(zero) o tamanho em bytes
2009-12-27 a sua data de criação
arquivo nome do arquivo.

O primeiro caractere indica o tipo:
- arquivo normal
d diretório
b arquivo de bloco
c arquivo especial de caractere
p fifo ou canal
s socket
l link


Depois do primeiro temos nove caracteres divididos em grupos de três, cada grupo desse representa um usuário.
rw- para o dono
r-- para o grupo do dono
r-- para os outros


notação alternativa
*- execução
/-diretório
@-links
==-socktes
|-pipes

comando chmod

chmod permissões arquivo


Notação Simbólica:



usuários:
u=user (dono)
g=group (grupo)
o=others (outros)
a=all (todos)

ações:
+ = adicionar
- = remover
= = igualar permissões

permissões:
r=leitura
w=escrita
x=execução

Você pode definir diferentes permissões em linha
chmod g+w, o-r
Aqui ele dá permissão de escrita ao grupo e retira a permissão de leitura dos outros



Notação Octal


4 - leitura
2 - escrita
1 - execução

4+2+1=7 (rwx) total permissão ao arquivo
4+2=6 (rw) permissão de leitura e escrita
4 (r) permissão de leitura e só.


0-nenhuma permissão;
1-execução;
2-escrita;
3-execução e escrita;
4-leitura;
5-leitura e execução;
6-leitura e escrita;
7-leitura, escrita e execução.

Note que temos apenas três números:
(4,2,1)
Se o grupo tiver permissão 6 quais desses números somados podem virar 6?
Claro que só o 4 e 2.
Ficou claro?

Mais um pouco

---------_______000
r--------_______400
r--r--r--_______444
rw-------_______600
rw-r--r--_______644
rw-rw-r--_______664
rwx------_______700
rwxr-x---_______750
rwxr-xr-w_______755
rwxrwxrwx______777

Lembre-se cada grupo de três caracteres representa um usuário
Cada número representa um usuário.

Comandos


Temos visto uma evolução enorme nos sistemas gráficos do sistema operacional GNU/Linux, tanto o KDE, como o Gnome, os dois mais usados, têm feito melhorias visuais impressionantes em seus desktops. Aí vem a dúvida:
Para que usar linha de comando quando se tem uma interface gráfica tão atraente?
Não é masoquismo não, quando se trabalha no modo texto, a famosa linha de comando, tanto no terminal, como também com a utilização das teclas Ctrl+alt+(F1 ou F2 ou F3 ou F4 ou F5 ou F6, uma vez aqui dentro para sair basta digitar alt+F7), tem-se a nítida noção do que são velocidade e resposta eficiente de sua máquina, e também pode ser muito PRAZEROSO trabalhar com a utilização de comandos bastando para isso um pouco de empenho e estudo para saber qual comando melhor se adapta a cada situação.
Existe uma infinidade de comandos.
Mas vou dispor aqui os mais usados:
$ este símbolo significa que temos um usuário comum, sem poderes de administradores;
# este é referente ao super usuário, toda vez que tiver este símbolo significa a obrigatoriedade de ser super usuário.

_________________________________________________________________________________________________
#mksf opções (sistema de arquivos) ponto de montagem

opções:
-t diz ao comando qual sistema de arquivos será construído.
-V produz uma saída completa, incluindo todos os comandos executados.

Comando para construir um sistema de arquivos em um dispositivo

Ex:
#mkfs -t vfat /dev/sdb1
comando para formatar pendrive.

_______________________________________
clear, ctrl+l= serve para limpar a tela;

__________________
echo = útil na construção de mensagens de scripts para mostrar para o usuário o que o script tá fazendo por exemplo:
#!/bin/bash

echo atualizando o sistema!
sudo apt-get update
sudo apt-get upgrade
echo sistema atualizado com sucesso!


_________________
man = consulta de manuais de comandos
$ man [opções] [seção]

opção
-a exibe todas as páginas;
-h exibe uma mensagem de ajuda;
-w exibe a localização das páginas a serem exibidas.
Para sair da página de manual basta digitar q;

____________________
ls = lista conteúdos

ls [opções]

opções
-a exibe todos os arquivos até mesmo os ocultos, ocultos têm um ponto no início do seu nome:
.arquivo, esse arquivo ficará oculto.
--color lista os arquivos com padrões de extensão/tipo reconhecidos com cores diferentes.
-d lista o nome do diretório em vez de seu conteúdo.
-h combinada com a opção -l, mostra os tamanhos de arquivo em bytes. Ex 1, 20MB, 5GB.
-l faz a listagem detalhada dos arquivos.
total 5
drwx------ 2 osiel osiel 80 2009-12-16 21:43 amsn_received
drwxr-xr-x 6 osiel osiel 184 2009-12-27 11:40 Backup
drwxr-xr-x 2 osiel osiel 144 2009-12-15 20:06 Desktop
lrwxrwxrwx 1 osiel osiel 6 2009-12-25 10:08 Dispositivos -> /media
drwxr-xr-x 2 osiel osiel 384 2009-12-27 11:59 Documentos
drwxr-xr-x 2 osiel osiel 144 2009-12-27 11:40 Downloads
drwxr-xr-x 2 osiel osiel 80 2009-12-24 11:23 dwhelper
drwxr-xr-x 13 osiel osiel 432 2009-12-16 09:54 Estudo
drwxr-xr-x 3 osiel osiel 624 2009-12-26 20:00 Imagens
drwxr-xr-x 2 osiel osiel 1400 2009-12-24 10:27 java
drwxr-xr-x 2 osiel osiel 104 2009-12-17 22:22 Modelos
drwxr-xr-x 111 osiel osiel 3448 2009-12-26 14:42 Músicas
drwxr-xr-x 2 osiel osiel 120 2009-12-18 23:15 Programas
drwxr-xr-x 2 osiel osiel 80 2009-12-15 20:14 Pública
drwxr-xr-x 2 osiel osiel 112 2009-12-21 10:18 Torrents
drwxr-xr-x 3 osiel osiel 224 2009-12-26 15:33 Vídeos

-r mostra os arquivos em ordem reversa.
-s os arquivos são mostrados obedecendo a ordem de seus tamanhos.
-F adiciona um símbolo à extremidade de cada arquivo. Estes símbolos são:/para indicar diretório;@ para indicar link simbólico a outro arquivo; e * para indicar um arquivo executável.
-1 lista os nomes de arquivos, um por linha.

____________________________
pwd = mostra o diretório atual, onde você está no momento.

___________________________
cd =mudar de diretório

cd Músicas/Oxymoron
entra no diretório Músicas e no diretório da banda Oxymoron.
cd -
muda para o diretório usado anteriormente.
cd ~ vai para o diretório /home/usuário, se você digitar apenas cd vai obter o mesmo resultado.
cd .. sobe um diretório,

___________________________
touch = criar arquivos vazios, se este existir modifica sua data de criação;
opções:
-c = não cria caso ele já exista;
-m = atualiza a hora de criação;
-a= atualiza a data.

______________________________
mkdir = criar diretórios
mkdir dir1 dir2 dir3 dir4 cria vários diretórios ao mesmo tempo.
mkdir -p dir1/dir2/dir3 cria diretórios e subdiretórios.
rmdir elimina um diretório vazio.
rm -r elimina diretório com algo dentro.
rm -f elimina sem fazer perguntas.

______________________________
cp = copia arquivo;
cp -R copia diretório

_____________________________
mv = move ou renomeia arquivos;
mv arquivo1 arquivo2 = renomeia arquivo1 para arquivo2;
mv arquivo1 /home/osiel/Documentos= move o arquivo um para o diretório Documentos dentro da pasta do usuário osiel.

__________________________
ln -s = cria links
ln -s /media = cria um link para a pasta /media no local que você estiver atualmente.

O link é um mecanismo que faz referência a outro arquivo ou diretório em outra localização do disco.

____________________________
date = mostra a data do sistema.

_____________________________
cal = mostra o calendário de 12 meses. Sem opções imprime o calendário do mês corrente.
cal mes anos
ex:

osiel@osiel-abreu:~$ cal 04 2010
abril 2010
Do Se Te Qu Qu Se Sá
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30


opção
-j exibe as datas julianas

-m imprime a segunda como o primeiro dia da semana.

-y exibe o ano inteiro.



________________________________
uname = Com o auxílio de opções mostra nome do sistema, versão do kernel, plataforma de hardware, sem opção alguma mostra apenas o nome Linux.
sintaxe do comando:
uname opções

opções:
-a combina todas as opções e mostra todos os resultados possíveis.

-i imprime a plataforma de seu hardware

-m mostra o nome do hardware em que seu sistema está sendo executado

-n imprime o nome do host da máquina.

-o imprime o nome do sistema operacional.

-p imprime o tipo de processador.

-r mostra o número de lançamento do kernel.

-s imprime o nome do kernel(Linux).

-v imprime informações de construção do kernel.

______________________________________________
cat = mostra o conteúdo de um arquivo
opção
-n mostra o número das linhas
cat -n arquivo
-b numera todas linhas, menos as em branco, do arquivo

Concatena arquivos em um único arquivo, aqui os três arquivos serão transformados em um único arquivo resultante.
cat arquivo1 arquivo2 arquivo3 > arquivoResultante

_______________________________
chmod = trata de permissões de acesso.
leia artigo sobre permissões de acesso.

______________________________
tac = mostra o conteúdo de um arquivo só que em ordem inversa.

______________________________
more = usado para leitura de arquivos que ocupem mais de uma tela.

_______________________________
head =mostra as linha iniciais de um arquivo.
Sem opção mostra apenas as 10 primeiras linhas
head -5 /etc/passwd
mostra as cinco primeiras linhas do arquivo passwd.

________________________________
tail = mesma coisa do head só que agora com as linha finais.
tail -5 /etc/passwd

________________________________
wc = conta as palavras.
Opção -l conta linhas, -w palavras e -c conta caracteres.

__________________________________
du = exibe o espaço usado de um diretório e de todos os seus subdiretórios, em blocos de 512 bytes,
du -k exibe o tamanho dos diretórios em kb
du -c exibe o total geral, em caso de existir subdiretórios.

____________________________
df = mostra o espaço livre/ocupado de cada partição
opções:
-h mostra o espaço em MB, GB, KB ao invés de blocos.

____________________________
free = mostra o consumo de memória
opções:
-b em bytes
-k em kbytes
-m em Mbytes
-o oculta a linha de buffers
-t mostra uma linha contendo o total (física + Swap)
-s[num] atualiza a exibição a cada num segundos.


_________________________
nl = mostra o número de linha junto ao conteúdo do arquivo
nl [opções] arquivo

__________________________
time = mede o tempo gasto para executar um processo
time [comando] onde comando é o comando/programa que deseja medir o tempo gasto para ser concluído.
time ls

_______________________________
uptime = mostra o horário atual, o tempo de execução do sistema desde que o computador foi ligado, o número de usuário conectados no sistema e as médias de carga do sistema.

_______________________________
seq = imprime uma sequência de números começando em [primeiro] e terminado em [último], utilizando [incremento] para avançar.

_________________________________
diff = compara dois arquivos e mostra as diferenças entre eles. O comando diff é usado somente para a construção de arquivos em formato de texto.

_____________________________
adduser = cria um novo usuário para o sistema.
opções
--conf utiliza as informações gravadas no arquivo /etc/adduser.conf. Utilize esse parâmetro para utilizar outro arquivo de configuração.
--disable-login não solicita senha para o usuário. a conta indisponível, até que seja executado o comadno passwd manualmente para definir uma senha para o usuário.

______________________________
banner= imprime caracteres como um pôster.
banner opção
opção
-w configura a largura.
banner -w(largura) nome

_____________________________
userdel = exclui um usuário
-r exclui também o diretório do usuário /home/usuario

__________________________
alien
Se você tiver dificuldade de instalar um pacote RPM. Instale o allien e depois proceda da seguinte maneira:

instale o alien:
sudo apt-get install alien

digite:
alien pacote.rpm
O alien irá criar um pacote .deb

digite:
sudo dpkg -i pacote.deb

__________________________
ps
Este comando é um visualizador de processos ativos no sistema. O que o comando ps faz é tirar uma foto dos processos sendo executados no momento.
Sintaxe do comando ps:
ps [opções]

opções
a-mostra os processos criados por você o de outros usuários do sistema.
u-mostra quem criou o processo.
x-mostra os processos que não são controlados pelo terminal.
m- mostra a memória ocupada em cada processo sendo executado.
f- mostra a árvore de execução de comandos.

Para obter uma filtragem mais específica dos processo eu recomando usar o pipe |, com o grep.
Por exemplo:
Se você quer matar um programa e não quer ver todos os processos, digite assim:
ps ax | grep "programa",
Substitua "programa" pelo nome do programa que você que finalizar.
Ele irá mostras o PID do programa.
Com o auxílio do comando kill, que você pode ler aqui em baixo, você poderá finalizá-lo.

__________________________
kill
O comando kill, mata, um processo, isso deve ser feito buscando o PID do processo, com o auxílio do comando ps.
Sintaxe do comando kill:
kill [opções] [sinal] [número]

O número é o PID (Process Identifier) do processo.
sinal, sinal que será enviado ao processo.Se omitido usa 15 como padrão.

______________________________________
apagar CD/DVD-RW pela linha de comando.
Para apagar uma mídia de armazenamento CD/DVD-RW pela linha de comando basta digitar o seguinte comando no terminal:

growisofs -Z /dev/scd0=/dev/zero

apt

apt-get


Como já sabemos existem várias distribuições no mundo Linux, umas bem parecidas e outras completamente diferentes. Na maneira de armazenar os arquivos, de gerenciar os pacotes para download.
O Debian GNU/Linux e seus derivados possuem um conjunto de ferramentas para facilitar a vida do usuário, na hora de construir, instalar e gerenciar pacotes binários.
Em grande parte das vezes ao ver uma extensão .deb, pode-se ter certeza de que se trata de um pacote Debian. Dentre as ferramentas Debian (apt,aptitude,dpkg,dpkg-deb,dselect e synaptic) vou falar um pouco sobre o apt-get por ser a mais usada.
O arquivo /etc/apt/source.lst contém todas as fontes que o apt utilizará para localizar informações sobre o pacote. Neste arquivo poderemos alterar, incluir ou excluir os repositórios nos quais o apt irá buscar os pacotes.
O apt-get é uma simples interface de linha de comando para obter e instalar pacotes. Os comandos mais utilizados frequentemente são o update e install.


Exemplo de utilização do comando apt-get:


apt-get [opções] comando [pacote...]



Uma ferramenta de linha de comando para manipular pacotes. Serve também como uma back-end para outras ferramentas do APT, como dselect, synaptic e aptitude.

Exemplo de comando de atualização do sistema que pode ser utilizado todos os dias:

apt-get update && apt-get upgrade


comandos:

autoclean
Igual ao clean, mas remove apenas os arquivos que não podem mais ter o download feito.

build-dep
Instala ou remove pacotes para satisfazer as dependências de construção de um pacote-fonte.

clean
limpa o repositório local de arquivos de pacote recuperados. É útil para liberar espaço no disco.

check
Atualiza a cache de pacotes e verifica a existência de pacotes danificados.

dist-upgrade
Igual a upgrade, mas também manipula dependências de forma inteligente.

dselect-upgrade
Usada com dselect. Rastreia as alterações feitas por dselect no campo Status dos pacotes disponíveis e executa as ações necessárias para atingir esse estado.

install
Instala um ou mais pacotes. Especifique o nome do pacote e não o nome de arquivo completo. Os outros pacotes exigidos também são recuperados e instalados. Com um hífen anexado ao nome do pacote, o pacote é removido, caso já esteja instalado. Selecione uma versão para instalar, anexando um sinal de igualdade e a versão.


remove
Remove um ou mais pacotes. Especifique o nome do pacote e não o nome de arquivo completo. Com um sinal de adição anexado ao nome, o pacote é instalado.

source
Localiza pacotes-fonte e faz o download deles no diretório corrente. Se for especificada com –compile, os pacotes-fonte serão compilados em pacotes binários. Com –download only, os pacotes-fonte não são desempacotados. Selecione uma versão específica, anexando um sinal de igualdade e a versão.

update
Sincroniza novamente os arquivos de visão geral de pacotes, a partir de suas fontes. Isso deve ser feito antes de se usar upgrade ou dist-upgrade.

upgrade
Instala as versões mais recentes de todos os pacotes correntemente instalados no sistema. Execute update primeiro.




apt-cdrom


add
Adiciona um Cdrom

ident
Reporta a identificação de um CD-ROM



apt-cache

search
Busca uma expressão regular na lista de pacotes

show
Mostra um registro legível sobre um pacote

sábado, 26 de dezembro de 2009

SWAP

As partições são divisões feitas no HD, que possibilitam com essa divisão instalar mais de um Sistema Operacional (SO), quando queremos uma partição para armazenar arquivos pessoais que não devam ser perdidos com futuras formatações do HD. Por exemplo você cria uma partição /home/Backup apenas para guardar seus arquivos mais importantes. Assim dividimos o HD e podemos usufruir de tudo isso. Quando vamos instalar o Linux convém particioná-lo em no mínimo três partições:
/boot
swap
/
Aqui vou falar um pouco sobre a necessidade de uma partição SWAP.
Ao particionarmos um disco rígido durante a instalação do Linux é preciso deixar um espaço para a partição SWAP. A partição SWAP funciona com um background da memória RAM. Isso significa que se você tem uma quantidade x de memória e o computador precisar de uma quantidade x+1, vai faltar memória e o sistema vai travar, mas com uma partição para memória SWAP, ao ultrapassar todo o limite físico da sua memória RAM o sistema vai buscar o que for preciso na partição SWAP. Uma grande deficiência pode ser notada, já que essa partição é um pedaço do HD e não uma memória propriamente dita, fica claro que esta não terá o mesmo desempenho de uma memória de fato, serve apenas como auxílio em caso de uso total da sua memória. Ao abrir diversos programas você não usará todos ao mesmo tempo, os programas que estiverem abertos, mas não tiverem em uso serão transferidos para a partição SWAP.
Tudo vai depender da quantidade de memória RAM que você tiver no seu computador, mas é aconselhável criar uma partição SWAP com o dobro da sua memória RAM, mas pense bem:
Se você tem 2GB de RAM, não vai ser preciso 4GB de SWAP, é aconselhável em casos de pobres coitados que possuem 128MB de RAM, 256MB. O que felizmente está se tornando bem difícil hoje em dia.

sexta-feira, 25 de dezembro de 2009

GNU/Linux


O GNU/Linux, também conhecido apenas como Linux. Assim como o Unix, SunOS, Windows, MacOs, FreeBSD, é um sistema operacional (SO), ou seja um programa que faz o computador funcionar para algo. Sem SO um computador não passa de um monte de silício sem função alguma. Com ele você pode gerenciar suas fotos, vídeos, documentos, enfim tudo que se pode fazer em um computador se faz usando softwares que estão instalados em SO. No Linux o Kernel (base do SO) mais o conjunto de ferramentas GNU compõem o SO.
Existem muitas versões do Linux no mercado, todas têm características que as tornam diferentes entre si, mas estas versões são compatíveis pois utilizam o mesmo kernel.
O Kernel é o responsável por dar suporte aos mais diferentes periféricos: placas de rede, som, e o que mais você tiver espetado no micro. Uma nova versão sempre traz suporte a muita coisa nova, o que faz diferença principalmente para quem pretende trocar de PC. É por isso que o lançamento de uma atualização importante é sempre muito comemorado.
Mas, apesar de toda a sua importância, o grande objetivo dos desenvolvedores é que o Kernel seja invisível. Ele deve simplesmente fazer seu trabalho sem que você precise se preocupar com ele. Você só se dá conta que o Kernel existe quando algo não funciona, então quanto menos você notá-lo melhor, sinal de que as coisas estão funcionando bem.
O Linux foi criado em 1991 por um estudante finlandês, chamado Linus Torvalds. (Daí vem o nome Linux que é uma composição de Linu-Linus e x-Unix). Ele é um sistema de código fonte aberto, isso significa que você não precisa pagar nada para usá-lo e modificá-lo a sua maneira. Apesar de haver algumas pessoas que cobram uma pequena taxa apenas para manter a distribuição. É importante não confundir software livre com software grátis. Software livre é o software que tem seu código aberto para todos.
Não é crime fazer cópias, geralmente estas são até encorajadas para uma melhor distribuição do software. O Linux é um sistema leve. Não vou falar aqui que você só precisa de um processador 386, 2MB de RAM e 100MB de disco, porque com isso você só vai conseguir usar o modo texto e em dias atuais isso se tornou praticamente improvável. Uma das grandes vantagens do software livre é o fato de ser aberto, isso possibilita uma infinidades de pessoas com acesso aos fontes desse software, várias pessoas ao redor do mundo com a possibilidade de fazer correções e melhoramentos necessários. Tornando assim um software, atualizado, compatível com o que as pessoas procuram e principalmente sem um dono, já que todos são donos. Seu código fonte é liberado graças a licença GPL, isso quer dizer que ninguém pode fechar o código do Linux e tomá-lo para si, tornando-o comercial.

Dentre as várias características do Linux. vou citar algumas que julgo mais importantes:
-O Linux convive sem nenhum problema com outros SO no mesmo computador;
-Multitarefa e multiusuário;
-suporte a nomes extensos de arquivos;
-O LINUX NÃO SOFRE COM INFESTAÇÕES VIRAIS. Graças a uma política de restrições de acessos ao sistema de arquivos o Linux é sistema muito seguro;
-suporte a mais de 63 terminais virtuais;
-os sistemas de arquivos são organizados de forma inteligente evitando assim as conhecidas fragmentações de outros SO proprietários;
-suporte a diversos periféricos no mercado tanto os mais novos como os obsoletos.