2012-08-15 20:46:33 +0000 2012-08-15 20:46:33 +0000
58
58

¿Cómo se puede cambiar la propiedad y los permisos de algunos archivos (y directorios) en el directorio actual?

Estoy tratando de cambiar la propiedad y los permisos de algunos archivos (y directorios) en el directorio actual. Intenté esto:

chown username:groupname .

…esperando que afectara a todos los archivos del directorio actual, pero en cambio sólo afectó al directorio en el que estoy (que es lo contrario de lo que quiero hacer). Quiero cambiarlo en todos los archivos sin afectar al directorio actual en el que estoy.

¿Cómo puedo chown y chmod todos los archivos del directorio actual?

Respuestas (3)

98
98
98
2012-08-15 20:48:16 +0000

Quieres usar chown username:groupname *, y dejar que el shell expanda el * al contenido del directorio actual. Esto cambiará los permisos de todos los archivos/carpetas del directorio actual, pero no el contenido de las carpetas.

También podría hacer chown -R username:groupname ., que cambiaría los permisos del directorio actual, y luego volvería a bajar dentro de él y de todas las subcarpetas para cambiar los permisos.

chown -R username:groupname * cambiará los permisos de todos los archivos y carpetas de forma recursiva, dejando el directorio actual en sí mismo. Este estilo y el primer estilo es lo que me encuentro usando más a menudo.

9
9
9
2012-08-15 20:48:05 +0000

Creo que quieres esto:

chown username:groupname *

Si también quieres cambiar de forma recursiva los subdirectorios, necesitarás el interruptor -R (-r está obsoleto):

chown -R username:groupname *

0
0
0
2019-03-15 14:44:38 +0000

chown es genial si eres un superusuario. Tuve un problema con alguien que había ejecutado make en mi directorio, y ahora tenía algunos archivos que no podía modificar. Aquí está mi solución que maneja archivos y directorios, aunque deja los directorios con el sufijo .mkmeowner si no puede borrarlos.

  • El siguiente script cambia la propiedad de los archivos y directorios que se le pasan para que sean propiedad del usuario actual, intentando solucionar los problemas de permisos haciendo una nueva copia de cada directorio o archivo que no sea propiedad del usuario actual, borrando (o intentando borrar) el archivo original, y renombrándolo apropiadamente.
  • La intención es que sea una abreviatura de “make me owner”. No uso subrayados porque son un dolor de cabeza al teclear.

Ejemplos:

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • Requiere el siguiente script mkmeownerone para estar en su camino.

mkmeowner:

#!/bin/bash
["x$1" == "x-h"] || ["x$1" == "x--help"] && cat << END && exit 0
Usage: $0 dirorfile [direorfile2 ...]:
    change ownership of directories or files to current user.
    Current user must have permissions to read those and write to owner directory.
END
mkmeownerone=`which mkmeownerone`
for d in $*; do
    find "$d" -not -user `whoami` -exec $mkmeownerone {} \;
done

mkmeownerone:

#!/bin/bash
# change ownership of one file or directory
f="$1"
expr match "${f}" '.*\.mkmeowner$' > /dev/null && exit 1 # already tried to do this one
if mv -f "$f" "${f}.mkmeowner"; then
    cp -pr "${f}.mkmeowner" "$f" && rm -rf "${f}.mkmeowner"
    exit 0
fi
exit 1