Me gustaría cambiar los permisos de una carpeta y todas sus subcarpetas y archivos en un solo paso (comando) en Linux.
Ya he probado el siguiente comando, pero solo funciona para la carpeta mencionada:
chmod 775 /opt/lampp/htdocs
¿Hay una manera de establecer chmod 755
para /opt/lampp/htdocs
y todo su contenido, incluidas las subcarpetas y archivos?
Además, en el futuro, si creo una nueva carpeta o archivo dentro htdocs
, ¿cómo se pueden configurar los permisos automáticamente 755
?
También eché un vistazo a este enlace:
http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal
linux
permissions
directory
chmod
Adán
fuente
fuente
chmod 75 /opt/lampp/htdocs
o debería ser realmentechmod 755 /opt/lampp/htdocs
?Respuestas:
Las otras respuestas son correctas, ya que
chmod -R 755
establecerán estos permisos para todos los archivos y subcarpetas en el árbol. ¿Pero por qué querrías hacerlo ? Puede tener sentido para los directorios, pero ¿por qué establecer el bit de ejecución en todos los archivos?Sospecho que lo que realmente quieres hacer es configurar los directorios en 755 y dejar los archivos solos o configurarlos en 644. Para esto, puedes usar el
find
comando. Por ejemplo:Para cambiar todos los directorios a 755 (
drwxr-xr-x
):Para cambiar todos los archivos a 644 (
-rw-r--r--
):fuente
{} \;
significa al final de la línea?chmod 644 {} \;
especifica el comando que se ejecutaráfind
para cada archivo.{}
se reemplaza por la ruta del archivo, y el punto y coma denota el final del comando (escapado, de lo contrario sería interpretado por el shell en lugar defind
).Marque la opción -R
chmod -R <permissionsettings> <dirname>
En el futuro, puede ahorrar mucho tiempo revisando primero la página del manual:
Entonces en este caso:
fuente
man
?man
. Particularmente para algo comogrep
dónde, si eres nuevoman
, puede llevar mucho tiempo localizar ejemplos en el documento, pero Google o SO proporcionan ejemplos en segundos.Si desea establecer permisos en todos los archivos
a+r
y en todos los directoriosa+x
y hacerlo recursivamente a través del árbol de subdirectorios completo, use:El
X
(¡eso es capitalX
, no pequeñox
!) Se ignora para los archivos (a menos que ya sean ejecutables para alguien) pero se usa para los directorios.fuente
chmod
documentos, donde descubrí que podía usarloschmod -R g+wX .
. ¡Bravo!x
en los archivos si ya lo tienen.Puede usar
-R
conchmod
para el recorrido recursivo de todos los archivos y subcarpetas.Es posible que necesite sudo, ya que depende de que LAMP esté siendo instalado por el usuario actual u otro:
fuente
sudo chmod 755 -R /directory
no funcionó, pero losudo chmod -R 755 /directory
hizo. Extraño. Estoy usando Mac os x por cierto.sudo chmod 755 -R
funcionóEl comando recursivo correcto es:
-R
: cambia cada subcarpeta, incluida la carpeta actualfuente
Para establecer en todas las subcarpetas (recursivamente) use -R
Y use umask para establecer el valor predeterminado en nuevas carpetas / archivos cd / folder umask 755fuente
umask
en 755! ¡No podrá enumerar, leer ni utilizar ningún archivo o directorio que cree!λ ~ → umask 022 λ ~ → umask -S u=rwx,g=rx,o=rx λ ~ → umask 755 λ ~ → umask -S u=,g=w,o=w
chmod 755 -R /opt/lampp/htdocs
establecerá recursivamente los permisos. No hay forma de establecer los permisos para los archivos automáticamente solo en este directorio que se crea después de establecer los permisos, pero puede cambiar sus permisos de archivos predeterminados en todo el sistema con la configuraciónumask 022
.fuente
inherit
ser una solución para muchos casos o ¿funcionará exclusivamente con NTFS-3G?myforlder
desde otros lugares (como una PC) a este directorio de destino (en un servidor) porque intentará crear una nueva carpeta en el directorio de destino con nombre para elmyfolder
que no tiene permiso para hacerlo. Como tengoroot
, solo usochown -R username:usergroup /directory
.Es posible que desee considerar esta respuesta dada por nik en el superusuario y usar "one chmod" para todos los archivos / carpetas como este:
fuente
-exec
opción defind
para superar elArgument list too long
error.Utilizar:
Sin embargo, ten cuidado con eso. Realmente puede lastimarte si cambias los permisos de los archivos / carpetas incorrectos.
fuente
Aquí hay otra forma de configurar directorios en 775 y archivos en 664.
Puede parecer largo, pero es genial por tres razones:
man
páginas (ver más abajo).Tenga en cuenta que no he confirmado la diferencia de rendimiento (si existe) entre esta solución y la de simplemente usar dos comandos de búsqueda (como en la solución de Peter Mortensen). Sin embargo, ver un ejemplo similar en el manual es alentador.
Ejemplo de la
man find
página:Salud
fuente
chmod -R 755 directory_name
funciona, pero ¿cómo mantendría los archivos nuevos en 755 también? Los permisos del archivo se convierten en el permiso predeterminado.fuente
Para Mac OS X 10.7 (Lion), es:
Y sí, como todos los demás dicen, tenga cuidado al hacer esto.
fuente
Desea asegurarse de que los archivos y directorios apropiados sean chmod-ed / permisos para aquellos que sean apropiados. Para todos los directorios que quieras
Y para todas las imágenes, JavaScript, CSS, HTML ... bueno, no debes ejecutarlas. Entonces usa
Pero para todo el código lógico (por ejemplo, el código PHP), debe establecer permisos para que el usuario no pueda ver ese código:
fuente
Creo que Adam estaba preguntando cómo cambiar el valor de umask para todos los procesos que intentan operar en el
/opt/lampp/htdocs
directorio.La máscara del modo de creación de archivos de usuario (umask) se usa para determinar el permiso de archivo para los archivos recién creados. Se puede utilizar para controlar el permiso de archivo predeterminado para archivos nuevos.
así que si va a utilizar algún tipo de programa ftp para cargar archivos
/opt/lampp/htdocs
, debe configurar su servidor ftp para usar la máscara que desee.Si php crea archivos / directorios, por ejemplo, debe modificar el código php
si va a crear nuevos archivos / carpetas desde su sesión bash, puede configurar el valor de umask en su perfil de shell ~ / .bashrc O puede configurar umask en
/etc/bashrc
o/etc/profile
archivo para todos los usuarios. agregue lo siguiente al archivo: umask 022Y para cambiar los permisos de los archivos ya creados, puede usar find. Espero que esto ayude.
fuente
Hay dos respuestas para encontrar archivos y aplicarlos
chmod
. El primero esfind
el archivo y aplicarlochmod
tal como lo encuentra (como lo sugiere @WombleGoneBad).La segunda solución es generar una lista de todos los archivos con el
find
comando y proporcionar esta lista alchmod
comando (como lo sugiere @lamgesh).Ambas versiones funcionan bien siempre que el número de archivos devueltos por el
find
comando sea pequeño. La segunda solución se ve muy bien a la vista y es más legible que la primera. Si hay una gran cantidad de archivos, la segunda solución devuelve un error:Argument list too long.
Entonces mi sugerencia es
chmod -R 755 /opt/lampp/htdocs
si desea cambiar los permisos de todos los archivos y directorios a la vez.find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
si la cantidad de archivos que está utilizando es muy grande. La-type x
opción busca solo un tipo específico de archivo, donde d se usa para buscar el directorio, f para el archivo yl para el enlace.chmod 755 $(find /path/to/base/dir -type d)
otra manerafuente
Es muy simple.
En Terminal ve al administrador de archivos. ejemplo:
sudo nemo
. Vaya y/opt/
luego haga clic en Propiedades → Permiso . y luego otro . Finalmente, cambie para crear y eliminar y acceder a archivos para leer y escribir y haga clic en el botón aplicar ... Y trabajar.fuente