¿Cómo chown/chmod todos los archivos en el directorio actual?

¿Cómo chown/chmod todos los archivos en el directorio actual?

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

chown username:groupname .

...esperando que afectaría a todos los archivos en el directorio actual, pero en cambio solo afectó al directorio en el que estoy (que es lo opuesto a lo que quiero hacer). Quiero cambiarlo en todos los archivos sin afectar el directorio actual en el que estoy.

¿Cómo puedo cambiar y modificar todos los archivos en el directorio actual?

Respuesta1

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

También podría hacerlo chown -R username:groupname ., lo que cambiaría los permisos en el directorio actual y luego recurriría a él y a todas las subcarpetas para cambiar los permisos.

chown -R username:groupname *cambiará los permisos en todos los archivos y carpetas de forma recursiva, dejando el directorio actual solo. Este estilo y el primer estilo son los que uso con más frecuencia.

Respuesta2

Creo que quieres esto:

chown username:groupname *

Si también desea cambiar subdirectorios de forma recursiva, necesitará el modificador -R( -restá en desuso):

chown -R username:groupname *

Respuesta3

chownEs genial si eres superusuario. Tuve un problema donde otra persona había ejecutado makeen mi directorio y ahora poseía algunos archivos que no podía modificar. Aquí está mi solución que maneja archivos y directorios, aunque deja los directorios con sufijos .mkmeownersi no puede eliminarlos.

  • 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 es propiedad del usuario actual, eliminando (o intentando eliminar) el archivo original y renombrarlo apropiadamente.
  • La intención es que sea una abreviatura de "hazme dueño". No uso guiones bajos porque es complicado escribirlos.

Ejemplos:

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • Requiere que el siguiente script mkmeowneroneesté en su camino.

mkmepropietario:

#!/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

Respuesta4

Otra forma de cambiar username:groupnametodos los archivos en el directorio actual es trabajar con un subshell:

chown username:groupname $(find . -name "[a-zA-Z0-9]*")

El comando integrado bash findse utiliza con una expresión regular [a-zA-Z0-9]*en un subshell $()que puede formar la base de tareas administrativas más complejas.

información relacionada