martes, 25 de diciembre de 2012

Administración, permisos en GNU/Linux [Básico][Seguridade]

Boas a todxs,

Esta entrada vai adicada a eses autodidactas de GNU/Linux, xente que comeza a empregalo e para repaso de permisos, que é unha parte moi importante na seguridade de GNU/Linux. En windows até o 7 (corríxanme se me equivoco) non era obrigatorio que existise un administrador como tal mais en GNU/Linux sempre foi necesario que existise, especialmente nun SO que tendo permisos podes tocar absolutamente todo. Pois ben, unha das principais cousas que son novidosas ao pasar de windows a gnu/linux moitas veces é o executar un simple script, pois, de xeito default, os arquivos non teñen permiso de execución.

Estou seguro, que quen máis quen menos, en algún tutorial en determinado momento puido ler 'chmod XXX directorio/arquivo' e tirar para adiante ou simplemente entender que con iso se lle dan permisos de algo mais, non se profundizou no tema, como podedes ver, é fundamental que existan por seguridade

Como podemos coñecer que permisos teñen os nosos arquivos ou directorios? Ben, a importancia de dominar o terminal! (A través da interfaz tamén se pode mais penso que queda máis claro deste xeito), pois gracias ao ls (list) co modificador -l que os lista con permisos e se xa queremos ir máis alá con -la que así tamén vemos os ocultos, exemplo:
$ ls -l
-rw-rw-r--. 1 hacklego hacklego 48934067 Aug 22  2009 E-Zine 1.pdf
-rw-rw-r--. 1 hacklego hacklego  2277615 Mar 10  2011 Ezine 2.pdf
-rw-rw-r--. 1 hacklego hacklego  2458985 Mar 30  2011 E-Zine 3.pdf
-rw-rw-r--. 1 hacklego hacklego  4737572 Jan 27  2012 Ezine 4.pdf

Que temos aí? Pois lendo de esquerda a dereita, sabemos que son arquivos cuns determinados permisos do usuario hacklego, grupo ao que pertence o usuario, tamaño, data e nome do arquivo. Concretamente en que nos centraremos?
-rw-rw-r--

O primeiro '-' indícanos que é un arquivo, se fose un directorio no seu lugar aparecería un 'd' e se fose unha ligazón un 'l', e logo hai 9 letras ou guións que deberemos separar en grupos de 3, neste caso 'rw-' 'rw-' 'r--'. Que son cada un? O primeiro grupo son os permisos do propietario do arquivo, o segundo do seu grupo e o resto de outros usuarios, esto é, os permisos que teñen e van por orde, leitura-escritura-execución, se ten letra e que ten o permiso e se ten '-' é que non, neste caso teriamos que:
· O owner ten permiso de leitura e escritura.
· Os membros do seu grupo terían permiso de leitura e escritura.
· O resto usuarios terían só permiso de leitura.

Ben, agora imos a aprender a asignar ou quitar permisos do xeito que para min é máis doado (ou que me gusta máis, non sei) que é o octal, tratando cada grupo de permisos como un binario de 3 dixitos (como sabedes un octal pódese representar cun binario de 000 a 111). Neste caso, se ten un permiso sería un 1 (chamémoslle true) e se non o ten 0 (chamémoslle false). No exemplo anterior a estructura sería:
· Para o owner 110, Para o grupo 110 e para o resto 100.
· En octal owner 6, grupo 6 e o resto 4.

Ben, podemos dicer que nese arquivo temos permisos 664, como fariamos para cambialo? Por exemplo, darlle permiso de só leitura a todos:
· Se temos que son leitura-escritura-execucion, terían que ser 100 para owner, grupos e outros, en octal, 444

$ chmod 444 nomedoarquivo

Pois xa teriamos o arquivo co permisos 444 é dicer só leitura para todos. A dinámica é sempre a mesma, no caso máis habitual, sobre todo ao comezar é cando se quere executar algún paquete ou script, os arquivos polo xeral, teñen como máximo cando se crean permisos 666 é dicer, só leitura e escritura, rw-rw-rw-, precisariamos como mínimo para que o usuario o execute rwxrw-rw- (111,110,110 -en octal- 7,6,6) e isto conséguese con:

$ chmod 766


Ben, agardo o atopásedes de interés e se está algo mal explicado non dubidedes en comentar e responderáse tan pronto coma se poida.

Saúde!

2 comentarios:

  1. Tamém podemos modificar os permissos sem números. Por exemplo:

    $ chmod a+w ficheiro
    engade para todos permissos de escritura

    $ chmod g-x ficheiro
    elimina permissos de ejecuçom para o grupo

    $ chmod o+r ficheiro
    engade permissos de letura para outros (nem o propietário nem o grupo)

    u User
    g Group
    o Others
    a All

    + engade
    - eliminar

    r Read
    w Write
    x eXecute

    http://pt.wikipedia.org/wiki/Chmod#Usando_letras

    ResponderEliminar
    Respuestas
    1. Boas!

      Obrigado por comentar, efectivamente ese é outro método tamén moi empregado. Sempre fun máis de aprender/explicar do xeito octal primeiro xa que entendendo este, logo, entender (que será o próximo artigo) os permisos con umask será máis doado e, unha vez entendido aprender este outro xeito de asignar permisos, ao ser máis intuitivo, resulta case trivial de aprender/entender.

      Un saúdo!

      Eliminar