Manual introductorio Universitat Oberta de Catalunya
GNU/Linux Manual introductorio

Gestión de permisos

gmmd

Modificación de permisos

Para modificar los permisos de un fichero o directorio se utiliza el comando chmod. Utilizaremos las letras ‘u’, ‘g’ y ‘o’ para representar a las categorías de propietario, grupo y otros, respectivamente. Para indicar los permisos activados o desactivados, usaremos las letras r, w y x para lectura, escritura y ejecución.  Finalmente,  usaremos tres operadores ‘+’, ‘-‘ y ‘=’, para hacer que los permisos se añadan a los existentes, se quiten de los que ya había o sean los únicos aplicables, respectivamente. Por ejemplo, la siguiente secuencia de comandos crea un nuevo directorio llamado temporal y modifica sus permisos para que el propietario pueda leer, escribir y ejecutar, los otros miembros del grupo puedan leer y los demás no tengan ningún permiso. Los comandos ls permiten ver que se ha realizado la modificación.

$ mkdir temporal
$ ls -ld temporal
drwxrwxr-x    2 user     user          0  2013-01-26 02:05  temporal
$ chmod u=rwx,g=r,o= temporal
$ ls -ld temporal
drwxr-----    2 user     user          0  2013-01-26 02:05  temporal

Podemos ver otro ejemplo de uso con un operador distinto añadiendo permisos de ejecución al grupo y de lectura al resto de usuarios:

$ chmod g+x,u+r temporal
$ ls -ld temporal
drwxr-xr--    2 user     user          0  2013-01-26 02:05  temporal

Al usar el comando ls para listar un directorio en concreto, debemos usar la opción -d para listar sus propiedades en lugar de las correspondientes a los ficheros que contiene.

También podemos definir los permisos usando un número de tres dígitos de manera que el primer dígito se refiere al usuario, el segundo al grupo y el tercero a todos. A su vez cada dígito puede tener un valor del 0 al 8 con los siguientes criterios (atención a la codificación binaria):

– – – = 0 no se tiene ningún permiso
– – x = 1 solo permiso de ejecución
– w – = 2 solo permiso de escritura
– w x = 3 permisos de escritura y ejecución
r – – = 4 solo permiso de lectura
r – x = 5 permisos de lectura y ejecución
r w – = 6 permisos de lectura y escritura
r w x = 7 todos los permisos establecidos, lectura, escritura y ejecución

Así, si tenemos la instrucción

chmod 700 directorio

Le estamos dando todos los permisos al usuario pero ninguno a los demás. Y

chmod 766 directorio

Da permiso total al propietario, y de lectura y escritura (que no de ejecución) al resto de usuarios.

Nuevos propietarios

En algunos casos es necesario asignar a un fichero un propietario distinto al que lo ha creado. Por ejemplo, el administrador del sistema puede añadir ficheros de configuración a los directorios de un usuario y luego hacer que éste último sea el propietario para permitir que los modifique a su gusto.

Para realizar este cambio, disponemos del comando chown. Este comando admite como parámetros un nuevo propietario y, opcionalmente y separado por un punto, un nuevo grupo. Por ejemplo, la siguiente secuencia de comandos copia un fichero al directorio personal del usuario ‘user’ para luego asignarle este mismo usuario como propietario así como también el grupo ‘user’.

$ sudo cp /usr/share/info/dir /home/user
$ cd /home/user
$ ls -l dir
-rw-r–r–    2 root     root          13678  Feb 25 02:05  dir
$ chown user:user dir
$ ls -l dir
-rw-r–r–    2 knoppix     knoppix          0  2003-01-26 02:05  a2ps.html

Siguiendo las indicaciones que hemos visto con anterioridad, crea un nuevo usuario, asígnale una contraseña e intenta probar las posibilidades de acceso a los ficheros y directorios del usuario ‘user’ utilizando diferentes combinaciones de permisos.

Sugerencia: Puedes utilizar desde un terminal la orden su seguida del nombre del usuario para comenzar una sesión con el nuevo usuario sin tener que pasar al modo texto. Por ejemplo, ‘su luis‘ inicia una sesión con el usuario ‘luis’ después de solicitar la contraseña para el mismo.