php - una - tabla de permisos linux
Verificar permisos de archivos (5)
¿Qué quieres hacer al verificar los permisos de los archivos?
Al escribir código seguro, 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 forma 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 del archivo que escribió , en realidad podría estar leyendo un archivo escrito por un atacante.
Por lo tanto, en lugar de verificar los permisos de archivos, simplemente haz lo que sea que ibas a hacer si la verificación de permisos se realiza correctamente y maneja los errores correctamente.
¿Cómo puedo verificar file permissions
, sin tener que ejecutar el comando específico del sistema operativo a través de passthru()
o exec()
?
Puede usar los comandos is_readable () , is_executable () etc ..
Use la función fileperms ()
clearstatcache();
echo substr(sprintf(''%o'', fileperms(''/etc/passwd'')), -4);
Use la función fileperms () y la subcadena:
substr(decoct(fileperms(__DIR__)), -4); // 0777
substr(decoct(fileperms(__DIR__)), -3); // 777
Para el archivo:
substr(decoct(fileperms(__FILE__)), -4); // 0644
substr(decoct(fileperms(__FILE__)), -3); // 644
Reemplaza __FILE__
y __DIR__
con tu ruta o variable
Los codificadores reales usan operaciones bit a bit, no cadenas;) Esta es una manera mucho más elegante de manejar permisos:
function checkPerms($path)
{
clearstatcache(null, $path);
return decoct( fileperms($path) & 0777 );
}