Red Hat Linux 9: Manual del principiante de Red Hat Linux | ||
---|---|---|
Anterior | Capítulo 13. Información general sobre el intérprete de comandos de la shell | Siguiente |
Al principio de este capítulo ha recibido el siguiente mensaje, cuando intentó cambiarse al directorio login de root:
cd /root bash: /root: Permission denied |
Esto es un ejemplo de las características de seguridad de Linux. Linux, como UNIX, es un sistema multiusuario y los permisos para tener acceso a los archivos presentan una solución para proteger la integridad del sistema de cualquier daño.
Una manera de tener acceso cuando se le deniega el permiso es ejecutando su a root, como vió anteriormente. Esto es porque quien conoce la contraseña de root tiene acceso completo al sistema.
Pero cambiándose al superusuario no siempre es lo más conveniente o recomendado, pues es posible cometer errores y alterar archivos de configuración importantes como superusuario.
Todos los archivos y los directorios pertenecen a la persona que los ha creado. Hemos creado el archivo sneakers.txt (vea la Sección 13.9.1) en su directorio login, por ello sneakers.txt le pertenece.
Esto quiere decir que podemos especificar quién puede leer o escribir un archivo. Además en el caso de que un archivo sea ejecutable es posible especificar quién tiene el derecho a ejecutarlo.
Lectura, escritura, y ejecución son las tres configuraciones principales de permisos. Como cada usuario del sistema está incluído en un grupo, podemos también especificar qué grupos pueden leer, escribir o ejecutar un archivo.
Tome como ejemplo el archivo sneakers.txt con el comando ls utilizando la opción -l (consulte la Figura 13-11).
Hay mucha información aquí. Con esta opción se visualizan muchos de los detalles. Podemos ver quién puede leer (r) y escribir (w) el archivo, el creador del archivo (sam) y a qué grupo de usuarios pertenece (sam). Recuerde que por defecto, el nombre de su grupo es el mismo que su nombre de login.
Entre el nombre del grupo y el nombre del archivo hay informaciones relativas al tamaño del archivo, a la fecha y a la hora de creación.
La primera columna muestra los permisos actuales; tiene diez espacios. El primer espacio representa el tipo de archivo. Los nueve restantes son, de hecho, tres grupos de permisos de tres categorías de usuarios diferentes.
Por ejemplo:
-rw-rw-r-- |
Estos tres grupos se refieren respectivamente al propietario del archivo, al grupo al que pertenece el archivo y "otros", o sea todos los demás usuarios del sistema.
- (rw-) (rw-) (r--) 1 sam sam | | | | type owner group others |
El primer elemento, que especifica el tipo de archivo, puede tener uno de los siguientes valores:
d — un directorio
-(dash) — un archivo normal (más que un directorio o enlace)
l — un enlace simbólico a otro programa o archivo en algún otro lugar del sistema.
Después del primer carácter, en cada uno de los tres grupos que siguen es posible especificar uno entre los siguientes valores:
r — indica que el archivo se puede leer.
w — indica que el archivo se puede escribir
x — indica que el archivo se puede ejecutar (si es un programa)
Cuando aparece un guión en propietario, grupo u otros, quiere decir que no se ha concedido un permiso en particular. Mire otra vez la primera columna del archivo sneakers.txt e identifique sus permisos.
ls -l sneakers.txt -rw-rw-r-- 1 sam sam 150 Mar 19 08:08 sneakers.txt |
El propietario del archivo, (en este caso, sam) tiene los permisos para escribir y leer el archivo. El grupo, sam, tiene los permisos para escribir y leer sneakers.txt. El archivo no es un programa por lo que ni el propietario (owner) ni el group tienen permiso para ejecutarlo.
Puede utilizar el comando chmod para cambiar los permisos en sneakers.txt.
En el archivo original están presentes los siguientes permisos:
-rw-rw-r-- 1 sam sam 150 Mar 19 08:08 sneakers.txt |
Si es el propietario del archivo o está registrado en la cuenta de root, puede cambiar cualquier permiso para el propietario, grupo u otros.
Por el momento, el propietario y el grupo pueden leer y escribir el archivo. Cualquiera fuera del grupo, sólo puede leer el archivo (r--).
Atención | |
---|---|
Recuerde que los permisos de los archivos son muy importantes para la seguridad. Cada vez que permite a todo el mundo leer, escribir o ejecutar un archivo, está arriesgando la integridad del sistema. Como regla general, le aconsejamos que sólo otorgue permisos de lectura y escritura a aquellos que realmente los necesiten. |
En el siguiente ejemplo, suponga que quiere conceder a todo el mundo el permiso de escritura en un archivo, de forma que puedan leerlo, escribir en él y grabarlo. Esto quiere decir que tendrá que cambiar la sección "otros" en los permisos de archivos.
De un vistazo al archivo primero. En el intérprete de comandos de la shell, escriba:
ls -l sneakers.txt |
El comando previo visualiza la información de este archivo:
-rw-rw-r-- 1 sam sam 150 Mar 19 08:08 sneakers.txt |
Teclee lo siguiente:
chmod o+w sneakers.txt |
El comando o+w le dice al sistema que desea dar a "otros" el permiso para escribir en el archivo sneakers.txt. Para controlar los resultados, puede nuevamente listar los detalles relativos al archivo:
-rw-rw-rw- 1 sam sam 150 Mar 19 08:08 sneakers.txt |
Ahora, cualquiera puede leer o escribir el archivo
Para quitar los permisos de lectura y escritura del archivo sneakers.txt use el comando chmod.
chmod go-rw sneakers.txt |
Al escribir go-rw, le está diciendo al sistema que quite los permisos de lectura y escritura para el grupo y para otros del archivo sneakers.txt.
El resultado sería similar a:
-rw------- 1 sam sam 150 Mar 19 08:08 sneakers.txt |
Piense que estas configuraciones usando chmod, es como un tipo de taquigrafía para cambiar los privilegios de acceso, porque todo lo que debe hacer realmente es recordar unos pocos símbolos y letras para usar con chmod.
A continuación tiene una lista de la taquigrafía utilizada y sus correspondencias:
u — es el usuario propietario del archivo
g — es el grupo al que el usuario pertenece
o — otros, el resto del mundo (ni el propietario, ni su grupo)
a — todo el mundo (u, g, y o)
r — acceso a lectura
w — acceso a escritura
x — acceso de ejecución
+ — añadir los permisos
- — elimina los permisos
= — hace que sea el único permiso
¿Quiere comprobar sus habilidades de permisos? Suprima todos los permisos de sneakers.txt — para todo el mundo.
chmod a-rwx sneakers.txt |
Ahora vea si puede leer el archivo con el comando cat sneakers.txt, que debería devolver lo siguiente:
cat: sneakers.txt: Permission denied |
¡Funciona! al remover todos los permisos, incluyendo los suyos, ha bloqueado el archivo. No obstante, como el archivo le pertenece, siempre puede cambiar sus permisos con el comando siguiente:
chmod u+rw sneakers.txt |
Use el comando cat sneakers.txt para verificar que usted como propietario del archivo, lo puede leer otra vez.
He aquí algunos ejemplos comunes de configuración que se pueden realizar con chmod:
g+w — añade el acceso de escritura para el grupo
o-rwx — eliminar los permisos para los demás
u+x — permite al propietario del archivo su ejecución
a+rw — permite a cualquiera leer y escribir en el archivo
ug+r — permitir al propietario o al grupo leer el archivo
g=rx — concede al grupo la lectura y la ejecución (no la escritura)
Añadiendo la opción -R puede cambiar los permisos para el árbol entero del directorio donde se encuentra.
De todas formas puesto que no podemos "ejecutar" un directorio como si fuera una aplicación; cuando añada o elimine los permisos de ejecución para un directorio, estará concediendo (o denegando) los permisos de búsqueda en el interior de este directorio
Si no le permite a otros tener permiso de ejecución sobre tigger, no importa quién tenga permiso de lectura o escritura. Nadie podrá accesar el directorio a menos que conozca exactamente el nombre del archivo.
Por ejemplo, escriba:
chmod a-x tigger |
para quitarle a todos los permisos de ejecución.
Esto es lo que ocurre cuando intenta de ejecutar cd en tigger:
bash: tigger: Permission denied |
Luego, restaure su propio acceso y el del grupo:
chmod ug+x tigger |
Ahora, si verifica su trabajo usando ls -l verá que solamente otros tendrán el acceso denegado para el directorio tigger.
¿Se acuerda de cuando hablábamos del modo abreviado (taquigráfico) para utilizar chmod? Aquí tiene otra manera de cambiar los permisos; que quizás en principio podrá parecerle algo más compleja.
Vuelva a los permisos originales de sneakers.txt:
-rw-rw-r-- 1 sam sam 150 Mar 19 08:08 sneakers.txt |
Cada configuración del permiso puede estar representada por un valor numérico:
r = 4
w = 2
x = 1
- = 0
Si se suman estos valores, el resultado se utiliza para especificar los permisos. Por ejemplo, si quiere leer y escribir permisos, tendrá un valor de 6; 4 (leer)+ 2 (escribir)= 6.
Para el archivo sneakers.txt, aquí tiene un ejemplo de los permisos codificados en números:
- (rw-) (rw-) (r--) | | | 4+2+0 4+2+0 4+0+0 |
El total para los usuarios es seis, el total para los grupos es seis y el total para para los demás es cuatro. El código de permisos será 664.
Si quiere cambiar el archivo sneakers.txt para que aquellos en su grupo no tengan acceso a escritura, pero si lo puedan leer, quite el acceso eliminando dos (2) de ese grupo de números.
Los valores numéricos serán seis, cuatro y cuatro (644).
Para llevar a cabo los nuevos valores, escriba:
chmod 644 sneakers.txt |
Para controlar los cambios, teclee:
ls -l sneakers.txt |
El resultado debería ser:
-rw-r--r-- 1 sam sam 150 Mar 19 08:08 sneakers.txt |
Ningún usuario, a parte del propietario, puede escribir el archivo (ni el grupo ni otros) sneakers.txt. Para reestablecer los derechos de escritura del grupo en el archivo, puede añadir el valor de w (2) al segundo grupo de permisos.
chmod 664 sneakers.txt |
Aviso | |
---|---|
Los permisos a 666 (cualquiera puede leer o escribir) o 777 (cualquiera puede leer, escribir y ejecutar) dan la posibilidad a todos de leer o escribir un archivo o un directorio. Estos permisos pueden dañar los archivos, por ello utilizarlos no es buena elección. |
Aquí tiene una lista de algunos valores numéricos y de los significados relativos:
-rw------- (600) — Sólo el propietario tiene el derecho de leer y escribir.
-rw-r--r-- (644) — Sólo el propietario tiene los permisos de leer y escribir; el grupo y los demás sólo pueden leer.
-rwx------ (700) — Sólo el propietario tiene los derechos de leer, escribir y ejecutar el archivo.
-rwxr-xr-x (755) — El propietario tiene los derechos de leer, escribir y ejecutar; el grupo y los demás sólo pueden leer y ejecutar.
-rwx--x--x (711) — El propietario tiene los derechos de lectura, escritura y ejecución; el grupo y los demás sólo pueden ejecutar.
-rw-rw-rw- (666) — Todo el mundo puede leer y escribir en el archivo. ¡No es una buena elección!
-rwxrwxrwx (777) — Todo el mundo puede leer, escribir y ejecutar. ¡Otra mala elección!
Aquí tiene un conjunto de valores para los directorios:
drwx------ (700) — Sólo el propietario puede leer y escribir en este directorio.
drwxr-xr-x (755) — Cualquiera puede leer el directorio, pero su contenido lo puede cambiar sólo el usuario