xargs + chmod - archivo o directorio no encontrado

xargs + chmod - archivo o directorio no encontrado

Estoy intentando cambiar de forma recursiva los permisos de todos los archivos y directorios de mi proyecto.

Encontre unpublicar en el foro de magentodiciendo que puedo usar estos comandos:

find ./ -type f | xargs chmod 644
find ./ -type d | xargs chmod 755
chmod -Rf 777 var
chmod -Rf 777 media

Funcionó para find ./ -type d | xargs chmod 755.

El comando find ./ -type fdevolvió muchos archivos, pero obtengo chmod: access to 'fileXY.html' not possible: file or directory not foundtodos los archivos si ejecuto find ./ -type f | xargs chmod 644.

¿Como puedo resolver esto?

PD: Sé que recomendó usar el permiso 777 para mi carpeta var y media, lo cual es un riesgo para la seguridad, pero ¿qué más deberíamos usar?

Respuesta1

Supongo que te estás encontrando con archivos cuyos nombres contienen caracteres que provocan xargssu división.p.ejespacio en blanco. Para resolver eso, suponiendo que esté usando una versión findque xargsadmita las opciones apropiadas (que se originaron en las variantes de GNU y no están especificadas por POSIX), debe usar los siguientes comandos en su lugar:

find . -type f -print0 | xargs -0 chmod 644
find . -type d -print0 | xargs -0 chmod 755

o mejor aún,

chmod -R a-x,a=rX,u+w .

que tiene las ventajas de ser más corto, utilizar un solo proceso y estar respaldado porPOSIXchmod(veresta respuestapara detalles).

Su pregunta sobre mediay vares bastante amplia; si está interesado en respuestas específicas, le sugiero que la haga como una pregunta separada con más información sobre cuál es su uso de los directorios.

Respuesta2

Qué tal si:

find ./ -type d -exec chmod 755 {} +

esta es la solución portátil canónica que se ocupa incluso de las nuevas líneas en los nombres de archivos.

información relacionada