• [^] # Re: Noyau

    Posté par . En réponse au message Bit setuid sur les scripts. Évalué à 2.

    Merci de ta réponse.

    La page de man ne précise pas où c'est implementé. Techniquement parlant, quand tu appelles execve dans un programme en C, c'est celui de la glibc, pas celui du noyau, donc ça ne dit pas qui est responsable du non-setuid sur les scripts.

    Mais la suite de ton message m'a permis de comprendre: un script n'est pas vu comme un programme par le noyau, mais comme un fichier qui doit être démarré par l'interpréteur defini par le #!

    Effectivement, maintenant je vois ça dans le noyau.

    C'est prepare_binprm qui s'occupe du bit setuid:

    http://lxr.linux.no/linux/fs/exec.c

    /* Set-uid? */
    if (mode & S_ISUID) {
    current->personality &= ~PER_CLEAR_ON_SETID;
    bprm->e_uid = inode->i_uid;
    }

    Et dans le chargeur de scripts http://lxr.linux.no/linux/fs/binfmt_script.c, prepare_binprm est appelé avec l'interpréteur, pas avec le script.

    Bilan, le setuid du script n'a pas d'importance.