Sistemas operativos modernos
directorio, pero todos los demás sólo pueden leerlo y explorarlo, no añadir ni quitar archivos de él. Los archivos especiales que corresponden a los dispositivos de E/S tienen los mismos bits de protección que los archivos normales. Este mecanismo puede servir para limitar el acceso a los dispositivos de E/S. Por ejemplo, el archivo especial de la impresora, /dev/lp, podría ser pro piedad de root o de un usuario especial, daemon, y tener como modo rw ----------------para que nadie más tenga acceso directo a la impresora. Después de todo, si todo mundo pudiera impri mir a voluntad, se crearía un caos. Desde luego, hacer que /dev/lp sea propiedad de, digamos, daemon y tenga el modo de pro tección rw ---------------- implica que nadie más podrá usar la impresora. Aunque esto salvaría a muchos árboles inocentes de una muerte prematura, hay ocasiones en que los usuarios tienen una necesidad legítima de imprimir algo. De hecho, existe el problema más general de permi tir un acceso controlado a todos los dispositivos de E/S y otros recursos del sistema. Este problema se resolvió añadiendo un nuevo bit de protección, el bit SETUID, a los nue ve bits de protección ya mencionados. Cuando se ejecuta un programa que tiene encendido el bit SETUID, el UID efectivo de ese proceso se convierte en el UID del dueño del archivo eje cutable, en lugar del UID del usuario que lo invocó. Cuando un proceso intenta abrir un archi vo, es el UID efectivo el que se verifica, no el UID real subyacente. Al hacer que el programa que accede a la impresora sea propiedad de daemon pero tenga encendido el bit SETUID, cualquier usuario podrá ejecutarlo y tener las facultades de daemon (por ejemplo, acceso a /devAp), pe ro sólo para ejecutar ese programa (que podría meter a cola los trabajos de impresión para im primirlos de forma ordenada). Muchos programas UNIX delicados son propiedad de root pero tienen encendido el bit SETUID. Por ejemplo, el programa que permite a los usuarios cambiar su contraseña, passwd, necesita escribir en el archivo de contraseñas. No sería buena idea permitir que todo mundo es criba en dicho archivo. En vez de eso, hay un programa, propiedad de root, que tiene encendi do el bit SETUID. Aunque el programa tiene pleno acceso al archivo de contraseñas, sólo modifica la contraseña del invocador y no permite ningún otro acceso al archivo de contraseñas. Además del bit SETUID hay un bit SETGID que funciona de forma análoga, otorgando de manera temporal al usuario el OID efectivo del programa. Sin embargo, en la práctica casi nun ca se usa este bit. 10.7.2 Llamadas al sistema de seguridad en UNIX Son pocas las llamadas al sistema relacionadas con la seguridad. Las más importantes se pre sentan en la figura 10-39. La llamada al sistema relacionada con la seguridad que más se usa es chmod, que sirve para cambiar el modo de protección. Por ejemplo, s = chmod(’7usr/ast/nuevojuego", 0755); hace que el modo de nuevojuego cambie a rwxr-xr-x para que todo mundo pueda ejecutarlo (ca be señalar que 0755 es una constante octal, lo cual es cómodo porque los bits de protección vienen en grupos de tres bits). Sólo el dueño de un archivo y el superusuario pueden alterar sus bits de protección.
RkJQdWJsaXNoZXIy MjI4NDcx