ADMINISTRACIÓN DE SISTEMAS OPERATIVOS EJERCICIO SOBRE USUARIOS Y GRUPOS DE USUARIOS Desarrollar una utilidad escrita en Korn Shell, llamada Mis_Cuentas, que permita administrar cuentas y grupos de usuario. La herramienta tendrá las siguientes opciones básicas: crear grupos de usuario, crear cuenta de usuario, obtener información de grupos de usuario, obtener información de una cuenta de usuario, eliminar grupos de usuarios y eliminar cuentas de usuario. Cualquier invocación de la utilidad deberá contener una de estas opciones que además son incompatibles entre si. 1. Operación de creación de grupo de usuario. Con esta opción se procederá a crear un conjunto de grupos de usuario de acuerdo con las siguientes especificaciones. ¾ Valores del perfil del grupo. Se trata de un conjunto de valores comunes que tendrá el perfil de todos los usuarios pertenecientes al grupo: Identificador de grupo. Cadena de hasta 10 caracteres alfanuméricos que identifica al grupo. Identificador GID del grupo. Rango de identificadores UID aplicables a los usuarios. Dos valores, valor mínimo y valor máximo. Directorio inicial de trabajo Intérprete de órdenes inicial. Tiempo de caducidad de la cuenta. Tiempo de caducidad de la palabra de paso. ¾ Forma de invocación: #./Mi_Cuentas -CG ruta Siendo ruta la ruta del archivo que contiene en cada línea los valores anteriormente descritos para cada grupo nuevo a crear. En cada línea estarán los campos anteriormente descritos utilizando como campo separador el carácter “:”. ¾ Ejecución de la orden. La orden deberá validar los distintos campos de la siguiente manera: Identificador de grupo. El tamaño máximo serán 10 caracteres alfanuméricos y no debe existir otro grupo con el mismo identificador. Identificador GID del grupo. El valor no puede estar dentro del rango reservado para los grupos especiales del sistema y debe ser único. Rango de identificadores UID aplicables a los usuarios. Dos valores, valor mínimo y valor máximo. Este rango no debe solaparse con el rango de valores especiales reservados a usuarios del sistema sí como de cualquier otro rango de grupos usuarios existentes. Directorio inicial de trabajo. Se debe validar que no existe y si es así proceder a crearlo. Intérprete de órdenes inicial. Debe ser una ruta a un archivo ejecutables válido. Tiempo de caducidad de la cuenta. Tiempo mínimo 2 semanas y tiempo máximo 6 meses. Tiempo de caducidad de la palabra de paso. Tiempo mínimo 2 semanas y máximo 1 mes. ¾ Resultado de la orden. Para cada grupo correctamente especificado se creará el grupo de usuarios correspondiente en el sistema, además se añadirá un nuevo registro en el archivo /root/Mi_Cuentas/Grupos. En el caso de que se produzca algún error se deberá informar por pantalla el grupo afectado y la causa del error. 2. Operación de creación de cuentas de usuario. Con esta opción se procederá a crear una cuenta o un conjunto de cuentas siguiendo las siguientes especificaciones. ¾ Valores del perfil de las cuentas que debe manejar la utilidad. Se deberán pasar los siguientes parámetros del perfil: Nombre de la cuenta de usuario. Identificador de grupo secundario. Secundario puesto que todos los usuarios pertenecerán al grupo primario “estudiantes”. El resto de valores del perfil de las cuentas las obtendrá del registro que tenga asociado el grupo especificado en el archivo /root/Mi_Cuentas/Grupos. ¾ Forma de invocación. Admite dos formatos de orden: #./Mis_Cuentas -CU usuario grupo_sec o bien, #./Mis_Cuentas _CU ruta Siendo ruta la ruta del archivo que contiene en cada línea los valores anteriormente descritos para cada nuevo usuario a crear. En cada línea estarán los valores anteriormente descritos utilizando como campo separador el carácter “:”. ¾ Ejecución de la orden. La orden deberá validar que el grupo secundario especificado existe y si es así, entonces validar que el usuario no existe. En el caso de que no supere alguna de las verificaciones deberá escribir por pantalla el nombre de la cuenta afectada por el error, así como las causas que lo produjeron. Es posible que un mismo usuario aparezca en varios grupos, si es así entonces la utilidad deberá proceder para que: El usuario deberá aparecer en cada uno de los grupos a los que pertenece. El identificador UID. Será el asignado cuando se le creó por vez primera una cuenta. Directorio inicial de trabajo. Se respetará el que ya tenga especificado. Intérprete de órdenes inicial. Se respetará el que ya tenga especificado. Tiempo de caducidad de la cuenta. Si la nueva cuenta posee uno mayor, entonces se sustituye, en caso contrario se mantiene el establecido. Tiempo de caducidad de la palabra de paso. Si la nueva cuenta posee uno mayor, entonces se sustituye, en caso contrario se mantiene el establecido. ¾ Resultado de la orden. Para cada cuenta correctamente especificada se creará la cuenta de usuario correspondiente en el sistema, además se añadirá un nuevo registro en el archivo /root/Mi_Cuentas/Usuarios con los valores de los distintos campos del perfil. En el caso de que se produzca algún error se deberá informar por pantalla el grupo afectado y la causa del error. 3. Operación de Información sobre grupo de usuario. Con esta opción se procederá obtener información sobre un determinado grupo de usuario. La información a mostrar es que el grupo tenga registrada en el archivo “/root/Mis_Cuentas/Grupos”. ¾ Forma de invocación. #./Mi_Cuentas -IG nombre_grupo Siendo nombre_grupo el nombre del grupo del que se quiere obtener información. ¾ Ejecución de la orden. La orden deberá validar que el grupo especificado existe, si es así, entonces mostrará la información, en caso contrario informará del error. 4. Operación de Información sobre cuenta de usuario. Con esta opción se procederá obtener información sobre una determinada cuenta de usuario. La información a mostrar es que la tenga registrada la cuenta en los distintos registros del archivo “/root/Mis_Cuentas/Usuarios”. ¾ Forma de invocación #./Mi_Cuentas -IU nombre_grupo Siendo nombre_grupo el nombre del grupo del que se quiere obtener información. ¾ Ejecución de la orden. La orden deberá validar que la cuenta especificada existe, si es así, entonces mostrará la información, en caso contrario informará del error. 5. Operación de eliminación de un grupo de usuario. Con esta opción se procederá a eliminar un un determinado grupo de usuario que previamente haya sido creado por la utilidad, o sea, un grupo registrado en el archivo “/root/Mis_Cuentas/Grupos”. ¾ Forma de invocación: #./Mi_Cuentas -DGf nombre_grupo tipo_borrado Siendo nombre_grupo el nombre del grupo que se quiere borrar información y “f” una opción que admite dos valores: “d” para sólo desactivar las cuentas pertenecientes a dicho grupo y “e” para eliminar todos los archivos pertenecientes a dichas cuentas. Por tanto, las formas posibles serán: #./Mis_Cuentas -DGd nombre_grupo o #./Mis_Cuentas -DGe nombre_grupo ¾ Ejecución de la orden. La orden deberá validar que el grupo especificado existe, si es así, entonces procederá a la eliminación según la opción de eliminación especificada (d o e), en caso contrario informará del error. Si se especifica la opción “d”, entonces el registro correspondiente en el archivo “/root/Mis_Cuentas/Grupos” no se elimina, simplemente se escribe en el campo GID el valor “-1”. Si se especifica la opción”e”, entonces se deberá eliminar el registro correspondiente. Cuando una cuenta de usuario pertenece a más de un grupos activo, entonces se deberá proceder de la siguiente forma si se ha especificado la opción “d”, entonces la cuenta de usuario no es afectada, conservándose los distintos valores del perfil de usuario. En cambio, si se especifica la opción “e”, entonces se procederá a su eliminación sólo si la cuenta ya no pertenece a algún otro grupo activo. En cuanto a los archivos del sistema relacionados con el manejo de grupo de usuario, sólo se actualizarán cuando se especifique la opción “e”. 6. Operación de eliminación de una cuenta de usuario. Con esta opción se procederá a eliminar desactivar una determinada cuenta de usuario que previamente haya sido creada por la utilidad, o sea, una cuenta registrada en el archivo “/root/Mis_Cuentas/Usuario”. ¾ Forma de invocación: #./Mi_Cuentas -DUf nombre_usuario Siendo “nombre”_usuario el nombre de la cuenta que se quiere eliminar o descativar y “f” una opción que admite dos valores: “d” para sólo desactivar la cuenta y “e” para eliminar todos los archivos pertenecientes a dichas cuenta. Por tanto, las formas posibles serán: #./Mis_Cuentas -DGd nombre_usuario o #./Mis_Cuentas -DGe nombre_usuario ¾ Ejecución de la orden. La orden deberá validar que el usuario especificado existe, si es así, entonces procederá a la eliminación según la opción de eliminación especificada (d o e), en caso contrario informará del error. Si se especifica la opción “d”, entonces el registro correspondiente en el archivo “/root/Mis_Cuentas/Usuarios” no se elimina, simplemente se escribe en el campo UID el valor “-1”. Si se especifica la opción ”e”, entonces se deberá eliminar el registro correspondiente. Cuando una cuenta de usuario pertenece a más de un grupos activo, entonces se deberá proceder de la siguiente forma si se ha especificado la opción “d”, entonces la cuenta de usuario no es afectada, conservándose los distintos valores del perfil de usuario. En cambio, si se especifica la opción “e”, entonces se procederá a su eliminación sólo si la cuenta ya no pertenece a algún otro grupo activo. En cuanto a los archivos del sistema relacionados con el manejo de grupo de usuario, sólo se actualizarán cuando se especifique la opción “e”.