| España-Español |
|
|
|
![]() |
Administración de sistemas y grupos de trabajo: Guía para los administradores de sistemas HP-UX > Capítulo 8 Administración
de un sistema: manejo de la seguridad del sistemaAdministración del acceso a los archivos y los directorios |
|
En un sistema UNIX tradicional, el acceso a los archivos se controla mediante la concesión de permisos de acceso al propietario (owner) del archivo, al grupo (group) del archivo y a todos los demás (other) usuarios. Estos permisos de acceso se pueden definir con el comando chmod y mostrar con el comando ll (ls -l). Consulte las páginas de manual de chmod(1) y ls(1). Las listas de control de acceso (ACL - Access Control Lists) ofrecen una manera más precisa de controlar el acceso a los archivos que los permisos de acceso a los archivos tradicionales de UNIX. Las listas ACL permiten conceder o restringir el acceso a los archivos en función de usuarios individuales y grupos específicos, además del control tradicional. Ambos sistemas de archivos, HFS y JFS, admiten las listas ACL, pero emplean mecanismos diferentes así como una sintaxis algo distinta.
Los permisos de acceso de las listas ACL del HFS se definen con el comando chacl y se visualizan con el comando lsacl. (Consulte las páginas de manual de chacl(1) y lsacl(1).) El comando chacl es un superconjunto del comando chmod. Todo permiso específico que asigne con el comando chacl se agrega a los permisos de acceso más generales atribuidos con el comando chmod. La sintaxis sencilla del comando chacl es: chacl 'usuario.grupo operador modo' nombre_archivo... donde:
Los apóstrofos (') se utilizan para proteger espacios y los caracteres de shell especiales. Cuando un archivo tiene asignadas listas ACL, el comando ll muestra un signo + después de la cadena del permiso de acceso. Si un usuario.grupo coincide con más de una entrada de lista ACL del HFS, tiene precedencia la entrada más específica. Consulte el Ejemplo 8-2, «Varias coincidencias con las listas ACL del HFS». Ejemplo 8-1 Creación de una lista ACL del HFS Supongamos que utiliza el comando chmod para concederse sólo a sí mismo permiso de acceso de escritura a archivo. (Esto también elimina todas las listas ACL del HFS anteriores.)
El comando lsacl muestra sólo los valores por defecto (no las listas ACL), que se corresponden con los permisos básicos de propietario, grupo y otros. A continuación, utilice el comando chacl para concederle al administrador permiso de acceso de lectura y escritura al archivo.
Fíjese en dos elementos: la presentación de los permisos del comando ll tiene adjunto un signo +, el cual indica que existen listas ACL, y la cadena de permisos de ll no ha cambiado. La entrada adicional de la presentación del comando lsacl especifica que el usuario naomi del grupo users tiene permisos de acceso de lectura y escritura a archivo. Ejemplo 8-2 Varias coincidencias con las listas ACL del HFS Si una combinación usuario.grupo de un usuario coincide con más de una entrada de listas ACL, tiene precedencia la entrada más específica. Con el archivo mi_archivo,
agregue una entrada de sólo escritura para la usuaria naomi.
Ahora la usuaria naomi tiene permiso de acceso de escritura al archivo mi_archivo, por medio de la lista ACL definida para naomi.%, pero no tiene permiso de acceso de lectura a dicho archivo porque naomi.% tiene precedencia sobre las listas ACL definidas para %.users y %.%. El comando lsacl muestra las listas ACL del HFS en orden decreciente de especificidad. Es decir, las coincidencias de permisos de acceso se intentan de izquierda a derecha.
En esta sección se describen las listas de control de acceso del sistema de archivos JFS y cómo utilizarlas.
Una lista ACL del JFS contiene entradas de una línea de longitud que designan a usuarios y grupos específicos e indican qué permiso de acceso se otorga a cada uno de ellos. La presencia de una lista ACL del JFS también modifica el significado de los bits de permiso de group que se muestran con el comando ls -l. Siempre hay un mínimo de cuatro entradas en una lista ACL del JFS: una entrada user, una entrada group, una entrada class y una entrada other. Cuando una lista ACL del JFS sólo contiene estas cuatro entradas, los permisos de acceso que concede son exactamente iguales que los permisos que representan los bits de permiso de sistema UNIX estándar. A pesar de que tener una lista ACL de este tipo (la llamaremos lista ACL del JFS mínima) apenas aporta nada, desde el punto de vista funcional, que no ofrezcan ya los bits de permiso por su cuenta, se empezará por describir una lista del JFS mínima y, a continuación, ésta se irá ampliando con entradas adicionales para ilustrar cómo funciona el mecanismo. La primera entrada de una lista ACL del JFS mínima especifica los permisos que se conceden al propietario del archivo y asigna bits de permiso directamente al propietario. Puesto que se aplica al propietario del archivo, no es preciso indicar el nombre del usuario. Una entrada de una lista ACL que conceda permisos de acceso de lectura y escritura al propietario del archivo presenta este aspecto:
Las entradas segunda y tercera de una lista ACL mínima precisan el permiso de acceso concedido a los miembros del grupo propietario del archivo; los permisos de acceso especificados en estas entradas son exactamente iguales en una lista ACL mínima. Por ejemplo, las entradas de una lista ACL que concedan sólo permiso de acceso de lectura al grupo propietario del archivo presentan este aspecto:
Las entradas de clase (class) y grupo (group) se describen a fondo en la sección posterior «Entradas de clase (class) de una lista ACL del JFS». La cuarta y última entrada de una lista ACL del JFS mínima es una entrada general que especifica los permisos correspondientes a toda persona a la que no se haya concedido ni denegado permiso de acceso en ninguna de las demás entradas. Una entrada other que deniegue el permiso de acceso a todos los usuarios que no sean el propietario del archivo ni el grupo propietario del archivo presenta este aspecto:
La lista ACL mínima descrita más arriba presenta en conjunto este aspecto: Los bits de permiso mostrados por el comando ls -l para este archivo pueden adoptar este aspecto:
En el caso de una lista ACL del JFS mínima, existe una correspondencia clara entre las entradas de la lista ACL y los bits de permiso. En la siguiente sección, se describe cómo influye la presencia de entradas de listas ACL del JFS adicionales en el acceso a los archivos y cómo interpretar los bits de permiso. Si desea conceder o denegar de forma específica el acceso a usuarios o grupos específicos ubicados en el sistema, puede agregar un máximo de 13 entradas más de user y group a las cuatro entradas mínimas mencionadas en la sección anterior. Las entradas user adicionales conceden y deniegan el acceso a números de identificación de usuario específicos del sistema. Por ejemplo, la siguiente entrada de la lista ACL de un archivo concede permisos de acceso de lectura, escritura y ejecución a un usuario que ha iniciado una sesión como boss:
Asimismo, las entradas group adicionales conceden y deniegan el acceso a identificaciones de grupo específicas del sistema. Por ejemplo, una lista ACL con la siguiente entrada deniega el permiso de acceso a un usuario del grupo spies:
En un archivo con una lista ACL mínima, las entradas group propietario y class de una lista ACL son idénticas. Sin embargo, en un archivo con entradas adicionales, las entradas group propietario y class de la lista ACL son distintas. La entrada group propietario concede permisos de acceso a un grupo específico: el group propietario. La entrada class es más general: especifica los permisos de acceso máximos que cualquiera de las entradas user y group adicionales puede conceder. Si no se concede un permiso concreto en la entrada class, ese permiso no puede concederlo ninguna de las entradas de la lista ACL [excepto la primera entrada user (“owner”, propietario) y la entrada other (otros)]. Se puede denegar cualquier permiso de acceso a un usuario o grupo concreto. La entrada class funciona como un límite superior para los permisos de acceso a los archivos. Cuando una lista ACL contiene más de una entrada group o user, a la colección de entradas user y group adicionales se alude como las entradas group class, ya que la entrada class limita el permiso de acceso efectivo concedido por cualquiera de dichas entradas adicionales. Cuando un archivo tiene una lista ACL mínima, las entradas group propietario y class de la lista ACL son idénticas y el comando chmod afecta a ambas. No obstante, cuando un archivo contiene entradas opcionales adicionales de la lista ACL:
Para ilustrar la función de la entrada class de una lista ACL del JFS, a continuación se muestra cómo afectan los comandos chmod y setacl a un archivo con una lista ACL del JFS mínima, así como a un archivo con entradas group class.
Supongamos que tiene un archivo, exfile, con permisos de acceso de sólo lectura (444) y una lista ACL del JFS mínima. ls -l muestra los permisos para exfile del modo siguiente:
El comando getacl registra la siguiente salida para exfile: Ejemplo 8-4 Salida del comando getacl para exfile, una lista ACL del JFS mínima
El uso del comando chmod para agregar permisos de acceso de escritura al archivo exfile cambia ambas entradas de la lista ACL: group propietario y class: Ejemplo 8-5 Salida del comando getacl para exfile con ilustración del efecto del comando chmod
A continuación, se agregan entradas “user” y “group” adicionales, las cuales afectarán a la entrada class de la lista ACL, pero no a la entrada group propietario. El primer comando setacl de la siguiente salida concede permiso de acceso de sólo lectura al usuario guest; las demás entradas de la lista ACL no se ven afectadas. Sin embargo, al conceder permisos de acceso de lectura y ejecución al grupo dev, el límite superior de los permisos (la entrada class) se amplía para incluir el permiso de acceso de ejecución. Ejemplo 8-6 Salida del comando getacl para exfile con ilustración del efecto del comando setacl
A continuación, si se utiliza el comando chmod para rescindir los permisos de acceso de escritura y ejecución del «group», en realidad se reducen los permisos de class a sólo lectura. Los permisos de acceso de group propietario, mientras permanezcan igual, también se reducen, en efecto, al permiso de sólo lectura. Ejemplo 8-7 Salida del comando getacl para exfile con ilustración del efecto del comando chmod en los permisos “class”
Tenga en cuenta que los permisos de acceso other permanecen igual. La entrada class no limita el permiso de acceso que pueden conceder la primera entrada user (“owner”, propietario) o la entrada other. A continuación, el comando ls -l presenta una lista de los permisos de acceso de exfile del modo siguiente. El signo + ubicado al final de la cadena de permisos indica que existe una lista ACL para el archivo. A menudo querrá que todos los archivos creados en un directorio tengan determinadas entradas de listas ACL. Por ejemplo, tal vez desee autorizar a otra persona para escribir en cualquier archivo de un directorio suyo donde los dos colaboren en un proyecto. Puede colocar una entrada de lista ACL que conceda el acceso deseado en todos los archivos del directorio, pero tendrá que volver a agregar esta entrada cada vez que cree un archivo nuevo. En cambio, si utiliza la entradas de listas ACL por defecto, puede indicarle al sistema que lo haga automáticamente cada vez que se cree un archivo. Una entrada de lista ACL por defecto presenta este aspecto:
Sólo se puede ubicar en un directorio, nunca en un archivo corriente. Una entrada de lista ACL por defecto no influye nunca en el tipo de permiso de acceso que se concede a un usuario en relación con el directorio donde esté ubicada. Su papel se limita a hacer que se incluya la entrada especificada en la lista ACL de cualquier archivo creado en el directorio. Si el archivo recién creado es un directorio, las entradas de listas ACL por defecto ejercen dos efectos. En primer lugar, se crean las entradas correspondientes de listas ACL que no sean por defecto, de modo que se concedan y denieguen los permisos de acceso deseados en relación con el directorio, exactamente igual que en el caso de cualquier archivo creado en el directorio. En segundo lugar, las propias entradas por defecto se copian, de modo que el directorio secundario nuevo tenga las mismas listas ACL por defecto que el directorio primario. Por ejemplo, si desea que determinados usuarios puedan leer los archivos creados en el directorio projectdir, puede crear las entradas por defecto apropiadas tal como se muestra más adelante. Ejemplo 8-9 Una lista ACL del JFS con entradas por defecto
Con estas entradas en vigor, los archivos nuevos creados en el directorio projectdir pueden tener una lista ACL igual a la mostrada más adelante para planfile. Las entradas correspondientes a user:boss, user:jjones y group:dev se generan a partir de las entradas por defecto del directorio projectdir. Ejemplo 8-10 Efecto de las entradas por defecto en un archivo nuevo
Si el archivo recién creado es un directorio, se generan las mismas entradas de lista ACL, pero con la diferencia de que, además, las entradas por defecto se colocan en la lista ACL, tal como se muestra más adelante en el ejemplo de docdir. Siempre que se crea un archivo en un sistema de archivos VxFS versión 4, el sistema inicializa una lista ACL del JFS mínima para el archivo; dicha lista contiene una entrada user para los permisos de propietario, una entrada group para los permisos de grupo propietario, una entrada class para los permisos de grupo propietario y una entrada other para los otros permisos de grupo. Se pueden agregar entradas adicionales de dos formas: por mediación del usuario o como consecuencia de las entradas por defecto especificadas en el directorio primario. El comando getacl informa sobre las entradas de la lista ACL. Tal como se ha indicado anteriormente, cada lista ACL consta de al menos cuatro entradas y cada una de ellas se corresponde con los permisos de modo de acceso a archivos: owner, group, class y other. Los bits de permiso de acceso a archivos correspondientes a “user” y “group” se convierten en casos especiales de estas entradas:
En una lista ACL, debe haber una entrada especial user y una entrada especial group. Puede haber cualquier cantidad de entradas user y group adicionales, pero todas ellas deben contener un número de identificación de usuario o una identificación de grupo, según corresponda. Sólo hay una entrada other en una lista ACL y representa los bits de permiso de los permisos de acceso que han de concederse a otros usuarios. A continuación, se presenta un ejemplo de la salida del comando getacl para un archivo que se llama junk, que es propiedad del user1 del group1 y cuyos bits de modo de permiso de acceso son: -rw-rw-r--: Ejemplo 8-12 Ejemplo de salida del comando getacl para una lista ACL del JFS mínima
Si se utiliza el comando setacl para conceder permiso de acceso de lectura y escritura al user2 y al user3, y permiso de acceso de sólo lectura al group2, el comando getacl genera la siguiente salida: Ejemplo 8-13 Ejemplo de salida del comando getacl después de agregar elementos a la lista ACL
Tenga en cuenta que la entrada class ha cambiado para incluir un permiso de acceso de ejecución al conceder permiso de acceso de ejecución a la entrada group2. getacl muestra los permisos efectivos cuando éstos son más restrictivos que los permisos de acceso concedidos de forma específica en la lista ACL. Por ejemplo, si se utiliza el comando chmod para denegar permisos de acceso de ejecución a la clase group, algunas entradas de la lista ACL muestran un permiso de acceso #effective que difiere de la entrada de la lista ACL: Ejemplo 8-14 Ejemplo de salida del comando getacl con ilustración de los permisos efectivos
Puesto que el comando chmod afecta a la entrada de la lista ACL class y no afecta a la entrada group propietario, chmod se puede utilizar para denegar el permiso de acceso a todas las entradas user y group adicionales sin tener que restablecer cada entrada con el comando setacl. Si usted es el user1 (el propietario del archivo junk utilizado en los ejemplos anteriores de esta sección), puede conceder permiso de acceso de lectura para junk a un usuario adicional; para ello, agregue una entrada a la lista ACL donde se designe a dicho usuario y se especifique el acceso de lectura. Utilice el comando setacl. Por ejemplo, el siguiente comando concede al usuario boss permiso de acceso de sólo lectura al archivo:
La opción -m (modificar) indica que se va a agregar o modificar una entrada en la lista ACL. Puede agregar entradas específicas de grupo exactamente igual. Por ejemplo, para conceder permiso de acceso de lectura y escritura a todos los miembros del grupo dev, escriba lo siguiente:
La opción -m se puede utilizar para cambiar una entrada existente así como para agregar una nueva. Si ya existe una entrada para el usuario o el grupo especificado, los permisos de acceso correspondientes a dicha entrada se definen en los valores precisados en la línea de comandos. La opción -d elimina una entrada. Con -d, no se especifica ningún permiso en la entrada de lista ACL. Por ejemplo, el siguiente comando elimina la entrada correspondiente al grupo dev:
Puede agregar, cambiar o eliminar cualquier cantidad de entradas en la misma línea de comandos con las opciones -m y -d. Se puede utilizar una opción y listar las entradas separadas por comas o bien repetir la opción con entradas adicionales. Por ejemplo, las dos líneas de comandos siguientes tienen el mismo efecto:
También puede combinar las opciones -m y -d en la misma línea de comandos. Si se trata de agregar o cambiar varias entradas, es probable que desee emplear un procedimiento distinto. Puede guardar la lista ACL en un archivo, modificarla (agregar, cambiar o eliminar entradas para generar la lista ACL que desee) y, a continuación, aplicar esta nueva lista ACL al archivo. Por ejemplo, puede guardar la lista ACL en un archivo con este comando:
A continuación, puede modificarla para que presente la siguiente salida: Ejemplo 8-15 Una lista ACL del JFS compleja
Esta lista ACL ya se puede aplicar al archivo con la opción -f del comando setacl del modo siguiente:
En este ejemplo, se han efectuado varios cambios. Mientras que antes las entradas de la lista ACL sólo concedían permiso de acceso a los usuarios, ahora también se utilizan para denegarlo. Fíjese de modo específico en las entradas correspondientes al usuario user4 y al grupo group4. En general, el comando setacl vuelve a calcular la entrada class para garantizar que los permisos de acceso concedidos en las entradas de la lista ACL adicionales se conceden de verdad. Si se especifica la opción -n, la entrada “class” no se vuelve a calcular, empleándose el valor existente. Esto entraña que algunos permisos de acceso concedidos por las entradas de la lista ACL no se concedan en la práctica. Por ejemplo, retomemos el ejemplo anterior del archivo exfile cuando era una lista ACL mínima con permisos globales de acceso de lectura y escritura:
Supongamos que utiliza el comando setacl -n para agregar permisos de acceso de lectura y ejecución al grupo dev del modo siguiente: Ejemplo 8-16 Efecto del comando setacl -n con ilustración de los permisos efectivos
La entrada de la lista ACL correspondiente al grupo dev se agrega tal como se ha precisado, pero el permiso de acceso de ejecución no se concede en realidad. La entrada class deniega el permiso de ejecución y la entrada class no se ha vuelto a calcular porque se especificó la opción -n. Si no se hubiera utilizado la opción -n, la entrada class se habría restablecido al valor class:rwx y el comentario effective no se mostraría. Las listas ACL del JFS cumplen la norma ACL POSIX. Las listas ACL del JFS se diferencian de las listas ACL del HFS tanto en cuanto al formato (interno y externo) como a las funciones. Las diferencias funcionales entre las listas ACL del JFS y del HFS son:
En la siguiente tabla se relacionan los comandos y las funciones equivalentes de las listas ACL de los sistemas de archivos JFS y HFS. Tabla 8-1 Equivalencias de las listas ACL de los sistemas de archivos HFS y JFS
Las listas ACL ubicadas en archivos remotos no se pueden ver con el NFS (Network File System - Sistema de archivos de red), aunque siguen ejerciendo el control efectivo sobre los permisos de acceso. En estas circunstancias, las entradas de las páginas de manual individuales especifican el comportamiento de las diversas llamadas del sistema, las llamadas de las bibliotecas y los comandos. Sea precavido cuando transfiera un archivo con entradas opcionales a través de una red, o cuando manipule un archivo remoto, porque las entradas opcionales se eliminan sin previo aviso. La configuración por defecto de umask en un sistema estándar es en formato octal 000. Esto debe cambiarse por u=rwx,g=rx,o=rx (o 022 en formato octal). Esto significa que todos los directorios creados tendrán un modo de permiso por defecto de 755, concediéndose acceso de drwxr-xr-x. Todos los archivos creados tendrán un modo de permiso por defecto de 644, otorgándose acceso de -rw-r--r--. Consulte la página de manual de umask(1). Si un directorio tiene permiso de escritura en una categoría (ya sea mediante permisos estándar o listas ACL), cualquier miembro de dicha categoría puede eliminar los archivos del directorio, al margen de los permisos definidos para los archivos. Los directorios se pueden proteger contra eliminaciones no deseadas de dos formas:
Deben seguirse las pautas relacionadas a continuación para proteger las cuentas de usuario:
Los archivos especiales de dispositivo, que permiten que los programas funcionen independientemente de los dispositivos, controlan el acceso a todos los dispositivos del sistema. Estos archivos se facilitan con configuraciones de permisos de acceso que posibilitan un uso correcto y la máxima seguridad. Si instala cualquier otro archivo especial, consulte la página de manual de insf(1M) para obtener las configuraciones correctas de los permisos de acceso. Puesto que los archivos especiales de dispositivo pueden ser tan vulnerables a la adulteración como cualquier otro archivo, adopte las siguientes medidas de precaución:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||