¿Cómo chmod y chown archivos ocultos en Linux?


33

¿Cómo ejecuto recursivamente chmodo chownpara archivos ocultos?

sudo chmod -R 775 * No funciona en archivos ocultos.

Lo mismo vale para sudo chown -R user:group.

Respuestas:


35

Si está bien también modificando el directorio actual, haga eso y deje que -Rhaga el trabajo pesado. -RNo ignora los archivos ocultos.

sudo chmod -R 775 .

14
Esta ( * .*) no es la forma más segura de hacerlo. Particularmente, volvería a aparecer en el directorio principal, lo que significa que chmodtambién son hermanos del directorio actual. La forma correcta sería * ..?* .[^.]*o, incluso mejor (teniendo en cuenta que los comodines podrían no coincidir con ningún archivo) $(ls -A).
— jpalecek

1
@jpalecek: La salida de no lses analizable; tratar de analizarlo es pedir problemas. El enfoque adecuado es usar el engrosamiento de conchas.
— Scott Severance

Aunque en Linux tiene la capacidad de cambiar el orden de los argumentos para chmod, al hacer scripts de x-plat entre Linux y OS X, este es el orden que debe usar, por ejemplo, sudo chmod 775 -Riría hacia arriba, así que siga con esta respuesta .
— kayleeFrye_onDeck

35

* no incluye archivos ocultos por defecto, pero si estás en bash, puedes hacerlo con:

shopt -s dotglob

Lea más sobre esto en el builtinmanual de bash :

Si está configurado, Bash incluye nombres de archivo que comienzan con un '.' en los resultados de la expansión del nombre de archivo.

Esto hará que también *incluya archivos ocultos.

chmod -R 775 *

Desactívelo con:

shopt -u dotglob

2
¿Cómo hacer eso en zsh?
— nada especial aquí

2
Utiliza el (D)calificador global, por ejemplochmod -R 775 *(D)
— slhck

2

Otra opción es usar findme gusta, ya que puede tener un control muy fino sobre él.

find <path to start from> -exec chown <options> {} \+

find -path '<path to include>' -exec chown <options> {} \+

El único inconveniente es que findtiene una sintaxis diferente en diferentes versiones.


2

Todos los archivos en el directorio actual, recursivamente, incluidos los archivos ocultos:

chmod 755 -R ./* ./.[!.]*

Todos los archivos en el directorio actual, no recursivamente, incluidos los archivos ocultos:

chmod 755 ./* ./.[!.]*

Esto no cambiará un nombre de archivo de excepción que comience con 2 puntos, por ejemplo, "./..thisonescapesunharmed.txt"

Además, tenga cuidado de no eliminar el bit "x", de lo contrario no se podrá acceder a todos sus directorios (se necesita el bit x para cd en un directorio).

Recuerde esta alerta: nunca use bare *sino en su ./*lugar.

Para evitar problemas al establecer permisos en directorios, use finden su lugar.

find . -type f -exec chmod `VALUE` {} \;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.