una - permisos linux 777
¿Cómo configuro chmod para una carpeta y todas sus subcarpetas y archivos? (16)
Aquí hay otra forma de establecer directorios en 775 y archivos en 664.
find /opt/lampp/htdocs /
/( -type f -exec chmod ug+rw,o+r {} /; /) , /
/( -type d -exec chmod ug+rwxs,o+rx {} /; /)
Puede parecer largo, pero es genial por tres razones:
- Escanea a través del sistema de archivos solo una vez en lugar de dos veces.
- Proporciona un mejor control sobre cómo se manejan los archivos en comparación con cómo se manejan los directorios . Esto es útil cuando se trabaja con modos especiales como el bit adhesivo , que probablemente desee aplicar a directorios pero no a archivos.
- Utiliza una técnica directamente de las páginas del manual (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 página de man find
:
find / /
/( -perm -4000 -fprintf /root/suid.txt %#m %u %p/n /) , /
/( -size +100M -fprintf /root/big.txt %-10s %p/n /)
Traverse the filesystem just once, listing setuid files and direc‐
tories into /root/suid.txt and large files into /root/big.txt.
Aclamaciones
¿Hay alguna forma de configurar chmod 755
para /opt/lampp/htdocs
y todo su contenido, incluidas las subcarpetas y los archivos?
Además, en el futuro, si creo una nueva carpeta o archivo dentro de htdocs
, ¿cómo se pueden configurar automáticamente los permisos de 755
?
Esto funciona, pero solo para esta carpeta:
chmod 775 /opt/lampp/htdocs
Creo que Adam estaba preguntando cómo cambiar el valor de umask para todos los procesos que /opt/lampp/htdocs
operar en el directorio /opt/lampp/htdocs
.
La máscara de modo de creación de archivos del usuario (umask) se usa para determinar el permiso de archivo para los archivos recién creados. Se puede usar para controlar el permiso de archivo predeterminado para archivos nuevos.
por lo tanto, si va a usar algún tipo de programa ftp para cargar archivos en /opt/lampp/htdocs
, debe configurar su servidor ftp para que use umask.
Si los archivos / directorios se crean, por ejemplo, por php, necesita modificar el código php
<?php
umask(0022);
// other code
?>
si va a crear nuevos archivos / carpetas desde su sesión de bash, puede establecer un valor de umask en su perfil de shell ~ / .bashrc O puede configurar umask en /etc/bashrc
o /etc/profile
para todos los usuarios. agrega lo siguiente al archivo: umask 022
Sample umask Values and File Creation Permissions
If umask value set to User permission Group permission Others permission
000 all all all
007 all all none
027 all read / execute none
Y para cambiar los permisos de los archivos ya creados, puede usar find. Espero que esto ayude.
Desea asegurarse de que los archivos y directorios apropiados sean chmod-ed / permissions para que sean apropiados. Para todos los directorios que quieras.
find /opt/lampp/htdocs -type d -exec chmod 711 {} /;
Y para todas las imágenes, JavaScript, CSS, HTML ... bueno, no debes ejecutarlas. Asi que usa
chmod 644 img/* js/* html/*
Pero para todo el código lógico (por ejemplo, el código PHP), debe establecer permisos de tal manera que el usuario no pueda ver ese código:
chmod 600 file
El comando recursivo correcto es:
sudo chmod 755 -R /opt/lampp/htdocs
-R
: cambia cada subcarpeta incluyendo la carpeta actual
Es muy sencillo.
En la Terminal vaya al administrador de archivos. Ejemplo: sudo nemo
. Vaya /opt/
luego haga clic en Propiedades → Permiso . y luego Otro . Finalmente, cambie para crear y eliminar y acceso a archivos para leer y escribir y haga clic en el botón aplicar ... Y trabajar.
Es posible que desee considerar esta respuesta dada por nik en superusuario y usar "one chmod" para todos los archivos / carpetas como este:
chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
Hay dos respuestas para encontrar archivos y aplicarles chmod
. El primero es find
el archivo y aplicar chmod
como encuentre (como lo sugiere @WombleGoneBad).
find /opt/lampp/htdocs -type d -exec chmod 755 {} /;
La segunda solución es generar la lista de todos los archivos con el comando find
y suministrar esta lista al comando chmod
(como lo sugiere @lamgesh).
chmod 755 $(find /path/to/base/dir -type d)
Ambas versiones funcionan bien siempre que el número de archivos devueltos por el comando de find
sea pequeño. La segunda solución se ve muy bien a la vista y más legible que la primera. Si hay un gran número de archivos, la segunda solución devuelve un error: la Argument list too long.
Así que mi sugerencia es
- Utilice
chmod -R 755 /opt/lampp/htdocs
si desea cambiar los permisos de todos los archivos y directorios a la vez. - Utilice
find /opt/lampp/htdocs -type d -exec chmod 755 {} /;
Si el número de archivos que está utilizando es muy grande. La opción-type x
busca solo un tipo específico de archivo, donde d se usa para encontrar el directorio, f para el archivo yl para el enlace. - Use
chmod 755 $(find /path/to/base/dir -type d)
contrario - Mejor usar el primero en cualquier situación.
Las otras respuestas son correctas, ya que chmod -R 755
establecerá estos permisos en todos los archivos y subcarpetas del árbol. Pero, ¿por qué demonios querrías ? Puede que tenga sentido para los directorios, pero ¿por qué establecer el bit de ejecución en todos los archivos?
Sospecho que lo que realmente desea hacer es establecer los directorios en 755 y dejar los archivos solos o establecerlos en 644. Para esto, puede usar el comando find
. Por ejemplo:
Para cambiar todos los directorios a 755 ( drwxr-xr-x
):
find /opt/lampp/htdocs -type d -exec chmod 755 {} /;
Para cambiar todos los archivos a 644 ( -rw-r--r--
):
find /opt/lampp/htdocs -type f -exec chmod 644 {} /;
Marque la opción -R
chmod -R <permissionsettings> <dirname>
En el futuro, puede ahorrar mucho tiempo consultando primero la página de manual:
man <command name>
Así que en este caso:
man chmod
Para Mac OS X 10.7 (Lion), es:
chmod -R 755 /directory
Y sí, como todos los demás dicen, ten cuidado al hacer esto.
Para establecer todas las subcarpetas (recursivamente) use -R
chmod 755 /folder -R
Y use umask para establecer el valor predeterminado en nuevas carpetas / archivos cd / carpeta umask 755
Puede utilizar -R
con chmod
para chmod
recursivamente todos los archivos y subcarpetas.
Es posible que necesite sudo, ya que depende de que LAMP sea instalado por el usuario actual u otro:
sudo chmod 755 -R /opt/lampp/htdocs
Si desea establecer permisos en todos los archivos a a+r
, y todos los directorios a a+x
, y hacer eso recursivamente a través del árbol de subdirectorios completo, use:
chmod -R a+rX *
La X
(que es una X
mayúscula, no una x
pequeña) se ignora para los archivos (a menos que ya sean ejecutables para alguien), pero se usa para los directorios.
Utilizar:
sudo chmod 755 -R /whatever/your/directory/is
Sin embargo, ten cuidado con eso. Realmente puede hacerle daño si cambia los permisos de los archivos / carpetas incorrectos.
chmod -R 755 directory_name
funciona, pero ¿cómo mantendrías los nuevos archivos en 755 también? Los permisos del archivo se convierten en el permiso predeterminado.
chmod 755 -R /opt/lampp/htdocs
establecerá recursivamente los permisos. No hay forma de establecer los permisos para archivos automáticamente solo en este directorio que se crean después de configurar los permisos, pero puede cambiar los permisos de archivo predeterminados de todo el sistema con la configuración de umask 022
.