ACL API unter Linux



  • Hallo,

    kennt sich zufällig jemand mit der ACL API vom Linux Kernel aus?

    Die ACL's sind im Dateisystem aktiviert, da es mit dem setfacl Befehl funktioniert.
    Ich versuche schon die ganze Zeit default ACL's in einem Verzeichnis zu setzen, allerdings ohne Erfolgt.

    Komischer Weise kann ich ganz normal die ACL's für benutzer setzen, die default funktionieren allerdings nicht.

    In diesen Fall existiert noch kein default Eintrag und die set_file Funktioniert liefert -1 zurück.

    acl_t acl_default;
    acl_tag_t tag;
    acl_entry_t entry;
    acl_permset_t permset;
    
    acl_default = acl_get_file("/var/www/test/", ACL_TYPE_DEFAULT);
    
    acl_create_entry(&acl_default, &entry);
    
    acl_get_permset(entry, &permset);
    
    acl_clear_perms(permset);
    
    acl_add_perm(permset, ACL_READ);
    acl_add_perm(permset, ACL_WRITE);
    acl_add_perm(permset, ACL_EXECUTE);
    
    acl_set_permset(entry, permset);
    
    acl_calc_mask(&acl_default);
    
    acl_set_file("/var/www/test/", ACL_TYPE_DEFAULT, acl_default);
    
    acl_free(&acl_default);
    


  • schonmal geschaut was in errno setht, wenn acl_set_file fehlschlägt?



  • Nach

    acl_default = acl_get_file("/var/www/test/", ACL_TYPE_DEFAULT);
    

    kommt der Fehler ENODATA. Das sollte aber stimmen, da kein defualt entry im Ordner eingetragen ist.

    Die acl_calc_mask und acl_set_file Funktion liefern hingegen EINVAL.

    Alle anderen Funktionen laufen durch, ohne eine neue error number zu setzen durch.


Anmelden zum Antworten