sábado, noviembre 18, 2006

Permisos de Linux

Esto siempre se me olvida, asi q decidi ponerlo aki ;)

Para ver los permisos de un fichero o directorio, lo hacemos ejecutando ls -l:

-rw-rw-rw- 1 root root 3065 Dec 15 00:50 REPORTING-BUGS
-rw-r--r-- 1 root adm 538030 Dec 24 01:52 System.map
drwxrwxrwx 26 root root 4096 Dec 15 00:50 arch

Los permisos se encuentran en el primer bloque de 10 caracteres. En su forma básica, un fichero o un directorio tiene asignados unos permisos que se dividen en un primer carácter que indica el tipo de fichero, y luego nueve caracteres divididos en tres bloques de tres caracteres cada uno: propietario, grupo y resto de usuarios. Cada bloque tiene sus propios atributos de lectura, escritura y ejecución. En el ejemplo, vemos que REPORTING-BUGS tiene la primera columna a "-", por lo que es un fichero. Después, tiene los tres bloques iguales ("rw-"), indicando la "r" que tiene activado el permiso de lectura, "w" que tiene activado el permiso de escritura y "x" permiso de ejecución. El propietario es el tercer campo ("root"), y el grupo el cuarto campo ("root" también). En el segundo caso, el fichero System.map tiene permiso de lectura y escritura, pero no de ejecución, para el propietario ("root"), permiso de lectura para el grupo ("adm"), y sólo lectura para el resto de usuarios. En los ficheros, el permiso de ejecución es útil sólo para scripts o binarios.

En la entrada arch, la primera columna es una "d", lo que indica que es un directorio. Tiene todos los permisos puestos, por lo que todo el mundo tiene permiso de lectura, escritura y ejecución. En los directorios, el significado del atributo de ejecución es distinto, ya que lo que permite es exploración del directorio.

Otros atributos posibles para el tipo de entrada son:

"l": es un enlace simbólico

"t": "sticky bit". Es sólo para directorios, y evita que el mismo se pueda borrar. El ejemplo más visible es el directorio /tmp, en donde todos pueden escribir, pero no pueden borrarlo.

"c": dispositivo de tipo carácter. Sólo lo verás en /dev.

"b": dispositivo de tipo bloque. Sólo lo verás en /dev.

Existen otros dos tipos de permisos especiales, que son los bit suid y bit gid. El bit suid, si se activa, permite que un script se ejecute por cualquiera que tenga permiso, la ejecución se realizará como si fuera el propietario, con los permisos que éste tenga. El bit gid es lo mismo que el bit suid, pero aplicado al grupo en vez del propietario. Para saber si está activado uno de éstos, en la columna donde debería aparecer la "x", aparece una "s".

Para asignar permisos, tenemos los comandos chmod, chgrp y chown.

El comando chmod asigna los permisos a un fichero o directorio. La sintaxis es chmod [opciones] modo fichero. Lo más complejo es el modo, que se puede indicar de dos maneras: en modo octal, o en modo de símbolos. El modo octal se compone del resultado de sumar los valores binarios de los dígitos, asignando los valores 1, 2 y 4 a los atributos de ejecución, escritura y lectura, respectivamente, cuando está activado. Por ello, rwx es 7, r-x es 5 ó rw- es 6. Luego hay que juntar los tres grupos, formando un conjunto de tres cifras (777 es igual a rwxrwxrwx). De esta forma, si hacemos chmod 700 a fichero, le estamos otorgando permisos de lectura, escritura y ejecución para el propietario, y ninguno para el resto.

El modo octal está bien, pero es demasiado "absoluto", y para ello existe una alternativa, que es el modo de símbolos. En este modo, se asignan las letras "u", "g" y "o" al propietario, grupo y otros, respectivamente, y permite especificar permisos a nivel individual de cada uno de ellos, así como sólo añadir o quitar ciertos permisos. Existe la letra "a", que equivale a los tres juntos, es decir, "ugo". La sintiaxis es combinar el propietario y/o grupo y/o otros con la opción u opciones que se desean modificar (o asignar también de manera directa). Por ejemplo, chmod "u+x,g+w,r-x", añade permiso de ejecución al propietario, añade el permiso de escritura al grupo, y elimina el permiso de ejecución al resto. Para asignar permisos de ejecución a todos, con "a=rx" se asignan permisos de lectura y ejecución para todos. Como opción especial, está -R, que asigna los permisos de manera recursiva, ya que por defecto se asignan sólo al directorio o ficheros especificados, pero sin afectar los directorios que estén por debajo.

Por último, chmod sólo puede ejecutarlo root o el propietario.

El comando chgrp cambia el grupo al cual pertenece el fichero o directorio, y sólo puede hacerlo root o el propietario. Se ejecuta como chgrp grupo fichero. También tiene la opción -R.

Finalmente, el comando chown sirve para cambiar el propietario y, opcionalmente, el grupo. Sólo puede ejecutarlo root. Se puede ejecutar usando chown user:grupo fichero o chown usuario fichero. También tiene la opción -R.

Tomado de escomposlinux

No hay comentarios.: