Direi che un solo tipo booleano sia sufficiente: dal momento che un file non può essere contemporaneamente un eseguibile e un collegamento, specificare due attributi booleani è ridondante, dato che con uno solo riesci a gestire tutti i casi (secondo una tua convenzione, ad esempio 0: eseguibile, 1: collegamento). Avrebbe senso utilizzarne 2 se il file potesse essere contemporaneamente entrambe le cose, ma dal momento che non è così il problema non sussiste.