Cuando estoy a punto de cambiar el permiso de mi archivo de esta manera
$ sudo chmod a+x *.*
Este error aparece
chmod: cannot access ‘*.*’: No such file or directory
Y cuando quiero cambiar el permiso de cada archivo en un directorio con
$ sudo chmod a+x directory/*
Aparece el mismo error
chmod: cannot access ‘directory/*’: No such file or directory
Cuando intento el mismo comando en otro directorio, funciona, pero en este directorio /var/www/html no funciona, pero incluso cuando cambio el permiso archivo por archivo a a+x cuando ejecuto
ls
Aparece un error de permiso
ls: cannot open directory .: Permission denied
Respuesta1
La extensión del archivo en Linux no es nada especial, es sólo una parte del nombre del archivo. El archivo global del shell usa *
para todos los caracteres, por lo que puede usarlo chmod a+x *
en lugar de.
Respuesta2
El ls
problema parece que es posible que no tenga suficientes privilegios en el directorio. Comohttps://stackoverflow.com/a/15800917/3501748estados: los directorios necesitan el conjunto de permisos de ejecución para poder ver su contenido.
cd
retroceda un nivel y vea cuáles son los permisos en el directorio del que acaba de venir. sudo
no le otorga ningún derecho para acceder a una carpeta si root no tiene ningún derecho sobre esa carpeta. Quizás sudo -u <username>
podría ayudar.
Si necesita recurrir al árbol de directorios debajo de su punto de partida, utilice chmod -R
.
Respuesta3
Primero, me gustaría reconocer las respuestas existentes:
- Como dice UweBurger, se usa
*
un comodín general en Ubuntu (o, creo, Unix en general). (¿Es posible quedirectory
en su ejemplo esté vacío, lo que provoca el errorchmod: cannot access ‘directory/*’: No such file or directory
?) - Como sugirió Northern-bradley, se puede usar la
R
banderachmod
para hacer que atraviese el árbol de forma recursiva, cambiando los permisos de todo lo que se encuentre bajo su punto actual. Es decir, usechmod -R directory
, o si carece de privilegiossudo chmod -R directory
(sin embargo, asegúrese de no cambiar inadvertidamente los permisos en los archivos del sistema cuando usesudo
achmod
; su propio usuario simplemente carece de privilegios para hacerlo, lo que hace que la primera variante sea más segura).
Sin embargo, me gustaría agregar que es posible que no desee cambiar los permisos de los directorios de la misma manera que lo hace con los archivos. Como se explica en eldocumentación oficial, el r
permiso de lectura ( ) para directorios significa poder ver su contenido (como usar ls
), el w
permiso de escritura ( ) permite al usuario crear/eliminar archivos en él y el x
permiso de ejecución ( ) hacia cd
el interior. Hay una gran respuestaaquísugiriendo un método para distinguir entre archivos y directorios al aplicar nuevos permisos de forma recursiva. La variante que usa xargs
essupuestamente más rápido. Es posible que desees agregar el r
indicador to xargs
para evitar un error en caso de que find
no devuelva nada, y si necesitas root
privilegios, debes usarlos sudo
para ambas mitades de la tubería (nuevamente, ten cuidado al chmod
ejecutar as root
), por lo que sería:
sudo buscar [ruta/a/dir] -tipo d -print0 | sudo xargs -0r chmod [permisos-dir-deseados]
sudo buscar [ruta/a/dir] -tipo f -print0 | sudo xargs -0r chmod [permisos-de-archivo-deseado]
donde [desired-*-permissions]
se puede darexplícitamente( 777
) ousando letras(como a+x
).