sexta-feira, 12 de dezembro de 2008

CURSO DE UNIX VIII

CURSO DE UNIX VIII por gato-bravo-e-brasileiro
* Os Atributos SUID e SGID
Os atributos SUID e SGID tem uma funcao muito especial no UNIX: uma vez executados o seu UID e/ou GID e alterado. No caso do atributo SUID estar presente, voce passa a ter a identidade do dono do arquivo; no caso do SGID voce passa a ser do mesmo grupo a qual o arquivo pertence.
Vale lembrar que a identidade e apenas mantida naquele programa, apenas durante a sua execucao.
Mas qual seria a ultilidade de um programa com esses atributos?
Por exemplo, voce quer que um usuario possa fazer a impressao de um documento. Para isso, ele precisara ter permissao de acesso ao device da impressora. Porem nao voce que quer que esse usuario possa fazer qualquer coisa com aquele device, voce quer apenas que ele use-o pra impressao.
Qual a saida? Setar atributos SUID ou SGID ao programa que fara a impressao. Assim voce limitara o seu acesso.
Seja muito cauteloso quando for criar um programa SUID ou SGID: 90% dos casos de buracos na seguranca sao causados esses programas. Um exemplo classico foi um worm (se nao me engano foi em 1989) que praticamente derrubou toda a Internet: ele usava um bug de um programa com SUID (o sendmail).
Outro exemplo recente e o webserver httpd, da NCSA. Rodando com SUID root, um bug nele comprometeu a seguranca de milhares de computadores.
* O Superuser (no caso do UNIX, o root)
Em um sistema multiusuario seria impossivel fazer a administracao sem algum "super" usuario. No UNIX ele e o root (UID 0).
Rapidamente: o root pode fazer praticamente qualquer coisa: ler arquivos (mesmo sem ter permissao), mudar permissoes, matar e mudar a prioridade qualquer processo, etc.
* Como Funcionam as Permissoes para Diretorios
Os diretorios no UNIX usam as mesmas permissoes que os arquivos, porem elas sao interpretadas diferentemente.
Para voce poder listar os arquivos de um diretorio, voce precisa ter o atributo "r" setado. Caso nao tenha, voce ainda pode acessar arquivos do mesmo, porem com uma restricao: voce tera que saber previamente o nome do arquivo que voce quer acessar.
Diretorios como "rwx--x--x" sao muitas vezes chamados de "black boxes".
O atributo de execucao (search bit) e o mais importante: caso voce nao tenha ele setado, nada podera ser feito, o diretorio esta "fechado".
O atributo de escrita determina se voce tera permissao de criacao e modificacao de um arquivo. *NUNCA*, repito, *NUNCA* sete isso para o seu homedir. Algum ususario mal intencionado pode preparar uma "surpresinha" para voce.
Como sempre, o root e uma excecao: ele passa por cima de todos os atributos. Em outras palavras, ele pode escrever, ler, etc em qualquer diretorio (claro que em casos como volumes montados como "ro", a escrita nao e permitida; isso vale para os demais casos).
* Programas em Background: Como funciona
O UNIX sendo um sistema multitarefa, permite que voce rode varios programas simultaneamente. Fazendo uma compilacao em background:
% cc program.c & [1] 1297 %
Como voce pode perceber, o simbolo "&" significa: "execute em background". O numero entre colchetes e chamado de "job number" e o numero que o segue e o PID (process ID).
* Mais Sobre Programas em Background
No C Shell, Korn Shell, Bash, etc voce tem a facilidade do chamado "job control". Com isso voce podera manipular os processos com muito mais facilidade. Veja como funciona:
* Para colocar um programa rodando em background (se voce esqueceu o "&", por exemplo:
% cc program.c Stopped % bg [1] cc program.c
Como voce pode perceber, depois que o Control-Z foi pressionado no teclado, o programa foi suspenso e voce retornou para o shell. Neste ponto o programa esta totalmente parado. Depois foi dado o comando "bg". Isso faz que o ultimo programa em estado "stopped" seja colocado em background.
Para jogar o ultimo programa parado de background para foreground, use o comando "fg". Caso tenha varios processos rodando em background, voce pode ter uma lista deles usando o comando "jobs".
Para colocar em background o job numero "3":
% bg %3
Para colocar em foreground o job numero "2":
% fg %2

ass:gato-bravo-e-brasileiro

Nenhum comentário: