¿Cómo puedo verificar file permissions
, sin tener que ejecutar el comando específico del sistema operativo a través de passthru()
o exec()
?Comprobar los permisos del archivo
Respuesta
Uso fileperms() función
clearstatcache();
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
¿Qué desea hacer revisando los permisos de los archivos?
Al escribir código de seguridad, casi siempre es incorrecto "verificar, luego hacer" cualquier cosa. La razón es que, entre la comprobación de si puede hacer algo y realmente hacerlo, el estado del sistema podría cambiar de tal manera que hacerlo tendría un resultado diferente.
Por ejemplo, si comprueba si un archivo existe antes de escribir uno, no verifique si escribió el archivo correctamente (o si no lo hace con suficiente detalle), y luego dependa del contenido de el archivo que escribió, podría estar leyendo un archivo escrito por un atacante.
Así que, en lugar de verificar los permisos de los archivos, simplemente haga lo que sea que iba a hacer si la verificación de permisos se realiza correctamente y maneje los errores correctamente.
Puede usar los comandos is_readable(), is_executable() etc. ..
Tenga en cuenta que is_writable() no verifica la pertenencia a un grupo (a partir de PHP 5.5.18). – cgeisel
Uso fileperms() función y subcadena:
substr(decoct(fileperms(__DIR__)), -4); // 0777
substr(decoct(fileperms(__DIR__)), -3); // 777
Para archivo:
substr(decoct(fileperms(__FILE__)), -4); // 0644
substr(decoct(fileperms(__FILE__)), -3); // 644
Reemplazar __FILE__
y __DIR__
con su ruta o variable
codificadores reales utilizan operaciones bit a bit, no cadenas;) Esto es mucho más elegante modo de permisos de manejo:
function checkPerms($path)
{
clearstatcache(null, $path);
return decoct(fileperms($path) & 0777);
}
¿Qué devuelve esto, verdadero/falso? – Sam
- 1. Comprobando los permisos del propietario del archivo
- 2. Modificar los permisos del archivo de subversión
- 3. Los permisos de archivo no heredan los permisos de directorio
- 4. Cambie los permisos del archivo cargado por PHP
- 5. c lea los permisos de un archivo
- 6. ¿Cómo comprobar los permisos CRUD del usuario para un objeto en Salesforce?
- 7. fopen Crea archivo, pero ¿cómo cambiar los permisos?
- 8. Python - Probar los permisos del directorio
- 9. FileNotFoundException cuando el archivo existe con todos los permisos
- 10. NSFileManager - Comprobar el tamaño del archivo?
- 11. ¿File.Move no hereda los permisos del directorio de destino?
- 12. ¿Por qué open() crea mi archivo con los permisos incorrectos?
- 13. Cómo usar cp.exe de Cygwin y conservar los permisos
- 14. Descripción del parámetro "SecurityAction" de .NET para los permisos
- 15. ¿Cómo comprobar los permisos de escritura de un directorio en java?
- 16. Comprobar la caché del navegador para un archivo js
- 17. python shutil.copytree - ignore los permisos
- 18. los permisos del grupo y del propietario son incorrectos cuando php carga archivos
- 19. Google Drive SDK Permisos por archivo/carpeta
- 20. Copie un archivo con sus permisos originales
- 21. Hacer que git push respete los permisos?
- 22. comprobar si existe clase dentro del archivo sin requerir/incluir
- 23. Cómo comprobar el tamaño del archivo al cargar
- 24. Preservar los permisos de archivo, al descomprimir los archivos y pasar con velocidad usando hormiga
- 25. Comprobando permisos de ntfs de carpeta/archivo usando python
- 26. Mantener los permisos de archivo al extraer de un archivo zip utilizando JDK 5 api
- 27. Cómo comprobar si un archivo está completamente copiado en .NET
- 28. Escribir archivo con permisos específicos en Python
- 29. escritura de permisos de archivo en Android
- 30. Incrementando los permisos de semáforo, en Java
Siempre hay razones viables para la comprobación de permisos, tal vez que está construyendo un demonio para los permisos de fijación, que doesn' Confío en su script para leer o escribir en los archivos, ya que un proceso diferente lo hará. –
Otro ejemplo es un programa rewriteMap que actúa como una puerta basada en ciertos permisos de archivos. – puk