Ir al contenido España-Español
HP.com España principal Productos y Servicios Soporte y Drivers Soluciones Cómo Comprar
» Contactar con HP
Más opciones
HP.com España principal
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 sistema

Administración del acceso a los archivos y los directorios

» 

Documentación técnica

Libro completo en PDF
» Comentarios
Aquí empieza el contenido

 » Tabla de contenido

 » Índice

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.

Utilización de las listas de control de acceso (ACL) del sistema de archivos HFS

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).)

IMPORTANTE: Debe utilizar el comando chmod con la opción -A cuando trabaje con archivos que tengan asignados permisos de acceso de las listas ACL del HFS. Sin la opción -A, el comando chmod elimina del archivo los permisos de acceso de las listas ACL. La sintaxis es:

chmod   -A   modo   archivo... 

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 modonombre_archivo...

donde:

usuario 

es el nombre de inicio de sesión del usuario; un signo de porcentaje (%) significa todos los usuarios.

grupo 

es el grupo del usuario; un signo de porcentaje (%) significa todos los grupos.

operador 

es una de las siguientes opciones:

+ 

Para agregar a los permisos de acceso actuales.

- 

Para eliminar de los permisos de acceso actuales.

= 

Para cambiar los permisos de acceso por los acordados.

modo 

es ninguno o varios permisos: lectura (r), escritura (w) y ejecución o búsqueda (x).

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.)

chmod 644 archivo
ll archivo
-rw-r--r--   1 allan      users         0 Sep 21 16:56 archivo
lsacl archivo
(allan.%,rw-)(%.users,r--)(%.%,r--) archivo

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.

chacl 'naomi.users=rw' archivo
ll archivo
-rw-r--r--+  1 allan      users         0 Sep 21 16:56 archivo
lsacl archivo
(naomi.users,rw-)(allan.%,rw-)(%.users,r--)(%.%,r--) 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,

chmod 644 mi_archivo

agregue una entrada de sólo escritura para la usuaria naomi.

chacl naomi.%=w mi_archivo
lsacl mi_archivo
(naomi.%,-w-)(allan.%,rw-)(%.users,r--)(%.%,r--) mi_archivo

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.

