Manipulación de los atributos de los archivos

La serie de comandos que se presentan aquí se usan para cambiar el dueño o el grupo propietario de un archivo o sus permisos. Vimos los diferentes permisos en Conceptos básicos de un Sistema UNIX.

chown, chgrp : cambiar el dueño y el grupo propietario de uno o más archivos

La sintaxis del comando chown (CHange OWNer, Cambiar el dueño) es la siguiente:

chown [opciones] <usuario[:grupo]> <archivo|directorio> [archivo|directorio ...]

Las opciones incluyen:

  • -R: recursivo; para cambiar el dueño de todos los archivos y subdirectorios en un directorio dado.

  • -v: modo verboso; muestra todas las acciones efectuadas por chown; reporta cuales archivos cambiaron de dueño como resultado del comando y cuales no han cambiado.

  • -c: como -v, pero sólo reporta cuales archivos cambiaron.

Algunos ejemplos:

  • chown nobody /shared/libro.tex cambiar el dueño del archivo /shared/libro.tex a nobody.

  • chown -Rc reina.musica *.mid conciertos/: atribuye todos los archivos en el directorio actual cuyos nombres terminan con .mid y todos los archivos y subdirectorios del directorio conciertos/ al usuario reina y al grupo musica, reportando sólo los archivos afectados por el comando.

El comando chgrp (CHange GRouP, Cambiar el grupo) le permite cambiar el grupo propietario de un archivo o un grupo de archivos; su sintaxis es muy similar a la del comando chown:

chgrp [opciones] <grupo> <archivo|directorio> [archivo|directorio ...]

Las opciones de este comando son las mismas que las de chown, y se usa de manera muy similar. Por lo tanto, el comando:

chgrp disk /dev/hd*

le atribuye al grupo disk todos los archivos en el directorio /dev/ cuyos nombres comiencen con hd.

chmod : cambiar los permisos sobre los archivos y directorios

El comando chmod (CHange MODe, Cambiar el modo) tiene una sintaxis bien particular. La sintaxis general es:

chmod [opciones] <modo> <archivo|directorio> [archivo|directorio ...]

pero lo que lo distingue son las diferentes formas que puede tomar el cambio de modo. Este se puede especificar de dos maneras:

  1. en octal; entonces los derechos del usuario dueño se corresponden con números de la forma <x>00, donde <x> corresponde al permiso asignado: 4 para permiso de lectura, 2 para permiso de escritura, y 1 para permiso de ejecución; similarmente, los derechos del grupo propietario toman la forma <x>0 y los permisos para los “otros” la forma <x>. Por lo tanto, todo lo que Usted necesita hacer es sumar los permisos asignados para obtener el modo correcto. Por lo tanto, los permisos rwxr-xr-- corresponden a 400+200+100 (permisos del dueño, rwx) +40+10 (permisos del grupo propietario, r-x) +4 (permisos de los otros, r--) = 754; de esta forma, los permisos se expresan en términos absolutos. Esto significa que los permisos previos se reemplazan incondicionalmente;

  2. con expresiones: aquí los permisos se expresan con una secuencia de expresiones separadas por comas. Por lo tanto, una expresión toma la forma [categoría]<+|-|=><permisos>.

    La categoría puede ser una o más de:

    • u (User. Usuario, permisos para el dueño),

    • g (Group. Grupo, permisos para el grupo propietario);

    • o (Others. Otros, permisos para los “otros”).

    Si no se especifica categoría alguna, los cambios se aplicarán para todas las categorías. Un + garantiza un permiso, un - lo niega y un = lo garantiza. Finalmente, el permiso es uno o más de:

    • r (Read, lectura);

    • w (Write, escritura) o;

    • x (eXecute, ejecución).

Las opciones principales son bastante similares a las de chown o chgrp:

  • -R: cambiar los permisos recursivamente.

  • -v: modo “verboso”, muestra las acciones efectuadas para cada archivo.

  • -c: como -v pero solo muestra los archivos afectados por el comando.

Ejemplos:

  • chmod -R o-w /shared/docs: quitar recursivamente el permiso de escritura para los “otros” sobre todos los archivos y subdirectorios del directorio /shared/docs/.

  • chmod -R og-w,o-x privado/: quitar recursivamente el permiso de escritura para el grupo y para los otros sobre todo el directorio privado/, y quitar el permiso de ejecución para los otros.

  • chmod -c 644 varios/archivo* cambia los permisos de todos los archivos del directorio varios/ cuyos nombres comiencen con archivo a rw-r--r-- (es decir, permiso de lectura para todos y permiso de escritura sólo para el dueño), y reporta sólo los archivos afectados por la operación.