Listas ACL del HFS y comandos y llamadas de HP-UX

  • Los siguientes comandos y llamadas del sistema funcionan con las listas ACL en los sistemas de archivos HFS:

    • chacl: cambia las listas ACL del HFS de los archivos. Consulte la página de manual de chacl(1).

    • getaccess: presenta una lista de los derechos de acceso del usuario a los archivos. Consulte la página de manual de getaccess(1).

    • lsacl: presenta una relación de las listas ACL del HFS de los archivos. Consulte la página de manual de lsacl(1).

    • getaccess(): obtiene los derechos de acceso efectivos de un usuario a un archivo. Consulte la página de manual de getaccess(2).

    • getacl(), fgetacl(): obtienen información sobre las listas ACL del HFS. Consulte las páginas de manual de getacl(2) y fgetacl(2).

    • setacl(), fsetacl(): definen información sobre las listas ACL del HFS. Consulte las páginas de manual de setacl(2) y fsetacl(2).

    • acltostr(): convierte la estructura de listas ACL del HFS en un formato de cadena. Consulte la página de manual de acltostr(3C).

    • chownacl(): cambia la combinación propietario/grupo representada en la lista ACL de un archivo del HFS. Consulte la página de manual de chownacl(3C).

    • cpacl(), fcpacl(): copian las listas ACL del HFS y los bits de modo de un archivo en otro. Consulte las páginas de manual de cpacl(3C) y fcpacl(3C).

    • setaclentry(), fsetaclentry(): agregan/modifican/eliminan una entrada de lista ACL de un archivo del HFS. Consulte las páginas de manual de setaclentry(3C) y fsetaclentry(3C).

    • strtoacl(): analiza y convierte la estructura de listas ACL del HFS en un formato de cadena. Consulte la página de manual de strtoacl(3C).

    • strtoaclpatt(): analiza y convierte las cadenas modelo de listas ACL del HFS en matrices. Consulte la página de manual de strtoaclpatt(3C).

  • Numerosos comandos de HP-UX, llamadas del sistema y bibliotecas de subrutinas influyen en las entradas de listas ACL, a veces de forma inesperada.

    • chmod: elimina las listas ACL del HFS por defecto. Utilice la opción -A para conservar las listas ACL del HFS. Consulte la página de manual de chmod(1).

    • chmod(): elimina las entradas de listas ACL del HFS. Utilice la función getacl() y la función setacl() para guardar y restaurar las entradas de listas ACL del HFS. Consulte las páginas de manual de chmod(2), getacl(2) y setacl(2).

    • cpset: no define las entradas opcionales de listas ACL de un archivo. Consulte la página de manual de cpset(1M).

    • find: puede identificar los archivos cuyas entradas de listas ACL coincidan con modelos de ACL específicos o los incluyan en los sistemas de archivos HFS o JFS. Consulte la página de manual de find(1).

    • ls -l: la forma larga indica la existencia de listas ACL del HFS o del JFS mostrando un signo + después de los bits de permiso de acceso del archivo. Consulte la página de manual de ls(1).

    • mailx: no admite entradas de listas ACL opcionales en los archivos /var/mail/*. Consulte la página de manual de mailx(1).

    • compact, compress, cp, ed, pack y unpack: copian las entradas de listas ACL en los archivos nuevos que crean. Consulte las páginas de manual de compact(1), compress(1), cp(1), ed(1) y pack(1).

    • frecover, fbackup: comandos que sólo deben utilizarse para recuperar y hacer copias de seguridad de los archivos de forma selectiva. Utilice la opción -A al realizar copias de seguridad desde un sistema compatible con las listas ACL que se vayan a recuperar en un sistema que no admita dichas listas. Consulte las páginas de manual de frecover(1M) y fbackup(1M).

    • ar, cpio, ftio, shar, tar, dump y restore: estos programas no conservan las listas ACL al archivar y restaurar. Utilizan el valor st_mode que remite la función stat(). Consulte las páginas de manual de ar(1), cpio(1), ftio(1), shar(1), tar(1), dump(1M), restore(1M) y stat(2).

    • rcs, sccs: estos paquetes no admiten listas ACL. No coloque entradas de listas ACL en el software del sistema. Consulte las páginas de manual de rcs(1) y sccs(1).

  • Las listas de control de acceso del HFS utilizan «inodos de continuación» adicionales al crear sistemas de archivos nuevos. Téngalos en cuenta cuando utilice los siguientes programas:

    • fsck: remite el número de archivos con entradas de listas ACL en forma de un valor para icont. Utilice la opción -p para borrar los inodos de continuación a los que no se haya hecho referencia. Consulte la página de manual de fsck(1M).

    • diskusg, ncheck: hacen caso omiso de los inodos de continuación. Consulte las páginas de manual de diskusg(1M) y ncheck(1M).

    • mkfs: tiene en cuenta los inodos de continuación en los discos nuevos. Consulte la página de manual de mkfs(1M).

Utilización de las listas de control de acceso (ACL) del sistema de archivos JFS

En esta sección se describen las listas de control de acceso del sistema de archivos JFS y cómo utilizarlas.

NOTA:

El sistema de archivos JFS admite listas ACL a partir de JFS 3.3. El sistema de archivos JFS está disponible para HP-UX 11.0 en el almacén de software de HP, http://software.hp.com, y se incluye en los entornos operativos de HP-UX 11i. Para obtener más información sobre la instalación del sistema de archivos JFS en los sistemas HP-UX, consulte la documentación sobre el JFS de HP en la dirección: http://docs.hp.com.

NOTA: Para utilizar las listas ACL del JFS, debe tener un sistema de archivos VxFS que utilice la versión 4 del diseño del disco. Para actualizar un sistema de archivos a la versión 4, consulte la página de manual de vxupgrade(1M).

Definición de una lista ACL del JFS

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 lista ACL del JFS mínima

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:

user::rw-

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:

group::r--
class:r--

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:

other:---

La lista ACL mínima descrita más arriba presenta en conjunto este aspecto:

Ejemplo 8-3 Elementos de una lista ACL del JFS mínima

user::rw-
group::r--
class:r--
other:---

Los bits de permiso mostrados por el comando ls -l para este archivo pueden adoptar este aspecto:

rw-r-----

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.

Entradas adicionales de usuario y grupo de las listas ACL del JFS

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:

user:boss:rwx

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:

group:spies:---

Entradas de clase (class) de una lista ACL del JFS

Las entradas de clase difieren de las entradas de grupo propietario

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.

Efecto de chmod en las entradas “class”

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:

  • la entrada class de la lista ACL ya no tiene por qué ser igual a la entrada group propietario de la lista ACL

  • el comando chmod afecta a la entrada class de la lista ACL, no a la entrada group propietario

  • debe utilizar el comando setacl para cambiar la entrada group propietario

Ejemplo de entradas “class” de una lista ACL del JFS

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.

NOTA: Se facilitan más detalles sobre el uso de los comandos getacl y setacl en la sección «Modificación de la lista de control de acceso del JFS correspondiente a un archivo con el comando setacl». Consulte también las páginas de manual de getacl(1) y setacl(1).

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:

$ls -l exfile
-r--r--r-- 1 jsmith users 12 Sep 20 15:02 exfile

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

$ getacl exfile
# file: exfile
# owner: jsmith
# group: users
user::r--
group::r--
class:r--
other:r--

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

$ chmod 666 exfile
$ getacl exfile
# file: exfile
# owner: jsmith
# group: users
user::rw-
group::rw-
class:rw-
other:rw-

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

$ setacl -m u:guest:r-- exfile
$ setacl -m g:dev:r-x exfile
$ getacl exfile
# file: exfile
# owner: jsmith
# group: users
user::rw-
user:guest:r--
group::rw-
group:dev:r-x
class:rwx
other:rw-

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”

$ chmod g-wx exfile
$ getacl exfile
# file: exfile
# owner: jsmith
# group: users
user::rw-
user:guest:r--
group::rw- # effective:r--
group:dev:r-x # effective:r--
class:r--
other:rw-

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.

Ejemplo 8-8 Salida del comando ls -l para exfile con una lista ACL del JFS

$ls -l exfile
-rw-r--rw-+ 1 jsmith users 12 Sep 20 15:02 exfile

Listas de control de acceso del JFS por defecto

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:

default:user:boss:rw-

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

$ getacl projectdir
# file: projectdir
# owner: jsmith
# group: users
user::rw-
user:boss:rw-
user:jjones:rw-
user:jdoe:---
group::rw-
group:dev:rw-
class:rw-
other:---
default:user:boss:r---
default:user:jjones:r--
default:group:dev:r--

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

$ getacl planfile
# file: planfile
# owner: jsmith
# group: users
user::rw-
user:boss:r--
user:jjones:r--
group::rw-
group:dev:r--
class:rw-
other:---

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.

Ejemplo 8-11 Efecto de las entradas por defecto en un directorio nuevo

$ getacl docdir
# file: docdir
# owner: jsmith
# group: users
user::rw-
user:boss:r--
user:jjones:r--
group::rw-
group:dev:r--
class:rw-
other:---
default:user:boss:r--
default:user:jjones:r--
default:group:dev:r--

Cómo genera el sistema una lista ACL del JFS

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.

Examen de una lista ACL del JFS con el comando getacl

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:

  • Los bits que representan los permisos de acceso de propietario se denotan con una entrada user sin especificar un número de identificación de usuario.

  • Los bits que representan los permisos de acceso de grupo se denotan con una entrada group sin especificar una identificación de grupo.

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

$ getacl junk
# file: junk
# owner: user1
# group: group1
user::rw-
group::rw-
class:rw-
other:r--

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

$ getacl junk
# file: junk
# owner: user1
# group: group1
user::rw-
user:user2:rw-
user:user3:rw-
group::rw-
group:group2:rwx
class:rwx
other:r--

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

$ chmod g-x junk
$ getacl junk
# file: junk
# owner: user1
# group: group1
user::rw-
user:user2:rw-
user:user3:rw-
group::rw-
group:group2:rwx #effective:rw-
class:rw-
other:r--

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.

Modificación de la lista de control de acceso del JFS correspondiente a un archivo 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.

Uso de setacl -m

Por ejemplo, el siguiente comando concede al usuario boss permiso de acceso de sólo lectura al archivo:

setacl -m u:boss:r-- junk

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:

setacl -m g:dev:rw- junk

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.

Uso de setacl -d

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:

setacl -d g:dev junk
Adición o modificación de varias entradas con el comando setacl

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:

setacl -m u:user4:---,u:user5:r-- junk
setacl -m u:user4:--- -m u:user5:r-- junk

También puede combinar las opciones -m y -d en la misma línea de comandos.

Uso de setacl -f

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:

getacl junk > junk.acl

A continuación, puede modificarla para que presente la siguiente salida:

Ejemplo 8-15 Una lista ACL del JFS compleja

$ cat junk.acl
# file: junk
# owner: user1
# group: group1
user::rw-
user:user2:rw-
user:user3:rw-
user:user4:---
user:user5:r--
group::rw-
group:group2:rw-
group:group3:r--
group:group4:---
group:group5:rw-
class:rw-
other:r--

Esta lista ACL ya se puede aplicar al archivo con la opción -f del comando setacl del modo siguiente:

setacl -f junk.acl junk

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.

Los permisos efectivos y el comando setacl -n

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:

$ getacl exfile
# file: exfile
# owner: jsmith
# group: users
user::rw-
group::rw-
class:rw-
other:rw-

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

$ setacl -n -m group:dev:r-x exfile
$ getacl exfile
# file: exfile
# owner: jsmith
# group: users
user::rw-
group::rw-
group:dev:r-x #effective r--
class:rw-
other:rw-

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.

Comparación de listas ACL del JFS y del HFS

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.

Diferencias funcionales entre las listas ACL del JFS y del HFS

Las diferencias funcionales entre las listas ACL del JFS y del HFS son:

  • Una lista ACL de un directorio del JFS puede tener entradas por defecto, que se aplican a los archivos creados posteriormente en dicho directorio. Las listas ACL del HFS no presentan dicha posibilidad.

  • Una lista ACL del HFS tiene un propietario que puede diferir del propietario del archivo que la lista ACL controla. Las listas ACL del JFS son propiedad del propietario del archivo correspondiente.

  • Una lista ACL del HFS puede presentar entradas distintas para un usuario concreto en grupos específicos. Por ejemplo, el usuario userx puede tener permisos de acceso de lectura y escritura mientras pertenezca al grupo users, pero sólo tiene permiso de acceso de lectura mientras pertenezca al grupo other.

Correlación entre los comandos y las funciones de los sistemas de archivos JFS y HFS

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

Nombre en HFS

Equivalencia en JFS

chacl(1)

setacl(1)

lsacl(1)

getacl(1)

getacl(2)

acl(2)

fgetacl(2)

—ninguna—

setacl(2)

acl(2)

fsetacl(2)

—ninguna—

acltostr(3C)

—ninguna—

chownacl(3C)

—ninguna—

cpacl(3C)

—ninguna—

setaclentry(3C)

—ninguna—

strtoacl(3C)

—ninguna—

—ninguno—

aclsort(3C)

acl(5)

aclv(5)

 

Listas ACL en un entorno de red

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.

Definición de los permisos de acceso por defecto

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).

Protección de los directorios

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:

  • Retire los permisos de escritura para las categorías que no deban tenerlos.

    Esto es especialmente eficaz en el caso de los directorios particulares de los usuarios. El comando

    chmod 755 midir

    permite a otras personas leer y buscar en midir, pero el único que puede eliminar archivos en él es el propietario.

  • Defina el bit de permanencia (sticky bit) en el directorio. Esto determina que los únicos con capacidad para eliminar el archivo sean el propietario del archivo, el propietario del directorio y el superusuario.

    Esto resulta eficaz para los directorios temporales o de proyectos (por ejemplo, /tmp y /var/tmp) cuyo acceso debe estar abierto a muchos usuarios autorizados. El comando

    chmod a+rwxt /mfgproj

    establece que todos puedan crear, leer y escribir archivos en /mfgproj, pero que sólo el propietario del archivo, el propietario del directorio o el usuario root puedan eliminarlos.

Protección de las cuentas de usuario

Deben seguirse las pautas relacionadas a continuación para proteger las cuentas de usuario:

  • Los propietarios de los directorios iniciales deben ser los únicos que puedan escribir en ellos para evitar que cualquier usuario pueda agregar y eliminar archivos en dichos directorios.

  • El propietario de la cuenta debe ser el único que pueda escribir en los archivos .profile, .kshrc, .login y .cshrc de los usuarios.

  • El propietario del archivo de usuario .rhosts debe ser el único con capacidad para leer o escribir en él. Esta medida de precaución impide que los demás usuarios adivinen las otras cuentas que usted pueda tener y que alguien modifique el archivo .rhosts a fin de conseguir entrar en esos sistemas. Consulte la página de manual de hosts.equiv(4).

  • No se recomienda utilizar un archivo .netrc, ya que prescinde de la autenticación login para el inicio de sesión remoto e incluso contiene la contraseña sin cifrar del usuario. Si se utiliza, el propietario de .netrc debe ser el único con capacidad para leerlo o escribir en él. Consulte la página de manual de netrc(4).

  • Algunos sistemas mantienen un archivo /etc/securetty, que no debe tener acceso de escritura. Consulte la página de manual de login(1).

Consideraciones sobre la seguridad de los archivos de dispositivo

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:

  • Guarde todos los archivos de dispositivo en /dev.

  • Proteja los archivos de memoria, /dev/mem y /dev/kmem, contra el acceso fortuito, ya que estos archivos contienen información confidencial del usuario. Por ejemplo, un programa que vigile la memoria en relación con una llamada al programa login podría copiar la contraseña escrita por un usuario a partir de los búferes de memoria de login. Las entradas de directorio deben presentar este aspecto:

    crw-r-----   1 bin        sys          3 0x000001 Jun  9  1996 /dev/kmem
    crw-r-----   1 bin        sys          3 0x000000 Jun  9  1996 /dev/mem
  • Proteja todos los archivos especiales de disco:

    • Proteja contra escritura todos los archivos especiales de disco en el caso de los usuarios corrientes, a fin de impedir el daño accidental de los datos. Desactive el acceso de escritura en el caso de las clases group y other.

    • Proteja contra lectura los archivos especiales de disco para evitar la divulgación de su contenido. Desactive el acceso de lectura en el caso de la clase other.

    Las entradas de directorio deben presentar este aspecto:

    brw-r-----   1 bin        sys         31 0x002000 Feb 18  1998 /dev/dsk/c0t2d0
    crw-r-----   1 bin        sys        188 0x002000 Aug  3  1998 /dev/rdsk/c0t2d0
    brw-r-----   1 root       sys         64 0x000002 Jun 11  1996 /dev/vg00/lvol2
    crw-r-----   1 root       sys         64 0x000002 Jun 11  1996 /dev/vg00/rlvol2
  • Cualquier usuario tendrá acceso de escritura a los puertos de terminal de los sistemas UNIX, si el administrador permite que los usuarios se comuniquen mediante los programas write o talk. No obstante, el propietario debe ser el único con permiso de lectura.

  • Los usuarios individuales no deben poseer nunca más archivos de dispositivo que el archivo de un dispositivo de terminal o una impresora personal.

  • Antes de poner en funcionamiento un disco u otro dispositivo susceptible de montaje cuyo origen desconozca, compruebe los archivos correspondientes a los archivos especiales y los programas setuid. Consulte la sección «Pautas para montar y desmontar un sistema de archivos».

Protección de las particiones de disco y los volúmenes lógicos

  • El acceso de lectura a los archivos de dispositivo correspondientes a las particiones de disco y los volúmenes lógicos debe restringirse al usuario root y, tal vez, a una cuenta que se utilice para realizar copias de seguridad del disco. Consulte la sección «Consideraciones sobre la seguridad de los archivos de dispositivo».

  • Puesto que la propiedad y los permisos de acceso se almacenan en el inodo, cualquier persona con permiso de acceso de escritura a una partición montada podrá definir el número de identificación de usuario para cualquier archivo de dicha partición, al margen del propietario, prescindiendo de la llamada del sistema chmod() y de las demás comprobaciones de seguridad.

  • Si un programa, por ejemplo una base de datos, necesita tener acceso directo a la partición, ésta debe reservarse para el uso exclusivo del programa y no debe montarse nunca. Los usuarios del programa deben estar informados de que la seguridad del archivo la imponen las configuraciones de permisos de acceso del mismo, en lugar del sistema de archivos UNIX.

Versión para imprimir
Declaración de privacidad El uso de este sitio implica la aceptación de sus términos de uso
© 1997-2006 Hewlett-Packard Development Company, L.P.